It is a door opener with mbed and Felica(RFID).
Dependencies: mbed Servo SDFileSystem
main.cpp@6:9fe8caff6142, 2012-05-15 (annotated)
- Committer:
- ryought
- Date:
- Tue May 15 07:47:19 2012 +0000
- Revision:
- 6:9fe8caff6142
- Parent:
- 5:4242d287f7f4
FINAL
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryought | 1:26e3869ba544 | 1 | #include "mbed.h" |
ryought | 1:26e3869ba544 | 2 | #include "Servo.h" |
ryought | 1:26e3869ba544 | 3 | #include "TextLCD.h" |
ryought | 1:26e3869ba544 | 4 | #include "SDFileSystem.h" |
ryought | 6:9fe8caff6142 | 5 | #include "RCS620S.h" //library for felica RCS620S(switch science) |
ryought | 6:9fe8caff6142 | 6 | #include <inttypes.h> |
ryought | 6:9fe8caff6142 | 7 | #include <string.h> |
ryought | 6:9fe8caff6142 | 8 | |
ryought | 6:9fe8caff6142 | 9 | #define MAX_USER_NUMBER 40 |
ryought | 1:26e3869ba544 | 10 | |
ryought | 1:26e3869ba544 | 11 | TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d4-d7 |
ryought | 1:26e3869ba544 | 12 | Serial pc(USBTX, USBRX); |
ryought | 6:9fe8caff6142 | 13 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card reader module |
ryought | 4:f71760338b1e | 14 | Servo myServo(p21); //port-21 = doorlock servo |
ryought | 6:9fe8caff6142 | 15 | |
ryought | 6:9fe8caff6142 | 16 | InterruptIn int_p23(p23); //reg_button |
ryought | 6:9fe8caff6142 | 17 | InterruptIn int_doorbutton(p24); //door open/close analog control button |
ryought | 6:9fe8caff6142 | 18 | Serial serial(p9, p10); //Felica read and write module |
ryought | 6:9fe8caff6142 | 19 | |
ryought | 6:9fe8caff6142 | 20 | static char HEXSTRING[17] = "0123456789ABCDEF"; |
ryought | 6:9fe8caff6142 | 21 | char *itoh(uint8_t val, char *ptr); |
ryought | 6:9fe8caff6142 | 22 | |
ryought | 6:9fe8caff6142 | 23 | char userid[MAX_USER_NUMBER][18]; //userid read from SD |
ryought | 6:9fe8caff6142 | 24 | char regid[18]; //register id |
ryought | 6:9fe8caff6142 | 25 | |
ryought | 6:9fe8caff6142 | 26 | char *format = "%s"; |
ryought | 6:9fe8caff6142 | 27 | bool reg_button = false; |
ryought | 6:9fe8caff6142 | 28 | bool door_status; |
ryought | 6:9fe8caff6142 | 29 | |
ryought | 6:9fe8caff6142 | 30 | int already_count = 0; |
ryought | 6:9fe8caff6142 | 31 | //int try_count = 0; |
ryought | 6:9fe8caff6142 | 32 | |
ryought | 6:9fe8caff6142 | 33 | char *p_items; //used in loading userid from SDcard |
ryought | 6:9fe8caff6142 | 34 | |
ryought | 6:9fe8caff6142 | 35 | DigitalOut serialready(LED1); |
ryought | 6:9fe8caff6142 | 36 | DigitalOut felicarwready(LED2); |
ryought | 6:9fe8caff6142 | 37 | DigitalOut door_status_led(LED3); |
ryought | 5:4242d287f7f4 | 38 | DigitalOut int_led(LED4); |
ryought | 1:26e3869ba544 | 39 | |
ryought | 6:9fe8caff6142 | 40 | DigitalOut felicaready(p25); |
ryought | 6:9fe8caff6142 | 41 | DigitalOut auth_ok(p26); |
ryought | 6:9fe8caff6142 | 42 | DigitalOut auth_ng(p27); |
ryought | 6:9fe8caff6142 | 43 | DigitalOut regready(p28); |
ryought | 6:9fe8caff6142 | 44 | DigitalOut error_led(p29); |
ryought | 3:046e6f173f9e | 45 | |
ryought | 6:9fe8caff6142 | 46 | class Watchdog { //watchdog timer |
ryought | 4:f71760338b1e | 47 | public: |
ryought | 4:f71760338b1e | 48 | void kick(float s) { |
ryought | 4:f71760338b1e | 49 | LPC_WDT->WDCLKSEL = 0x1; |
ryought | 4:f71760338b1e | 50 | uint32_t clk = SystemCoreClock / 16; |
ryought | 4:f71760338b1e | 51 | LPC_WDT->WDTC = s * (float)clk; |
ryought | 4:f71760338b1e | 52 | LPC_WDT->WDMOD = 0x3; |
ryought | 4:f71760338b1e | 53 | |
ryought | 4:f71760338b1e | 54 | kick(); |
ryought | 4:f71760338b1e | 55 | } |
ryought | 4:f71760338b1e | 56 | |
ryought | 4:f71760338b1e | 57 | void kick() { |
ryought | 4:f71760338b1e | 58 | LPC_WDT->WDFEED = 0xAA; |
ryought | 4:f71760338b1e | 59 | LPC_WDT->WDFEED = 0x55; |
ryought | 4:f71760338b1e | 60 | } |
ryought | 4:f71760338b1e | 61 | }; |
ryought | 4:f71760338b1e | 62 | |
ryought | 4:f71760338b1e | 63 | Watchdog w; |
ryought | 4:f71760338b1e | 64 | |
ryought | 6:9fe8caff6142 | 65 | |
ryought | 6:9fe8caff6142 | 66 | //interrupt pin setup |
ryought | 6:9fe8caff6142 | 67 | void int_reg() { //registering button's interrupt |
ryought | 6:9fe8caff6142 | 68 | int_led = 1; |
ryought | 6:9fe8caff6142 | 69 | reg_button = 1; |
ryought | 6:9fe8caff6142 | 70 | regready = 1; |
ryought | 6:9fe8caff6142 | 71 | } |
ryought | 6:9fe8caff6142 | 72 | |
ryought | 6:9fe8caff6142 | 73 | |
ryought | 6:9fe8caff6142 | 74 | void logSetup(){ //log and userid setup and read again |
ryought | 6:9fe8caff6142 | 75 | FILE *fp = fopen("/sd/rdoor/userlist.txt", "r"); //user list(in sd) |
ryought | 6:9fe8caff6142 | 76 | FILE *fp2 = fopen("/sd/rdoor/log.txt", "a"); //logfile(in sd) |
ryought | 6:9fe8caff6142 | 77 | if (fp2 == NULL) error("could not read LOGFILES\n"); |
ryought | 6:9fe8caff6142 | 78 | if (fp == NULL) error("could not read USERLIST\n"); |
ryought | 6:9fe8caff6142 | 79 | |
ryought | 6:9fe8caff6142 | 80 | //load all userid saved in SDcard |
ryought | 6:9fe8caff6142 | 81 | for (int ii=0; ii < MAX_USER_NUMBER; ii++) { |
ryought | 6:9fe8caff6142 | 82 | p_items = fgets(userid[ii], 18, fp); //load userid(max.18 character) from fp |
ryought | 6:9fe8caff6142 | 83 | strtok(userid[ii], "\n\0"); // change \n to \0 method |
ryought | 6:9fe8caff6142 | 84 | if(p_items == NULL) break; |
ryought | 6:9fe8caff6142 | 85 | } |
ryought | 6:9fe8caff6142 | 86 | |
ryought | 6:9fe8caff6142 | 87 | fclose(fp); |
ryought | 6:9fe8caff6142 | 88 | fclose(fp2); |
ryought | 6:9fe8caff6142 | 89 | pc.printf("File OK\n"); |
ryought | 5:4242d287f7f4 | 90 | } |
ryought | 5:4242d287f7f4 | 91 | |
ryought | 5:4242d287f7f4 | 92 | |
ryought | 6:9fe8caff6142 | 93 | void openDoor(){ //opening door(move motor, refresh lcd, change door_status, led) |
ryought | 4:f71760338b1e | 94 | lcd.cls(); |
ryought | 4:f71760338b1e | 95 | lcd.printf("-MOTOR DRIVING-"); |
ryought | 6:9fe8caff6142 | 96 | myServo = 0; |
ryought | 4:f71760338b1e | 97 | lcd.cls(); |
ryought | 4:f71760338b1e | 98 | lcd.printf("-DOOR:OPENED-"); |
ryought | 6:9fe8caff6142 | 99 | door_status = true; |
ryought | 6:9fe8caff6142 | 100 | door_status_led = 1; |
ryought | 6:9fe8caff6142 | 101 | } |
ryought | 6:9fe8caff6142 | 102 | void closeDoor(){ //closing door |
ryought | 6:9fe8caff6142 | 103 | lcd.cls(); |
ryought | 6:9fe8caff6142 | 104 | lcd.printf("-MOTOR DRIVING"); |
ryought | 6:9fe8caff6142 | 105 | myServo = 1.0; |
ryought | 6:9fe8caff6142 | 106 | lcd.cls(); |
ryought | 6:9fe8caff6142 | 107 | lcd.printf("-DOOR:CLOSED-"); |
ryought | 6:9fe8caff6142 | 108 | door_status = false; |
ryought | 6:9fe8caff6142 | 109 | door_status_led = 0; |
ryought | 6:9fe8caff6142 | 110 | } |
ryought | 6:9fe8caff6142 | 111 | |
ryought | 6:9fe8caff6142 | 112 | //interrupt pin setup |
ryought | 6:9fe8caff6142 | 113 | void int_doorctrl() { //doorcontrol button's interrupt |
ryought | 6:9fe8caff6142 | 114 | if (door_status == true) { |
ryought | 6:9fe8caff6142 | 115 | closeDoor(); |
ryought | 6:9fe8caff6142 | 116 | door_status = true; |
ryought | 6:9fe8caff6142 | 117 | |
ryought | 6:9fe8caff6142 | 118 | } else if (door_status == false) { |
ryought | 6:9fe8caff6142 | 119 | openDoor(); |
ryought | 6:9fe8caff6142 | 120 | door_status = false; |
ryought | 6:9fe8caff6142 | 121 | |
ryought | 6:9fe8caff6142 | 122 | } |
ryought | 6:9fe8caff6142 | 123 | door_status = !door_status; |
ryought | 6:9fe8caff6142 | 124 | wait(2); |
ryought | 4:f71760338b1e | 125 | } |
ryought | 4:f71760338b1e | 126 | |
ryought | 4:f71760338b1e | 127 | |
ryought | 6:9fe8caff6142 | 128 | int main() { |
ryought | 6:9fe8caff6142 | 129 | lcd.printf("Hello! \n RFID_doorlock\n"); |
ryought | 6:9fe8caff6142 | 130 | |
ryought | 6:9fe8caff6142 | 131 | |
ryought | 6:9fe8caff6142 | 132 | //first setup |
ryought | 6:9fe8caff6142 | 133 | logSetup(); //load all userid from SD(must : connect SD card) |
ryought | 6:9fe8caff6142 | 134 | closeDoor(); //at beginning, door_status is set up tp close(false) |
ryought | 6:9fe8caff6142 | 135 | |
ryought | 6:9fe8caff6142 | 136 | int_p23.rise(&int_reg); |
ryought | 6:9fe8caff6142 | 137 | int_doorbutton.rise(&int_doorctrl); //interrupt pin setup |
ryought | 6:9fe8caff6142 | 138 | |
ryought | 4:f71760338b1e | 139 | |
ryought | 6:9fe8caff6142 | 140 | //felica setup |
ryought | 6:9fe8caff6142 | 141 | int ret; |
ryought | 6:9fe8caff6142 | 142 | int loop; |
ryought | 6:9fe8caff6142 | 143 | char idbuffer[17]; |
ryought | 6:9fe8caff6142 | 144 | char *hexid; |
ryought | 6:9fe8caff6142 | 145 | |
ryought | 6:9fe8caff6142 | 146 | serial.baud(115200); |
ryought | 6:9fe8caff6142 | 147 | serialready = 1; |
ryought | 4:f71760338b1e | 148 | |
ryought | 6:9fe8caff6142 | 149 | ret = 0; |
ryought | 6:9fe8caff6142 | 150 | RCS620S felica; |
ryought | 6:9fe8caff6142 | 151 | while (ret == 0) { |
ryought | 6:9fe8caff6142 | 152 | wait(1); |
ryought | 6:9fe8caff6142 | 153 | ret = felica.initDevice(); |
ryought | 6:9fe8caff6142 | 154 | } |
ryought | 6:9fe8caff6142 | 155 | felicarwready = 1; |
ryought | 6:9fe8caff6142 | 156 | pc.printf("Reader OK \n"); //Felica Reader loading finished |
ryought | 4:f71760338b1e | 157 | |
ryought | 6:9fe8caff6142 | 158 | |
ryought | 6:9fe8caff6142 | 159 | //print all loaded USERID first. |
ryought | 6:9fe8caff6142 | 160 | for (int x = 0; x <= MAX_USER_NUMBER; x++) { |
ryought | 6:9fe8caff6142 | 161 | pc.printf("-%s \n", userid[x]); |
ryought | 6:9fe8caff6142 | 162 | } |
ryought | 6:9fe8caff6142 | 163 | |
ryought | 1:26e3869ba544 | 164 | |
ryought | 5:4242d287f7f4 | 165 | |
ryought | 6:9fe8caff6142 | 166 | //main routine |
ryought | 5:4242d287f7f4 | 167 | while(1) { |
ryought | 6:9fe8caff6142 | 168 | pc.printf("Please FeliCa Touch\n"); |
ryought | 6:9fe8caff6142 | 169 | felicaready = 1; |
ryought | 6:9fe8caff6142 | 170 | |
ryought | 6:9fe8caff6142 | 171 | //reading id of touched Felica card |
ryought | 6:9fe8caff6142 | 172 | hexid = idbuffer + sizeof(idbuffer); // hexid = buffer[ last of elements ]; |
ryought | 6:9fe8caff6142 | 173 | *--hexid = '\0'; |
ryought | 6:9fe8caff6142 | 174 | while (felica.polling(0xffff) == 0); |
ryought | 6:9fe8caff6142 | 175 | felicarwready = 0; |
ryought | 6:9fe8caff6142 | 176 | pc.printf(">idm: "); |
ryought | 6:9fe8caff6142 | 177 | felicaready = 0; |
ryought | 6:9fe8caff6142 | 178 | for (loop = 7; loop >= 0; loop--){ |
ryought | 6:9fe8caff6142 | 179 | hexid = itoh(felica.idm[loop], hexid); |
ryought | 6:9fe8caff6142 | 180 | } |
ryought | 6:9fe8caff6142 | 181 | pc.printf("%s \n", hexid); //print touched id |
ryought | 6:9fe8caff6142 | 182 | |
ryought | 6:9fe8caff6142 | 183 | |
ryought | 6:9fe8caff6142 | 184 | /*cf. |
ryought | 6:9fe8caff6142 | 185 | hexid : touched Felica ID |
ryought | 6:9fe8caff6142 | 186 | regid : special ID used by registering method |
ryought | 6:9fe8caff6142 | 187 | userid[] : registered ID read from SDcard |
ryought | 6:9fe8caff6142 | 188 | */ |
ryought | 6:9fe8caff6142 | 189 | |
ryought | 5:4242d287f7f4 | 190 | |
ryought | 6:9fe8caff6142 | 191 | //authentication |
ryought | 6:9fe8caff6142 | 192 | for (int i = 0; i <= MAX_USER_NUMBER; i++) { |
ryought | 6:9fe8caff6142 | 193 | if (strcmp(hexid, userid[i]) == 0) { //hexid = userid[i] |
ryought | 6:9fe8caff6142 | 194 | pc.printf(">Auth Succeeded\n"); |
ryought | 6:9fe8caff6142 | 195 | auth_ok = 1; |
ryought | 6:9fe8caff6142 | 196 | if (door_status == true) { //if door is opened now... close door |
ryought | 6:9fe8caff6142 | 197 | closeDoor(); |
ryought | 6:9fe8caff6142 | 198 | pc.printf(">close door by %s to %s(No.%d)\n", hexid, userid[i], i+1); |
ryought | 6:9fe8caff6142 | 199 | wait(1); |
ryought | 6:9fe8caff6142 | 200 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 201 | break; |
ryought | 6:9fe8caff6142 | 202 | } |
ryought | 6:9fe8caff6142 | 203 | if (door_status == false) { //if door is closed now... open door |
ryought | 6:9fe8caff6142 | 204 | openDoor(); |
ryought | 6:9fe8caff6142 | 205 | pc.printf(">open door by %s to %s(No.%d)\n", hexid, userid[i], i+1); |
ryought | 6:9fe8caff6142 | 206 | wait(1); |
ryought | 6:9fe8caff6142 | 207 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 208 | break; |
ryought | 6:9fe8caff6142 | 209 | } |
ryought | 6:9fe8caff6142 | 210 | } else { //hexid �� userid[i] |
ryought | 6:9fe8caff6142 | 211 | pc.printf(">Auth failed by %s to %s(No.%d)\n", hexid, userid[i], i+1); |
ryought | 6:9fe8caff6142 | 212 | |
ryought | 6:9fe8caff6142 | 213 | if (i == MAX_USER_NUMBER) { |
ryought | 6:9fe8caff6142 | 214 | pc.printf(">Auth Failed\n"); |
ryought | 6:9fe8caff6142 | 215 | auth_ng = 1; |
ryought | 6:9fe8caff6142 | 216 | wait(1); |
ryought | 6:9fe8caff6142 | 217 | auth_ng = 0; |
ryought | 6:9fe8caff6142 | 218 | } |
ryought | 6:9fe8caff6142 | 219 | } |
ryought | 5:4242d287f7f4 | 220 | } |
ryought | 6:9fe8caff6142 | 221 | wait(1); //to avoid repeating auth of same card |
ryought | 6:9fe8caff6142 | 222 | |
ryought | 6:9fe8caff6142 | 223 | |
ryought | 6:9fe8caff6142 | 224 | //register new user's card |
ryought | 6:9fe8caff6142 | 225 | if (reg_button == true) { |
ryought | 6:9fe8caff6142 | 226 | pc.printf("--register mode--\n"); |
ryought | 6:9fe8caff6142 | 227 | |
ryought | 6:9fe8caff6142 | 228 | //read again USERLIST from SD |
ryought | 6:9fe8caff6142 | 229 | FILE *fp = fopen("/sd/rdoor/userlist.txt", "a"); |
ryought | 6:9fe8caff6142 | 230 | if (fp == NULL) error("could not read USERLIST\n"); |
ryought | 6:9fe8caff6142 | 231 | |
ryought | 6:9fe8caff6142 | 232 | //first, read and auth MASTER_ID |
ryought | 6:9fe8caff6142 | 233 | pc.printf("Please Master Felica Card Touch\n"); |
ryought | 6:9fe8caff6142 | 234 | felicaready = 1; |
ryought | 6:9fe8caff6142 | 235 | hexid = idbuffer + sizeof(idbuffer); |
ryought | 6:9fe8caff6142 | 236 | *--hexid = '\0'; |
ryought | 6:9fe8caff6142 | 237 | while (felica.polling(0xffff) == 0); |
ryought | 6:9fe8caff6142 | 238 | felicarwready = 0; |
ryought | 6:9fe8caff6142 | 239 | pc.printf(">idm: "); |
ryought | 6:9fe8caff6142 | 240 | felicaready = 0; |
ryought | 6:9fe8caff6142 | 241 | for (loop = 7; loop >= 0; loop--){ |
ryought | 6:9fe8caff6142 | 242 | hexid = itoh(felica.idm[loop], hexid); |
ryought | 6:9fe8caff6142 | 243 | } |
ryought | 6:9fe8caff6142 | 244 | pc.printf("%s (MASTER)\n", hexid); |
ryought | 6:9fe8caff6142 | 245 | wait(3); |
ryought | 6:9fe8caff6142 | 246 | |
ryought | 6:9fe8caff6142 | 247 | |
ryought | 6:9fe8caff6142 | 248 | //first id = master id... |
ryought | 6:9fe8caff6142 | 249 | if (strcmp(hexid, userid[0]) == 0) { |
ryought | 6:9fe8caff6142 | 250 | pc.printf(">Auth Succeeded\n"); |
ryought | 6:9fe8caff6142 | 251 | auth_ok = 1; |
ryought | 6:9fe8caff6142 | 252 | auth_ng = 0; |
ryought | 6:9fe8caff6142 | 253 | //next, read and register NEW_USER's_ID |
ryought | 6:9fe8caff6142 | 254 | pc.printf("Please Felica of New_User Touch\n"); |
ryought | 6:9fe8caff6142 | 255 | felicaready = 1; |
ryought | 6:9fe8caff6142 | 256 | |
ryought | 6:9fe8caff6142 | 257 | //Felica auth(hexid = NEW_USER's_ID) |
ryought | 6:9fe8caff6142 | 258 | hexid = idbuffer + sizeof(idbuffer); |
ryought | 6:9fe8caff6142 | 259 | *--hexid = '\0'; |
ryought | 6:9fe8caff6142 | 260 | while (felica.polling(0xffff) == 0); |
ryought | 6:9fe8caff6142 | 261 | felicarwready = 0; |
ryought | 6:9fe8caff6142 | 262 | pc.printf(">idm: "); |
ryought | 6:9fe8caff6142 | 263 | felicaready = 0; |
ryought | 6:9fe8caff6142 | 264 | for (loop = 7; loop >= 0; loop--){ |
ryought | 6:9fe8caff6142 | 265 | hexid = itoh(felica.idm[loop], hexid); |
ryought | 6:9fe8caff6142 | 266 | } |
ryought | 6:9fe8caff6142 | 267 | pc.printf("%s (NEW USER)\n", hexid); |
ryought | 6:9fe8caff6142 | 268 | |
ryought | 6:9fe8caff6142 | 269 | |
ryought | 6:9fe8caff6142 | 270 | //to avoid registering same ID |
ryought | 6:9fe8caff6142 | 271 | already_count = 0; //variable initialization |
ryought | 6:9fe8caff6142 | 272 | for (int i = 0; i <= MAX_USER_NUMBER; i++) { |
ryought | 6:9fe8caff6142 | 273 | if (strcmp(hexid, userid[i]) == 0) { |
ryought | 6:9fe8caff6142 | 274 | //NEW_USER's_ID == userid[i]... already_count++ |
ryought | 6:9fe8caff6142 | 275 | already_count = already_count + 1; |
ryought | 6:9fe8caff6142 | 276 | pc.printf(">%d(debug)\n", already_count); |
ryought | 6:9fe8caff6142 | 277 | } |
ryought | 6:9fe8caff6142 | 278 | } |
ryought | 6:9fe8caff6142 | 279 | |
ryought | 6:9fe8caff6142 | 280 | |
ryought | 6:9fe8caff6142 | 281 | //if already_count is over 0, the ID is ALREADY REGISTERED ID. |
ryought | 6:9fe8caff6142 | 282 | if (already_count == 0) { |
ryought | 6:9fe8caff6142 | 283 | //registering |
ryought | 6:9fe8caff6142 | 284 | //first, add "\n" to the end of NEW_USER'S_ID(hexid) (hexid + "\n" = regid) |
ryought | 6:9fe8caff6142 | 285 | sprintf(regid, "%s\n", hexid); |
ryought | 6:9fe8caff6142 | 286 | int ret = fputs(regid, fp); //writing to SD |
ryought | 6:9fe8caff6142 | 287 | if(ret == EOF) { |
ryought | 6:9fe8caff6142 | 288 | error("Userid writing error"); |
ryought | 6:9fe8caff6142 | 289 | auth_ng = 1; |
ryought | 6:9fe8caff6142 | 290 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 291 | wait(2); |
ryought | 6:9fe8caff6142 | 292 | } else { |
ryought | 6:9fe8caff6142 | 293 | pc.printf("Registering was completed\n"); |
ryought | 6:9fe8caff6142 | 294 | auth_ok = 1; |
ryought | 6:9fe8caff6142 | 295 | auth_ng = 0; |
ryought | 6:9fe8caff6142 | 296 | wait(2); |
ryought | 6:9fe8caff6142 | 297 | } |
ryought | 6:9fe8caff6142 | 298 | } else if(already_count > 0) { |
ryought | 6:9fe8caff6142 | 299 | pc.printf("Sorry, this is already registered ID\n"); |
ryought | 6:9fe8caff6142 | 300 | auth_ng = 1; |
ryought | 6:9fe8caff6142 | 301 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 302 | wait(2); |
ryought | 6:9fe8caff6142 | 303 | } else { |
ryought | 6:9fe8caff6142 | 304 | pc.printf("Error\n"); |
ryought | 6:9fe8caff6142 | 305 | auth_ng = 1; |
ryought | 6:9fe8caff6142 | 306 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 307 | wait(2); |
ryought | 6:9fe8caff6142 | 308 | } |
ryought | 6:9fe8caff6142 | 309 | |
ryought | 6:9fe8caff6142 | 310 | fclose(fp); |
ryought | 6:9fe8caff6142 | 311 | |
ryought | 6:9fe8caff6142 | 312 | |
ryought | 6:9fe8caff6142 | 313 | //read userid from SD and setup userid list again. |
ryought | 6:9fe8caff6142 | 314 | logSetup(); |
ryought | 6:9fe8caff6142 | 315 | //printing userid again. |
ryought | 6:9fe8caff6142 | 316 | for (int xx = 0; xx <= MAX_USER_NUMBER; xx++) { |
ryought | 6:9fe8caff6142 | 317 | pc.printf("-%s \n", userid[xx]); |
ryought | 6:9fe8caff6142 | 318 | } |
ryought | 6:9fe8caff6142 | 319 | |
ryought | 6:9fe8caff6142 | 320 | |
ryought | 6:9fe8caff6142 | 321 | //if registering NEW_USER's_ID was completed successfully... |
ryought | 6:9fe8caff6142 | 322 | // reg_button_flag : down |
ryought | 6:9fe8caff6142 | 323 | reg_button = false; |
ryought | 6:9fe8caff6142 | 324 | int_led = 0; |
ryought | 6:9fe8caff6142 | 325 | |
ryought | 6:9fe8caff6142 | 326 | } else { |
ryought | 6:9fe8caff6142 | 327 | //first id �� master id... restart. |
ryought | 6:9fe8caff6142 | 328 | pc.printf(">Auth Failed\n"); |
ryought | 6:9fe8caff6142 | 329 | pc.printf("Sorry, you aren't allowed to use register mode\n"); |
ryought | 6:9fe8caff6142 | 330 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 331 | auth_ng = 1; |
ryought | 6:9fe8caff6142 | 332 | wait(2); |
ryought | 6:9fe8caff6142 | 333 | |
ryought | 6:9fe8caff6142 | 334 | } |
ryought | 6:9fe8caff6142 | 335 | regready = 0; |
ryought | 6:9fe8caff6142 | 336 | } |
ryought | 6:9fe8caff6142 | 337 | auth_ok = 0; |
ryought | 6:9fe8caff6142 | 338 | auth_ng = 0; |
ryought | 6:9fe8caff6142 | 339 | felicaready = 0; |
ryought | 5:4242d287f7f4 | 340 | } |
ryought | 6:9fe8caff6142 | 341 | } |
ryought | 5:4242d287f7f4 | 342 | |
ryought | 6:9fe8caff6142 | 343 | //used by Felica |
ryought | 6:9fe8caff6142 | 344 | char *itoh(uint8_t val, char *ptr) { |
ryought | 6:9fe8caff6142 | 345 | *--ptr = HEXSTRING[(val % 16)]; // (val & 0x0f) |
ryought | 6:9fe8caff6142 | 346 | val /= 16; // val = val >> 4; |
ryought | 6:9fe8caff6142 | 347 | *--ptr = HEXSTRING[(val % 16)]; // (val & 0x0f) |
ryought | 6:9fe8caff6142 | 348 | return(ptr); |
ryought | 6:9fe8caff6142 | 349 | } |