asdasdasd

Dependencies:   mbed

Fork of FINAL_PROJECT_4180 by Gedeon Nyengele

Committer:
xemnas214
Date:
Wed Nov 23 01:07:10 2016 +0000
Revision:
14:ca57ad53761b
Parent:
12:5cb9ffad1ad7
iotlockkkk;

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 12:5cb9ffad1ad7 3 #include <cstring>
nyengele 0:f0e40bf44ffe 4
nyengele 3:83415d375d36 5 #define CMD_ENROLL 0x01
nyengele 3:83415d375d36 6 #define CMD_AUTH 0x02
nyengele 3:83415d375d36 7 #define FACE_FID 0x01
nyengele 3:83415d375d36 8 #define SPEECH_FID 0x02
nyengele 12:5cb9ffad1ad7 9 #define VOICE_FID 0x03
nyengele 3:83415d375d36 10 #define SUCCESS 0x55
nyengele 3:83415d375d36 11 #define FAILURE 0x8A
nyengele 3:83415d375d36 12
nyengele 0:f0e40bf44ffe 13 int hashcode(const char *data, int size)
nyengele 0:f0e40bf44ffe 14 {
nyengele 0:f0e40bf44ffe 15 int hash = 17;
nyengele 0:f0e40bf44ffe 16 for (int i = 0; i < size; i++) {
nyengele 0:f0e40bf44ffe 17 hash += 31*hash + data[i];
nyengele 0:f0e40bf44ffe 18 }
nyengele 0:f0e40bf44ffe 19 return hash;
nyengele 0:f0e40bf44ffe 20 }
nyengele 0:f0e40bf44ffe 21 void read_mag_card(Serial *device, char *dest, int *size)
nyengele 0:f0e40bf44ffe 22 {
nyengele 0:f0e40bf44ffe 23 int pos = 0;
nyengele 0:f0e40bf44ffe 24 bool done = false;
nyengele 0:f0e40bf44ffe 25 int markercount = 0;
nyengele 0:f0e40bf44ffe 26 while (!done) {
nyengele 1:0e5e9821d89d 27 while (!device->readable());
nyengele 0:f0e40bf44ffe 28 dest[pos] = device->getc();
nyengele 0:f0e40bf44ffe 29 if (dest[pos] == '?') markercount++;
nyengele 0:f0e40bf44ffe 30 if (markercount >= 2) done = true;
nyengele 0:f0e40bf44ffe 31 pos++;
nyengele 0:f0e40bf44ffe 32 }
nyengele 0:f0e40bf44ffe 33 *size = pos - 1;
nyengele 2:1b1c0502bb08 34 }
nyengele 2:1b1c0502bb08 35
nyengele 2:1b1c0502bb08 36 bool fp_enroll(FPScanner *fp)
nyengele 2:1b1c0502bb08 37 {
nyengele 2:1b1c0502bb08 38 bool status = true;
nyengele 2:1b1c0502bb08 39 fp->SetLED(true);
nyengele 2:1b1c0502bb08 40 while(!fp->IsPressFinger()) wait(0.030);
nyengele 2:1b1c0502bb08 41 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 42 if (fp->Identify1_N() == 200) {
nyengele 2:1b1c0502bb08 43 int id = fp->GetEnrollCount();
nyengele 2:1b1c0502bb08 44 if (fp->EnrollStart(id) == 0) {
nyengele 2:1b1c0502bb08 45 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 46 fp->Enroll1();
nyengele 2:1b1c0502bb08 47 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 48 fp->Enroll2();
nyengele 2:1b1c0502bb08 49 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 50 fp->Enroll3();
nyengele 2:1b1c0502bb08 51 fp->SetLED(false);
nyengele 2:1b1c0502bb08 52 } else status = false;
nyengele 2:1b1c0502bb08 53 } else status = false;
nyengele 2:1b1c0502bb08 54
nyengele 2:1b1c0502bb08 55 return status;
nyengele 2:1b1c0502bb08 56 }
nyengele 2:1b1c0502bb08 57
nyengele 2:1b1c0502bb08 58 bool fp_auth(FPScanner *fp)
nyengele 2:1b1c0502bb08 59 {
nyengele 2:1b1c0502bb08 60 bool status = false;
nyengele 2:1b1c0502bb08 61 fp->SetLED(true);
nyengele 2:1b1c0502bb08 62 while(!fp->IsPressFinger()) wait(0.030);
nyengele 2:1b1c0502bb08 63 fp->CaptureFinger(true);
nyengele 2:1b1c0502bb08 64 if (fp->Identify1_N() != 200) status = true;
nyengele 2:1b1c0502bb08 65 fp->SetLED(false);
nyengele 2:1b1c0502bb08 66 return status;
nyengele 3:83415d375d36 67 }
nyengele 3:83415d375d36 68
nyengele 3:83415d375d36 69 bool face_enroll(char *user_id, Serial *android)
nyengele 3:83415d375d36 70 {
nyengele 3:83415d375d36 71 char CMD[] = {
nyengele 12:5cb9ffad1ad7 72 0x0A,
nyengele 3:83415d375d36 73 CMD_ENROLL,
nyengele 3:83415d375d36 74 0x02,
nyengele 3:83415d375d36 75 0x04,
nyengele 3:83415d375d36 76 0x01,
nyengele 3:83415d375d36 77 user_id[0],
nyengele 3:83415d375d36 78 user_id[1],
nyengele 3:83415d375d36 79 user_id[2],
nyengele 3:83415d375d36 80 user_id[3],
nyengele 3:83415d375d36 81 FACE_FID,
nyengele 3:83415d375d36 82 '\0'
nyengele 3:83415d375d36 83 };
nyengele 3:83415d375d36 84
nyengele 3:83415d375d36 85 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 86 while(!android->writeable());
nyengele 3:83415d375d36 87 android->putc(CMD[i]);
nyengele 3:83415d375d36 88 }
nyengele 5:562b8d04dfd4 89
nyengele 3:83415d375d36 90 while (!android->readable());
nyengele 3:83415d375d36 91 char temp = android->getc();
nyengele 3:83415d375d36 92 if (temp == SUCCESS) return true;
nyengele 3:83415d375d36 93 else return false;
nyengele 3:83415d375d36 94 }
nyengele 4:9fbefd153e3e 95
nyengele 12:5cb9ffad1ad7 96 bool face_auth(char *user_id, Serial *android)
nyengele 4:9fbefd153e3e 97 {
nyengele 4:9fbefd153e3e 98 char CMD[] = {
nyengele 12:5cb9ffad1ad7 99 0x0A,
nyengele 4:9fbefd153e3e 100 CMD_AUTH,
nyengele 4:9fbefd153e3e 101 0x02,
nyengele 4:9fbefd153e3e 102 0x04,
nyengele 4:9fbefd153e3e 103 0x01,
nyengele 4:9fbefd153e3e 104 user_id[0],
nyengele 4:9fbefd153e3e 105 user_id[1],
nyengele 4:9fbefd153e3e 106 user_id[2],
nyengele 4:9fbefd153e3e 107 user_id[3],
nyengele 4:9fbefd153e3e 108 FACE_FID,
nyengele 4:9fbefd153e3e 109 '\0'
nyengele 4:9fbefd153e3e 110 };
nyengele 4:9fbefd153e3e 111
nyengele 4:9fbefd153e3e 112 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 113 while(!android->writeable());
nyengele 4:9fbefd153e3e 114 android->putc(CMD[i]);
nyengele 4:9fbefd153e3e 115 }
nyengele 5:562b8d04dfd4 116
nyengele 5:562b8d04dfd4 117 while (!android->readable());
nyengele 5:562b8d04dfd4 118 char temp = android->getc();
nyengele 5:562b8d04dfd4 119 if (temp == SUCCESS) return true;
nyengele 5:562b8d04dfd4 120 else return false;
nyengele 5:562b8d04dfd4 121 }
nyengele 5:562b8d04dfd4 122
nyengele 5:562b8d04dfd4 123 bool speech_enroll(char *user_id, Serial *android)
nyengele 5:562b8d04dfd4 124 {
nyengele 5:562b8d04dfd4 125 char CMD[] = {
nyengele 12:5cb9ffad1ad7 126 0x0A,
nyengele 5:562b8d04dfd4 127 CMD_ENROLL,
nyengele 5:562b8d04dfd4 128 0x02,
nyengele 5:562b8d04dfd4 129 0x04,
nyengele 5:562b8d04dfd4 130 0x01,
nyengele 5:562b8d04dfd4 131 user_id[0],
nyengele 5:562b8d04dfd4 132 user_id[1],
nyengele 5:562b8d04dfd4 133 user_id[2],
nyengele 5:562b8d04dfd4 134 user_id[3],
nyengele 5:562b8d04dfd4 135 SPEECH_FID,
nyengele 5:562b8d04dfd4 136 '\0'
nyengele 5:562b8d04dfd4 137 };
nyengele 5:562b8d04dfd4 138
nyengele 5:562b8d04dfd4 139 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 140 while(!android->writeable());
nyengele 5:562b8d04dfd4 141 android->putc(CMD[i]);
nyengele 5:562b8d04dfd4 142 }
nyengele 5:562b8d04dfd4 143
nyengele 4:9fbefd153e3e 144 while (!android->readable());
nyengele 4:9fbefd153e3e 145 char temp = android->getc();
nyengele 4:9fbefd153e3e 146 if (temp == SUCCESS) return true;
nyengele 4:9fbefd153e3e 147 else return false;
nyengele 6:d0582711a5d1 148 }
nyengele 6:d0582711a5d1 149
nyengele 12:5cb9ffad1ad7 150 bool speech_auth(char *user_id, Serial *android)
nyengele 6:d0582711a5d1 151 {
nyengele 6:d0582711a5d1 152 char CMD[] = {
nyengele 12:5cb9ffad1ad7 153 0x0A,
nyengele 6:d0582711a5d1 154 CMD_AUTH,
nyengele 6:d0582711a5d1 155 0x02,
nyengele 6:d0582711a5d1 156 0x04,
nyengele 6:d0582711a5d1 157 0x01,
nyengele 6:d0582711a5d1 158 user_id[0],
nyengele 6:d0582711a5d1 159 user_id[1],
nyengele 6:d0582711a5d1 160 user_id[2],
nyengele 6:d0582711a5d1 161 user_id[3],
nyengele 6:d0582711a5d1 162 SPEECH_FID,
nyengele 6:d0582711a5d1 163 '\0'
nyengele 6:d0582711a5d1 164 };
nyengele 6:d0582711a5d1 165
nyengele 6:d0582711a5d1 166 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 167 while(!android->writeable());
nyengele 12:5cb9ffad1ad7 168 android->putc(CMD[i]);
nyengele 12:5cb9ffad1ad7 169 }
nyengele 12:5cb9ffad1ad7 170
nyengele 12:5cb9ffad1ad7 171 while (!android->readable());
nyengele 12:5cb9ffad1ad7 172 char temp = android->getc();
nyengele 12:5cb9ffad1ad7 173 if (temp == SUCCESS) return true;
nyengele 12:5cb9ffad1ad7 174 else return false;
nyengele 12:5cb9ffad1ad7 175 }
nyengele 12:5cb9ffad1ad7 176
nyengele 12:5cb9ffad1ad7 177 bool voice_enroll(char *user_id, Serial *android)
nyengele 12:5cb9ffad1ad7 178 {
nyengele 12:5cb9ffad1ad7 179 char CMD[] = {
nyengele 12:5cb9ffad1ad7 180 0x0A,
nyengele 12:5cb9ffad1ad7 181 CMD_ENROLL,
nyengele 12:5cb9ffad1ad7 182 0x02,
nyengele 12:5cb9ffad1ad7 183 0x04,
nyengele 12:5cb9ffad1ad7 184 0x01,
nyengele 12:5cb9ffad1ad7 185 user_id[0],
nyengele 12:5cb9ffad1ad7 186 user_id[1],
nyengele 12:5cb9ffad1ad7 187 user_id[2],
nyengele 12:5cb9ffad1ad7 188 user_id[3],
nyengele 12:5cb9ffad1ad7 189 VOICE_FID,
nyengele 12:5cb9ffad1ad7 190 '\0'
nyengele 12:5cb9ffad1ad7 191 };
nyengele 12:5cb9ffad1ad7 192
nyengele 12:5cb9ffad1ad7 193 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 194 while(!android->writeable());
nyengele 12:5cb9ffad1ad7 195 android->putc(CMD[i]);
nyengele 12:5cb9ffad1ad7 196 }
nyengele 12:5cb9ffad1ad7 197
nyengele 12:5cb9ffad1ad7 198 while (!android->readable());
nyengele 12:5cb9ffad1ad7 199 char temp = android->getc();
nyengele 12:5cb9ffad1ad7 200 if (temp == SUCCESS) return true;
nyengele 12:5cb9ffad1ad7 201 else return false;
nyengele 12:5cb9ffad1ad7 202 }
nyengele 12:5cb9ffad1ad7 203
nyengele 12:5cb9ffad1ad7 204 bool voice_auth(char *user_id, Serial *android)
nyengele 12:5cb9ffad1ad7 205 {
nyengele 12:5cb9ffad1ad7 206 char CMD[] = {
nyengele 12:5cb9ffad1ad7 207 0x0A,
nyengele 12:5cb9ffad1ad7 208 CMD_AUTH,
nyengele 12:5cb9ffad1ad7 209 0x02,
nyengele 12:5cb9ffad1ad7 210 0x04,
nyengele 12:5cb9ffad1ad7 211 0x01,
nyengele 12:5cb9ffad1ad7 212 user_id[0],
nyengele 12:5cb9ffad1ad7 213 user_id[1],
nyengele 12:5cb9ffad1ad7 214 user_id[2],
nyengele 12:5cb9ffad1ad7 215 user_id[3],
nyengele 12:5cb9ffad1ad7 216 VOICE_FID,
nyengele 12:5cb9ffad1ad7 217 '\0'
nyengele 12:5cb9ffad1ad7 218 };
nyengele 12:5cb9ffad1ad7 219
nyengele 12:5cb9ffad1ad7 220 for (int i = 0; i < sizeof(CMD)/ sizeof(char); i++) {
nyengele 12:5cb9ffad1ad7 221 while(!android->writeable());
nyengele 6:d0582711a5d1 222 android->putc(CMD[i]);
nyengele 6:d0582711a5d1 223 }
nyengele 6:d0582711a5d1 224
nyengele 6:d0582711a5d1 225 while (!android->readable());
nyengele 6:d0582711a5d1 226 char temp = android->getc();
nyengele 6:d0582711a5d1 227 if (temp == SUCCESS) return true;
nyengele 6:d0582711a5d1 228 else return false;
nyengele 7:800afb8c4cb5 229 }
nyengele 7:800afb8c4cb5 230
nyengele 7:800afb8c4cb5 231 void buzzer(PwmOut *speaker, int seconds)
nyengele 7:800afb8c4cb5 232 {
nyengele 7:800afb8c4cb5 233 speaker->period(1.0/500.0);
nyengele 7:800afb8c4cb5 234 *speaker = 0.5;
nyengele 7:800afb8c4cb5 235 wait(seconds);
nyengele 7:800afb8c4cb5 236 *speaker = 0.0;
nyengele 7:800afb8c4cb5 237 }
nyengele 8:9b41712fd2c3 238
nyengele 12:5cb9ffad1ad7 239 void display_msg(Cryst_LCD *lcd, char *text)
nyengele 8:9b41712fd2c3 240 {
nyengele 8:9b41712fd2c3 241 lcd->cls();
nyengele 12:5cb9ffad1ad7 242 lcd->locate(1, 0);
nyengele 12:5cb9ffad1ad7 243 lcd->printf("%s", text);
nyengele 8:9b41712fd2c3 244 }
nyengele 8:9b41712fd2c3 245
nyengele 12:5cb9ffad1ad7 246 void greeting(Cryst_LCD *lcd)
nyengele 8:9b41712fd2c3 247 {
nyengele 8:9b41712fd2c3 248 lcd->cls();
nyengele 12:5cb9ffad1ad7 249 lcd->locate(0, 7);
nyengele 12:5cb9ffad1ad7 250 lcd->printf("WELCOME");
nyengele 12:5cb9ffad1ad7 251 lcd->locate(3, 0);
nyengele 12:5cb9ffad1ad7 252 lcd->printf("*:AUTH");
nyengele 12:5cb9ffad1ad7 253 lcd->locate(3, 12);
nyengele 12:5cb9ffad1ad7 254 lcd->printf("#:ENROLL");
nyengele 11:1d7021c0739d 255 }
nyengele 11:1d7021c0739d 256
nyengele 12:5cb9ffad1ad7 257 bool prompt(const char* msg, Cryst_LCD *lcd, Keypad<4, 3>* pad)
nyengele 9:48e93bcd1d5c 258 {
nyengele 12:5cb9ffad1ad7 259 bool res = false;
nyengele 12:5cb9ffad1ad7 260 char temp;
nyengele 12:5cb9ffad1ad7 261 lcd->cls();
nyengele 12:5cb9ffad1ad7 262 lcd->locate(0,0);
nyengele 12:5cb9ffad1ad7 263 lcd->printf("%s", msg);
nyengele 12:5cb9ffad1ad7 264 lcd->locate(3, 0);
nyengele 12:5cb9ffad1ad7 265 lcd->printf("*:NO");
nyengele 12:5cb9ffad1ad7 266 lcd->locate(3, 15);
nyengele 12:5cb9ffad1ad7 267 lcd->printf("#:YES");
nyengele 12:5cb9ffad1ad7 268 while ((temp = pad->getKeyChar()) != '#' && temp != '*');
nyengele 12:5cb9ffad1ad7 269 if (temp == '#') res = true;
nyengele 12:5cb9ffad1ad7 270 return res;
nyengele 10:c3556e27e576 271 }
nyengele 10:c3556e27e576 272
nyengele 12:5cb9ffad1ad7 273 bool is_valid_user(char *user_id)
nyengele 10:c3556e27e576 274 {
nyengele 12:5cb9ffad1ad7 275 char full_path[30];
nyengele 12:5cb9ffad1ad7 276 std::strcpy(full_path, "/local/");
nyengele 12:5cb9ffad1ad7 277 char filename[10];
nyengele 12:5cb9ffad1ad7 278 std::memcpy(filename, user_id, 4);
nyengele 12:5cb9ffad1ad7 279 filename[4] = '\0';
nyengele 12:5cb9ffad1ad7 280 std::strcat(filename, ".TXT");
nyengele 12:5cb9ffad1ad7 281 std::strcat(full_path, filename);
nyengele 12:5cb9ffad1ad7 282 FILE *fp = fopen(full_path, "r");
nyengele 12:5cb9ffad1ad7 283 if (fp == NULL)return false;
nyengele 12:5cb9ffad1ad7 284 else fclose(fp);
nyengele 12:5cb9ffad1ad7 285 return true;
nyengele 10:c3556e27e576 286 }
nyengele 11:1d7021c0739d 287
nyengele 12:5cb9ffad1ad7 288 bool write_hash_to_file(char *user_id, int hash)
nyengele 11:1d7021c0739d 289 {
nyengele 12:5cb9ffad1ad7 290 char full_path[30];
nyengele 12:5cb9ffad1ad7 291 std::strcpy(full_path, "/local/");
nyengele 12:5cb9ffad1ad7 292 char filename[10];
nyengele 12:5cb9ffad1ad7 293 std::memcpy(filename, user_id, 4);
nyengele 12:5cb9ffad1ad7 294 filename[4] = '\0';
nyengele 12:5cb9ffad1ad7 295 std::strcat(filename, ".TXT");
nyengele 12:5cb9ffad1ad7 296 std::strcat(full_path, filename);
nyengele 12:5cb9ffad1ad7 297 FILE *fp = fopen(full_path, "w");
nyengele 12:5cb9ffad1ad7 298 if (fp == NULL) return false;
nyengele 12:5cb9ffad1ad7 299 fprintf(fp, "%d", hash);
nyengele 12:5cb9ffad1ad7 300 fclose(fp);
nyengele 11:1d7021c0739d 301 return true;
nyengele 11:1d7021c0739d 302 }
nyengele 11:1d7021c0739d 303
nyengele 12:5cb9ffad1ad7 304 bool read_hash_from_file(char *user_id, int *hash)
nyengele 12:5cb9ffad1ad7 305 {
nyengele 12:5cb9ffad1ad7 306 bool success_read = false;
nyengele 12:5cb9ffad1ad7 307 char full_path[30];
nyengele 12:5cb9ffad1ad7 308 std::strcpy(full_path, "/local/");
nyengele 12:5cb9ffad1ad7 309 char filename[10];
nyengele 12:5cb9ffad1ad7 310 std::memcpy(filename, user_id, 4);
nyengele 12:5cb9ffad1ad7 311 filename[4] = '\0';
nyengele 12:5cb9ffad1ad7 312 std::strcat(filename, ".TXT");
nyengele 12:5cb9ffad1ad7 313 std::strcat(full_path, filename);
nyengele 12:5cb9ffad1ad7 314 FILE *fp = fopen(full_path, "r");
nyengele 12:5cb9ffad1ad7 315 if (fp) {
nyengele 12:5cb9ffad1ad7 316 int t = fscanf(fp, "%d", hash);
nyengele 12:5cb9ffad1ad7 317 if (t != 0 && t != EOF) success_read = true;
nyengele 12:5cb9ffad1ad7 318 fclose(fp);
nyengele 12:5cb9ffad1ad7 319 }
nyengele 12:5cb9ffad1ad7 320 return success_read;
nyengele 12:5cb9ffad1ad7 321 }
nyengele 12:5cb9ffad1ad7 322
nyengele 12:5cb9ffad1ad7 323 bool read_pin(char *buffer, int length, Cryst_LCD* lcd, Keypad<4, 3>* pad)
nyengele 12:5cb9ffad1ad7 324 {
nyengele 12:5cb9ffad1ad7 325 bool res = false;
nyengele 12:5cb9ffad1ad7 326 int cur = 0;
nyengele 12:5cb9ffad1ad7 327 lcd->cls();
nyengele 12:5cb9ffad1ad7 328 lcd->locate(3,0);
nyengele 12:5cb9ffad1ad7 329 lcd->printf("*:CLEAR");
nyengele 12:5cb9ffad1ad7 330 lcd->locate(3, 13);
nyengele 12:5cb9ffad1ad7 331 lcd->printf("#:ENTER");
nyengele 12:5cb9ffad1ad7 332 lcd->locate(0,0);
nyengele 12:5cb9ffad1ad7 333 lcd->printf("Enter 4-Digit PIN:\n");
nyengele 12:5cb9ffad1ad7 334 lcd->cursor_on();
nyengele 12:5cb9ffad1ad7 335 lcd->cursor_blink();
nyengele 12:5cb9ffad1ad7 336 bool done = false;
nyengele 12:5cb9ffad1ad7 337 char temp_char;
nyengele 12:5cb9ffad1ad7 338 while (!done) {
nyengele 12:5cb9ffad1ad7 339 temp_char = pad->getKeyChar();
nyengele 12:5cb9ffad1ad7 340 if (temp_char == '#') done = true;
nyengele 12:5cb9ffad1ad7 341 else if (temp_char == '*') {
nyengele 12:5cb9ffad1ad7 342 lcd->clear_line();
nyengele 12:5cb9ffad1ad7 343 cur = 0;
nyengele 12:5cb9ffad1ad7 344 } else {
nyengele 12:5cb9ffad1ad7 345 if (cur < 19) lcd->printf("%C", '*');
nyengele 12:5cb9ffad1ad7 346 if (cur < length) buffer[cur] = temp_char;
nyengele 12:5cb9ffad1ad7 347 cur++;
nyengele 12:5cb9ffad1ad7 348 }
nyengele 12:5cb9ffad1ad7 349 }
nyengele 12:5cb9ffad1ad7 350 if (cur == length) res = true;
nyengele 12:5cb9ffad1ad7 351 lcd->cursor_off();
nyengele 12:5cb9ffad1ad7 352 lcd->cursor_no_blink();
nyengele 12:5cb9ffad1ad7 353 return res;
nyengele 12:5cb9ffad1ad7 354 }
nyengele 12:5cb9ffad1ad7 355
nyengele 12:5cb9ffad1ad7 356
nyengele 12:5cb9ffad1ad7 357 bool fp_clearAll(FPScanner *fp)
nyengele 12:5cb9ffad1ad7 358 {
nyengele 12:5cb9ffad1ad7 359 bool status;
nyengele 12:5cb9ffad1ad7 360 fp->SetLED(true);
nyengele 12:5cb9ffad1ad7 361 status = fp->DeleteAll();
nyengele 12:5cb9ffad1ad7 362 fp->SetLED(false);
nyengele 12:5cb9ffad1ad7 363 return status;
nyengele 12:5cb9ffad1ad7 364 }
nyengele 12:5cb9ffad1ad7 365
nyengele 12:5cb9ffad1ad7 366 char clear_serial_buffer(Serial *dev)
nyengele 12:5cb9ffad1ad7 367 {
nyengele 12:5cb9ffad1ad7 368 char temp;
nyengele 12:5cb9ffad1ad7 369 while (dev->readable()) {
nyengele 12:5cb9ffad1ad7 370 temp = dev->getc();
nyengele 12:5cb9ffad1ad7 371 }
nyengele 12:5cb9ffad1ad7 372 return temp;
nyengele 12:5cb9ffad1ad7 373 }