Trung Nguyen
/
FINAL_PROJECT_4180
asdasdasd
Fork of FINAL_PROJECT_4180 by
lib.cpp
- Committer:
- nyengele
- Date:
- 2016-04-25
- Revision:
- 10:c3556e27e576
- Parent:
- 9:48e93bcd1d5c
- Child:
- 11:1d7021c0739d
File content as of revision 10:c3556e27e576:
#include "mbed.h" #include "lib.h" #define CMD_ENROLL 0x01 #define CMD_AUTH 0x02 #define FACE_FID 0x01 #define SPEECH_FID 0x02 #define SUCCESS 0x55 #define FAILURE 0x8A int hashcode(const char *data, int size) { int hash = 17; for (int i = 0; i < size; i++) { hash += 31*hash + data[i]; } return hash; } void read_mag_card(Serial *device, char *dest, int *size) { int pos = 0; bool done = false; int markercount = 0; while (!done) { while (!device->readable()); dest[pos] = device->getc(); if (dest[pos] == '?') markercount++; if (markercount >= 2) done = true; pos++; } *size = pos - 1; } bool fp_enroll(FPScanner *fp) { bool status = true; fp->SetLED(true); while(!fp->IsPressFinger()) wait(0.030); fp->CaptureFinger(true); if (fp->Identify1_N() == 200) { int id = fp->GetEnrollCount(); if (fp->EnrollStart(id) == 0) { fp->CaptureFinger(true); fp->Enroll1(); fp->CaptureFinger(true); fp->Enroll2(); fp->CaptureFinger(true); fp->Enroll3(); fp->SetLED(false); } else status = false; } else status = false; return status; } bool fp_auth(FPScanner *fp) { bool status = false; fp->SetLED(true); while(!fp->IsPressFinger()) wait(0.030); fp->CaptureFinger(true); if (fp->Identify1_N() != 200) status = true; fp->SetLED(false); return status; } bool face_enroll(char *user_id, Serial *android) { char CMD[] = { CMD_ENROLL, 0x02, 0x04, 0x01, user_id[0], user_id[1], user_id[2], user_id[3], FACE_FID, '\0' }; for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) { android->putc(CMD[i]); } while (!android->readable()); char temp = android->getc(); if (temp == SUCCESS) return true; else return false; } bool face_detect(char *user_id, Serial *android) { char CMD[] = { CMD_AUTH, 0x02, 0x04, 0x01, user_id[0], user_id[1], user_id[2], user_id[3], FACE_FID, '\0' }; for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) { android->putc(CMD[i]); } while (!android->readable()); char temp = android->getc(); if (temp == SUCCESS) return true; else return false; } bool speech_enroll(char *user_id, Serial *android) { char CMD[] = { CMD_ENROLL, 0x02, 0x04, 0x01, user_id[0], user_id[1], user_id[2], user_id[3], SPEECH_FID, '\0' }; for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) { android->putc(CMD[i]); } while (!android->readable()); char temp = android->getc(); if (temp == SUCCESS) return true; else return false; } bool speech_detect(char *user_id, Serial *android) { char CMD[] = { CMD_AUTH, 0x02, 0x04, 0x01, user_id[0], user_id[1], user_id[2], user_id[3], SPEECH_FID, '\0' }; for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) { android->putc(CMD[i]); } while (!android->readable()); char temp = android->getc(); if (temp == SUCCESS) return true; else return false; } void buzzer(PwmOut *speaker, int seconds) { speaker->period(1.0/500.0); *speaker = 0.5; wait(seconds); *speaker = 0.0; } void failure_display(uLCD_4DGL *lcd, char *text) { lcd->baudrate(3000000); lcd->cls(); lcd->textbackground_color(WHITE); lcd->text_mode(OPAQUE); lcd->text_width(4); lcd->text_height(4); lcd->text_string(text, 1, 4, FONT_7X8, RED); } void success_display(uLCD_4DGL *lcd, char *text) { lcd->baudrate(3000000); lcd->cls(); lcd->textbackground_color(WHITE); lcd->text_mode(OPAQUE); lcd->text_width(4); lcd->text_height(4); lcd->text_string(text, 1, 4, FONT_7X8, BLUE); } int id_to_int(char *user_id, int size) { int val = 0; for (int i = 0; i < size; i++) { val += 10 * val + (user_id[i] - '0'); } return val; } void add_to_table(HASH_RECORD *table, int ind, int user_id, int hash) { HASH_RECORD rec = {user_id, hash}; table[ind] = rec; } bool contain_hash(HASH_RECORD *table, int table_size, int user_id, int hash) { for (int i = 0; i < table_size; i++) { HASH_RECORD h = table[i]; if (h.user_id == user_id && h.hash == hash) { return false; } } return false; }