asdasdasd

Dependencies:   mbed

Fork of FINAL_PROJECT_4180 by Gedeon Nyengele

Committer:
nyengele
Date:
Mon Apr 25 02:38:50 2016 +0000
Revision:
11:1d7021c0739d
Parent:
10:c3556e27e576
Child:
12:5cb9ffad1ad7
enrollment finished

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyengele 0:f0e40bf44ffe 1 #include "mbed.h"
nyengele 1:0e5e9821d89d 2 #include "lib.h"
nyengele 1:0e5e9821d89d 3
nyengele 1:0e5e9821d89d 4 Serial mag_card(p13, p14);
nyengele 9:48e93bcd1d5c 5 Serial android(USBTX, USBRX);
nyengele 9:48e93bcd1d5c 6 FPScanner fp(p9, p10);
nyengele 9:48e93bcd1d5c 7 uLCD_4DGL lcd(p28, p27, p30);
nyengele 9:48e93bcd1d5c 8 PwmOut speaker(p21);
nyengele 9:48e93bcd1d5c 9
nyengele 9:48e93bcd1d5c 10 // Flash Memory
nyengele 9:48e93bcd1d5c 11 SPI spi(p5, p6, p7); // MOSI, MISO, CLK
nyengele 9:48e93bcd1d5c 12 DigitalOut cs(p20); // Chip Select
nyengele 0:f0e40bf44ffe 13
nyengele 10:c3556e27e576 14 // hash table
nyengele 10:c3556e27e576 15 const int MAX_ENTRIES = 100;
nyengele 10:c3556e27e576 16 HASH_RECORD records[MAX_ENTRIES];
nyengele 11:1d7021c0739d 17 int record_index = 0;
nyengele 11:1d7021c0739d 18
nyengele 11:1d7021c0739d 19 enum STATE {STANDBY, ENROLL, AUTH, FP_ENROLL, FP_AUTH, MC_ENROLL, MC_AUTH, FACE_ENROLL, FACE_AUTH, SPEECH_ENROLL,
nyengele 11:1d7021c0739d 20 ENROLL_SUCCESS, AUTH_SUCCESS, ENROLL_FAIL, AUTH_FAIL, UNLOCK
nyengele 11:1d7021c0739d 21 };
nyengele 11:1d7021c0739d 22
nyengele 11:1d7021c0739d 23 char user_id[4];
nyengele 11:1d7021c0739d 24 char mag_card_data[250];
nyengele 11:1d7021c0739d 25 int mc_bytes = 0;
nyengele 11:1d7021c0739d 26 int temp;
nyengele 11:1d7021c0739d 27 int temp1;
nyengele 0:f0e40bf44ffe 28
nyengele 1:0e5e9821d89d 29 int main()
nyengele 1:0e5e9821d89d 30 {
nyengele 11:1d7021c0739d 31 STATE current_state = STANDBY;
nyengele 11:1d7021c0739d 32 while (true) {
nyengele 11:1d7021c0739d 33 switch (current_state) {
nyengele 11:1d7021c0739d 34 case STANDBY:
nyengele 11:1d7021c0739d 35 greeting(&lcd);
nyengele 11:1d7021c0739d 36 int input = read_keypad();
nyengele 11:1d7021c0739d 37 while (input != 10 && input != 11) {
nyengele 11:1d7021c0739d 38 wait(0.03);
nyengele 11:1d7021c0739d 39 input = read_keypad();
nyengele 11:1d7021c0739d 40 }
nyengele 11:1d7021c0739d 41 if (input == 10) current_state = ENROLL;
nyengele 11:1d7021c0739d 42 else current_state = AUTH;
nyengele 11:1d7021c0739d 43 break;
nyengele 11:1d7021c0739d 44
nyengele 11:1d7021c0739d 45 case ENROLL:
nyengele 11:1d7021c0739d 46 if (get_user_id(user_id)) current_state = FP_ENROLL;
nyengele 11:1d7021c0739d 47 else current_state = ENROLL_FAIL;
nyengele 11:1d7021c0739d 48 break;
nyengele 11:1d7021c0739d 49
nyengele 11:1d7021c0739d 50 case FP_ENROLL:
nyengele 11:1d7021c0739d 51 if (fp_enroll(&fp)) {
nyengele 11:1d7021c0739d 52 current_state = MC_ENROLL;
nyengele 11:1d7021c0739d 53 } else {
nyengele 11:1d7021c0739d 54 current_state = ENROLL_FAIL;
nyengele 11:1d7021c0739d 55 }
nyengele 11:1d7021c0739d 56 break;
nyengele 11:1d7021c0739d 57
nyengele 11:1d7021c0739d 58 case MC_ENROLL:
nyengele 11:1d7021c0739d 59 read_mag_card(&mag_card, mag_card_data, &mc_bytes);
nyengele 11:1d7021c0739d 60 temp = hashcode(mag_card_data, mc_bytes);
nyengele 11:1d7021c0739d 61 temp1 = id_to_int(user_id, 4);
nyengele 11:1d7021c0739d 62 add_to_table(records, record_index++, temp1, temp);
nyengele 11:1d7021c0739d 63 current_state = FACE_ENROLL;
nyengele 11:1d7021c0739d 64 break;
nyengele 11:1d7021c0739d 65
nyengele 11:1d7021c0739d 66 case FACE_ENROLL:
nyengele 11:1d7021c0739d 67 if (face_enroll(user_id, &android)) {
nyengele 11:1d7021c0739d 68 current_state = SPEECH_ENROLL;
nyengele 11:1d7021c0739d 69 } else current_state = ENROLL_FAIL;
nyengele 11:1d7021c0739d 70 break;
nyengele 11:1d7021c0739d 71
nyengele 11:1d7021c0739d 72 case SPEECH_ENROLL:
nyengele 11:1d7021c0739d 73 if (speech_enroll(user_id, &android)) {
nyengele 11:1d7021c0739d 74 current_state = ENROLL_SUCCESS;
nyengele 11:1d7021c0739d 75 } else current_state = ENROLL_FAIL;
nyengele 11:1d7021c0739d 76 break;
nyengele 11:1d7021c0739d 77
nyengele 11:1d7021c0739d 78 case ENROLL_SUCCESS:
nyengele 11:1d7021c0739d 79 success_display(&lcd, "ENROLLMENT SUCCESSFUL.");
nyengele 11:1d7021c0739d 80 current_state = STANDBY;
nyengele 11:1d7021c0739d 81 break;
nyengele 11:1d7021c0739d 82 }
nyengele 11:1d7021c0739d 83 }
nyengele 0:f0e40bf44ffe 84 }