Gedeon Nyengele / Mbed 2 deprecated FINAL_PROJECT_4180

Dependencies:   mbed

Committer:
nyengele
Date:
Mon Apr 25 01:39:32 2016 +0000
Revision:
9:48e93bcd1d5c
Parent:
8:9b41712fd2c3
Child:
10:c3556e27e576
user_id to int done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nyengele 0:f0e40bf44ffe 1 #include "mbed.h"
nyengele 0:f0e40bf44ffe 2 #include "lib.h"
nyengele 0:f0e40bf44ffe 3
nyengele 3:83415d375d36 4 #define CMD_ENROLL 0x01
nyengele 3:83415d375d36 5 #define CMD_AUTH 0x02
nyengele 3:83415d375d36 6 #define FACE_FID 0x01
nyengele 3:83415d375d36 7 #define SPEECH_FID 0x02
nyengele 3:83415d375d36 8 #define SUCCESS 0x55
nyengele 3:83415d375d36 9 #define FAILURE 0x8A
nyengele 3:83415d375d36 10
nyengele 0:f0e40bf44ffe 11 int hashcode(const char *data, int size)
nyengele 0:f0e40bf44ffe 12 {
nyengele 0:f0e40bf44ffe 13 int hash = 17;
nyengele 0:f0e40bf44ffe 14 for (int i = 0; i < size; i++) {
nyengele 0:f0e40bf44ffe 15 hash += 31*hash + data[i];
nyengele 0:f0e40bf44ffe 16 }
nyengele 0:f0e40bf44ffe 17 return hash;
nyengele 0:f0e40bf44ffe 18 }
nyengele 0:f0e40bf44ffe 19 void read_mag_card(Serial *device, char *dest, int *size)
nyengele 0:f0e40bf44ffe 20 {
nyengele 0:f0e40bf44ffe 21 int pos = 0;
nyengele 0:f0e40bf44ffe 22 bool done = false;
nyengele 0:f0e40bf44ffe 23 int markercount = 0;
nyengele 0:f0e40bf44ffe 24 while (!done) {
nyengele 1:0e5e9821d89d 25 while (!device->readable());
nyengele 0:f0e40bf44ffe 26 dest[pos] = device->getc();
nyengele 0:f0e40bf44ffe 27 if (dest[pos] == '?') markercount++;
nyengele 0:f0e40bf44ffe 28 if (markercount >= 2) done = true;
nyengele 0:f0e40bf44ffe 29 pos++;
nyengele 0:f0e40bf44ffe 30 }
nyengele 0:f0e40bf44ffe 31 *size = pos - 1;
nyengele 2:1b1c0502bb08 32 }
nyengele 2:1b1c0502bb08 33
nyengele 2:1b1c0502bb08 34 bool fp_enroll(FPScanner *fp)
nyengele 2:1b1c0502bb08 35 {
nyengele 2:1b1c0502bb08 36 bool status = true;
nyengele 2:1b1c0502bb08 37 fp->SetLED(true);
nyengele 2:1b1c0502bb08 38 while(!fp->IsPressFinger()) wait(0.030);
nyengele 2:1b1c0502bb08 39 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 40 if (fp->Identify1_N() == 200) {
nyengele 2:1b1c0502bb08 41 int id = fp->GetEnrollCount();
nyengele 2:1b1c0502bb08 42 if (fp->EnrollStart(id) == 0) {
nyengele 2:1b1c0502bb08 43 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 44 fp->Enroll1();
nyengele 2:1b1c0502bb08 45 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 46 fp->Enroll2();
nyengele 2:1b1c0502bb08 47 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 48 fp->Enroll3();
nyengele 2:1b1c0502bb08 49 fp->SetLED(false);
nyengele 2:1b1c0502bb08 50 } else status = false;
nyengele 2:1b1c0502bb08 51 } else status = false;
nyengele 2:1b1c0502bb08 52
nyengele 2:1b1c0502bb08 53 return status;
nyengele 2:1b1c0502bb08 54 }
nyengele 2:1b1c0502bb08 55
nyengele 2:1b1c0502bb08 56 bool fp_auth(FPScanner *fp)
nyengele 2:1b1c0502bb08 57 {
nyengele 2:1b1c0502bb08 58 bool status = false;
nyengele 2:1b1c0502bb08 59 fp->SetLED(true);
nyengele 2:1b1c0502bb08 60 while(!fp->IsPressFinger()) wait(0.030);
nyengele 2:1b1c0502bb08 61 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 62 if (fp->Identify1_N() != 200) status = true;
nyengele 2:1b1c0502bb08 63 fp->SetLED(false);
nyengele 2:1b1c0502bb08 64 return status;
nyengele 3:83415d375d36 65 }
nyengele 3:83415d375d36 66
nyengele 3:83415d375d36 67 bool face_enroll(char *user_id, Serial *android)
nyengele 3:83415d375d36 68 {
nyengele 3:83415d375d36 69 char CMD[] = {
nyengele 3:83415d375d36 70 CMD_ENROLL,
nyengele 3:83415d375d36 71 0x02,
nyengele 3:83415d375d36 72 0x04,
nyengele 3:83415d375d36 73 0x01,
nyengele 3:83415d375d36 74 user_id[0],
nyengele 3:83415d375d36 75 user_id[1],
nyengele 3:83415d375d36 76 user_id[2],
nyengele 3:83415d375d36 77 user_id[3],
nyengele 3:83415d375d36 78 FACE_FID,
nyengele 3:83415d375d36 79 '\0'
nyengele 3:83415d375d36 80 };
nyengele 3:83415d375d36 81
nyengele 3:83415d375d36 82 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 3:83415d375d36 83 android->putc(CMD[i]);
nyengele 3:83415d375d36 84 }
nyengele 5:562b8d04dfd4 85
nyengele 3:83415d375d36 86 while (!android->readable());
nyengele 3:83415d375d36 87 char temp = android->getc();
nyengele 3:83415d375d36 88 if (temp == SUCCESS) return true;
nyengele 3:83415d375d36 89 else return false;
nyengele 3:83415d375d36 90 }
nyengele 4:9fbefd153e3e 91
nyengele 4:9fbefd153e3e 92 bool face_detect(char *user_id, Serial *android)
nyengele 4:9fbefd153e3e 93 {
nyengele 4:9fbefd153e3e 94 char CMD[] = {
nyengele 4:9fbefd153e3e 95 CMD_AUTH,
nyengele 4:9fbefd153e3e 96 0x02,
nyengele 4:9fbefd153e3e 97 0x04,
nyengele 4:9fbefd153e3e 98 0x01,
nyengele 4:9fbefd153e3e 99 user_id[0],
nyengele 4:9fbefd153e3e 100 user_id[1],
nyengele 4:9fbefd153e3e 101 user_id[2],
nyengele 4:9fbefd153e3e 102 user_id[3],
nyengele 4:9fbefd153e3e 103 FACE_FID,
nyengele 4:9fbefd153e3e 104 '\0'
nyengele 4:9fbefd153e3e 105 };
nyengele 4:9fbefd153e3e 106
nyengele 4:9fbefd153e3e 107 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 4:9fbefd153e3e 108 android->putc(CMD[i]);
nyengele 4:9fbefd153e3e 109 }
nyengele 5:562b8d04dfd4 110
nyengele 5:562b8d04dfd4 111 while (!android->readable());
nyengele 5:562b8d04dfd4 112 char temp = android->getc();
nyengele 5:562b8d04dfd4 113 if (temp == SUCCESS) return true;
nyengele 5:562b8d04dfd4 114 else return false;
nyengele 5:562b8d04dfd4 115 }
nyengele 5:562b8d04dfd4 116
nyengele 5:562b8d04dfd4 117 bool speech_enroll(char *user_id, Serial *android)
nyengele 5:562b8d04dfd4 118 {
nyengele 5:562b8d04dfd4 119 char CMD[] = {
nyengele 5:562b8d04dfd4 120 CMD_ENROLL,
nyengele 5:562b8d04dfd4 121 0x02,
nyengele 5:562b8d04dfd4 122 0x04,
nyengele 5:562b8d04dfd4 123 0x01,
nyengele 5:562b8d04dfd4 124 user_id[0],
nyengele 5:562b8d04dfd4 125 user_id[1],
nyengele 5:562b8d04dfd4 126 user_id[2],
nyengele 5:562b8d04dfd4 127 user_id[3],
nyengele 5:562b8d04dfd4 128 SPEECH_FID,
nyengele 5:562b8d04dfd4 129 '\0'
nyengele 5:562b8d04dfd4 130 };
nyengele 5:562b8d04dfd4 131
nyengele 5:562b8d04dfd4 132 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 5:562b8d04dfd4 133 android->putc(CMD[i]);
nyengele 5:562b8d04dfd4 134 }
nyengele 5:562b8d04dfd4 135
nyengele 4:9fbefd153e3e 136 while (!android->readable());
nyengele 4:9fbefd153e3e 137 char temp = android->getc();
nyengele 4:9fbefd153e3e 138 if (temp == SUCCESS) return true;
nyengele 4:9fbefd153e3e 139 else return false;
nyengele 6:d0582711a5d1 140 }
nyengele 6:d0582711a5d1 141
nyengele 6:d0582711a5d1 142 bool speech_detect(char *user_id, Serial *android)
nyengele 6:d0582711a5d1 143 {
nyengele 6:d0582711a5d1 144 char CMD[] = {
nyengele 6:d0582711a5d1 145 CMD_AUTH,
nyengele 6:d0582711a5d1 146 0x02,
nyengele 6:d0582711a5d1 147 0x04,
nyengele 6:d0582711a5d1 148 0x01,
nyengele 6:d0582711a5d1 149 user_id[0],
nyengele 6:d0582711a5d1 150 user_id[1],
nyengele 6:d0582711a5d1 151 user_id[2],
nyengele 6:d0582711a5d1 152 user_id[3],
nyengele 6:d0582711a5d1 153 SPEECH_FID,
nyengele 6:d0582711a5d1 154 '\0'
nyengele 6:d0582711a5d1 155 };
nyengele 6:d0582711a5d1 156
nyengele 6:d0582711a5d1 157 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 6:d0582711a5d1 158 android->putc(CMD[i]);
nyengele 6:d0582711a5d1 159 }
nyengele 6:d0582711a5d1 160
nyengele 6:d0582711a5d1 161 while (!android->readable());
nyengele 6:d0582711a5d1 162 char temp = android->getc();
nyengele 6:d0582711a5d1 163 if (temp == SUCCESS) return true;
nyengele 6:d0582711a5d1 164 else return false;
nyengele 7:800afb8c4cb5 165 }
nyengele 7:800afb8c4cb5 166
nyengele 7:800afb8c4cb5 167 void buzzer(PwmOut *speaker, int seconds)
nyengele 7:800afb8c4cb5 168 {
nyengele 7:800afb8c4cb5 169 speaker->period(1.0/500.0);
nyengele 7:800afb8c4cb5 170 *speaker = 0.5;
nyengele 7:800afb8c4cb5 171 wait(seconds);
nyengele 7:800afb8c4cb5 172 *speaker = 0.0;
nyengele 7:800afb8c4cb5 173 }
nyengele 8:9b41712fd2c3 174
nyengele 8:9b41712fd2c3 175 void failure_display(uLCD_4DGL *lcd, char *text)
nyengele 8:9b41712fd2c3 176 {
nyengele 8:9b41712fd2c3 177 lcd->baudrate(3000000);
nyengele 8:9b41712fd2c3 178 lcd->cls();
nyengele 8:9b41712fd2c3 179 lcd->textbackground_color(WHITE);
nyengele 8:9b41712fd2c3 180 lcd->text_mode(OPAQUE);
nyengele 8:9b41712fd2c3 181 lcd->text_width(4);
nyengele 8:9b41712fd2c3 182 lcd->text_height(4);
nyengele 8:9b41712fd2c3 183 lcd->text_string(text, 1, 4, FONT_7X8, RED);
nyengele 8:9b41712fd2c3 184 }
nyengele 8:9b41712fd2c3 185
nyengele 8:9b41712fd2c3 186 void success_display(uLCD_4DGL *lcd, char *text)
nyengele 8:9b41712fd2c3 187 {
nyengele 8:9b41712fd2c3 188 lcd->baudrate(3000000);
nyengele 8:9b41712fd2c3 189 lcd->cls();
nyengele 8:9b41712fd2c3 190 lcd->textbackground_color(WHITE);
nyengele 8:9b41712fd2c3 191 lcd->text_mode(OPAQUE);
nyengele 8:9b41712fd2c3 192 lcd->text_width(4);
nyengele 8:9b41712fd2c3 193 lcd->text_height(4);
nyengele 8:9b41712fd2c3 194 lcd->text_string(text, 1, 4, FONT_7X8, BLUE);
nyengele 8:9b41712fd2c3 195 }
nyengele 9:48e93bcd1d5c 196
nyengele 9:48e93bcd1d5c 197 int id_to_int(char *user_id, int size)
nyengele 9:48e93bcd1d5c 198 {
nyengele 9:48e93bcd1d5c 199 int val = 0;
nyengele 9:48e93bcd1d5c 200 for (int i = 0; i < size; i++) {
nyengele 9:48e93bcd1d5c 201 val += 10 * val + (user_id[i] - '0');
nyengele 9:48e93bcd1d5c 202 }
nyengele 9:48e93bcd1d5c 203 return val;
nyengele 9:48e93bcd1d5c 204 }