Time Stamp using fingerprint with WIZwiki-W7500.
Dependencies: GT511C3 NTPClient SDFileSystem WIZnetInterface mbed-src
Fork of GT511C3_HelloWorld_WIZwiki-W7500 by
GT511C3.cpp@0:b11b455d4997, 2014-01-03 (annotated)
- Committer:
- tosihisa
- Date:
- Fri Jan 03 06:20:34 2014 +0000
- Revision:
- 0:b11b455d4997
- Child:
- 2:34a647292050
1st Commit.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| tosihisa | 0:b11b455d4997 | 1 | |
| tosihisa | 0:b11b455d4997 | 2 | #include "mbed.h" |
| tosihisa | 0:b11b455d4997 | 3 | #include "GT511C3.h" |
| tosihisa | 0:b11b455d4997 | 4 | |
| tosihisa | 0:b11b455d4997 | 5 | #define SET_AND_SUMADD(idx,val) sendbuf[idx]=((unsigned char)(val));sum += sendbuf[idx] |
| tosihisa | 0:b11b455d4997 | 6 | |
| tosihisa | 0:b11b455d4997 | 7 | int GT511C3::Init(void) |
| tosihisa | 0:b11b455d4997 | 8 | { |
| tosihisa | 0:b11b455d4997 | 9 | baud(9600); |
| tosihisa | 0:b11b455d4997 | 10 | ClearLine(); |
| tosihisa | 0:b11b455d4997 | 11 | return 0; |
| tosihisa | 0:b11b455d4997 | 12 | } |
| tosihisa | 0:b11b455d4997 | 13 | |
| tosihisa | 0:b11b455d4997 | 14 | int GT511C3::SendCommand(unsigned long Parameter,unsigned short Command) |
| tosihisa | 0:b11b455d4997 | 15 | { |
| tosihisa | 0:b11b455d4997 | 16 | unsigned char sendbuf[12]; |
| tosihisa | 0:b11b455d4997 | 17 | unsigned short sum = 0; |
| tosihisa | 0:b11b455d4997 | 18 | int idx = 0; |
| tosihisa | 0:b11b455d4997 | 19 | int i; |
| tosihisa | 0:b11b455d4997 | 20 | |
| tosihisa | 0:b11b455d4997 | 21 | SET_AND_SUMADD(idx,0x55); idx++; |
| tosihisa | 0:b11b455d4997 | 22 | SET_AND_SUMADD(idx,0xAA); idx++; |
| tosihisa | 0:b11b455d4997 | 23 | SET_AND_SUMADD(idx,0x01); idx++; |
| tosihisa | 0:b11b455d4997 | 24 | SET_AND_SUMADD(idx,0x00); idx++; |
| tosihisa | 0:b11b455d4997 | 25 | SET_AND_SUMADD(idx,Parameter & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 26 | SET_AND_SUMADD(idx,(Parameter >> 8) & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 27 | SET_AND_SUMADD(idx,(Parameter >> 16) & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 28 | SET_AND_SUMADD(idx,(Parameter >> 24) & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 29 | SET_AND_SUMADD(idx,Command & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 30 | SET_AND_SUMADD(idx,(Command >> 8) & 0xff); idx++; |
| tosihisa | 0:b11b455d4997 | 31 | sendbuf[idx] = sum & 0xff; idx++; |
| tosihisa | 0:b11b455d4997 | 32 | sendbuf[idx] = (sum >> 8) & 0xff; idx++; |
| tosihisa | 0:b11b455d4997 | 33 | |
| tosihisa | 0:b11b455d4997 | 34 | for(i = 0;i < idx;i++){ |
| tosihisa | 0:b11b455d4997 | 35 | while(!writeable()); |
| tosihisa | 0:b11b455d4997 | 36 | putc(sendbuf[i]); |
| tosihisa | 0:b11b455d4997 | 37 | } |
| tosihisa | 0:b11b455d4997 | 38 | return idx; |
| tosihisa | 0:b11b455d4997 | 39 | } |
| tosihisa | 0:b11b455d4997 | 40 | |
| tosihisa | 0:b11b455d4997 | 41 | int GT511C3::RecvResponse(unsigned long *Parameter,unsigned short *Response) |
| tosihisa | 0:b11b455d4997 | 42 | { |
| tosihisa | 0:b11b455d4997 | 43 | unsigned char buf[12]; |
| tosihisa | 0:b11b455d4997 | 44 | unsigned short sum = 0; |
| tosihisa | 0:b11b455d4997 | 45 | int i; |
| tosihisa | 0:b11b455d4997 | 46 | |
| tosihisa | 0:b11b455d4997 | 47 | *Parameter = 0; |
| tosihisa | 0:b11b455d4997 | 48 | *Response = CMD_Nack; |
| tosihisa | 0:b11b455d4997 | 49 | |
| tosihisa | 0:b11b455d4997 | 50 | for(i = 0;i < sizeof(buf);i++){ |
| tosihisa | 0:b11b455d4997 | 51 | while(!readable()); |
| tosihisa | 0:b11b455d4997 | 52 | buf[i] = getc(); |
| tosihisa | 0:b11b455d4997 | 53 | if(i < 9){ |
| tosihisa | 0:b11b455d4997 | 54 | sum += buf[i]; |
| tosihisa | 0:b11b455d4997 | 55 | } |
| tosihisa | 0:b11b455d4997 | 56 | if((i == 0) && (buf[i] != 0x55)) |
| tosihisa | 0:b11b455d4997 | 57 | return -1; |
| tosihisa | 0:b11b455d4997 | 58 | if((i == 1) && (buf[i] != 0xAA)) |
| tosihisa | 0:b11b455d4997 | 59 | return -1; |
| tosihisa | 0:b11b455d4997 | 60 | } |
| tosihisa | 0:b11b455d4997 | 61 | if(buf[10] != (sum & 0xff)) |
| tosihisa | 0:b11b455d4997 | 62 | return -2; |
| tosihisa | 0:b11b455d4997 | 63 | if(buf[11] != ((sum >> 8) & 0xff)) |
| tosihisa | 0:b11b455d4997 | 64 | return -2; |
| tosihisa | 0:b11b455d4997 | 65 | |
| tosihisa | 0:b11b455d4997 | 66 | *Parameter = buf[7]; |
| tosihisa | 0:b11b455d4997 | 67 | *Parameter = (*Parameter << 8) | buf[6]; |
| tosihisa | 0:b11b455d4997 | 68 | *Parameter = (*Parameter << 8) | buf[5]; |
| tosihisa | 0:b11b455d4997 | 69 | *Parameter = (*Parameter << 8) | buf[4]; |
| tosihisa | 0:b11b455d4997 | 70 | |
| tosihisa | 0:b11b455d4997 | 71 | *Response = buf[9]; |
| tosihisa | 0:b11b455d4997 | 72 | *Response = (*Response << 8) | buf[8]; |
| tosihisa | 0:b11b455d4997 | 73 | |
| tosihisa | 0:b11b455d4997 | 74 | return 0; |
| tosihisa | 0:b11b455d4997 | 75 | } |
| tosihisa | 0:b11b455d4997 | 76 | |
| tosihisa | 0:b11b455d4997 | 77 | int GT511C3::ClearLine(void) |
| tosihisa | 0:b11b455d4997 | 78 | { |
| tosihisa | 0:b11b455d4997 | 79 | while(readable()){ |
| tosihisa | 0:b11b455d4997 | 80 | (void)getc(); |
| tosihisa | 0:b11b455d4997 | 81 | } |
| tosihisa | 0:b11b455d4997 | 82 | return 0; |
| tosihisa | 0:b11b455d4997 | 83 | } |
| tosihisa | 0:b11b455d4997 | 84 |
