asdasdasd

Dependencies:   mbed

Fork of FINAL_PROJECT_4180 by Gedeon Nyengele

Committer:
nyengele
Date:
Mon Apr 25 00:50:42 2016 +0000
Revision:
3:83415d375d36
Parent:
2:1b1c0502bb08
Child:
4:9fbefd153e3e
face enrollment 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 3:83415d375d36 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 }