a writer program for "DA14580" BLE chip. use LocalFileSystem, so only for mbed-LPC1768/mbed-LPC11U24
main.cpp@0:08d27693851c, 2014-10-22 (annotated)
- Committer:
- k4zuki
- Date:
- Wed Oct 22 09:58:22 2014 +0000
- Revision:
- 0:08d27693851c
- Child:
- 1:26c972ffac64
first version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
k4zuki | 0:08d27693851c | 1 | #include "mbed.h" |
k4zuki | 0:08d27693851c | 2 | |
k4zuki | 0:08d27693851c | 3 | DigitalOut myled(LED1); |
k4zuki | 0:08d27693851c | 4 | |
k4zuki | 0:08d27693851c | 5 | Serial pc(USBTX,USBRX); |
k4zuki | 0:08d27693851c | 6 | Serial ble(p28,p27); |
k4zuki | 0:08d27693851c | 7 | |
k4zuki | 0:08d27693851c | 8 | LocalFileSystem local( "local" ); |
k4zuki | 0:08d27693851c | 9 | |
k4zuki | 0:08d27693851c | 10 | #define SOURCE_FILE "/local/_bin" |
k4zuki | 0:08d27693851c | 11 | |
k4zuki | 0:08d27693851c | 12 | int file_size( FILE *fp ); |
k4zuki | 0:08d27693851c | 13 | |
k4zuki | 0:08d27693851c | 14 | int main() |
k4zuki | 0:08d27693851c | 15 | { |
k4zuki | 0:08d27693851c | 16 | char recieve; |
k4zuki | 0:08d27693851c | 17 | char read; |
k4zuki | 0:08d27693851c | 18 | int filesize=0; |
k4zuki | 0:08d27693851c | 19 | FILE* fp; |
k4zuki | 0:08d27693851c | 20 | ble.baud(57600); |
k4zuki | 0:08d27693851c | 21 | int crc=0x00; |
k4zuki | 0:08d27693851c | 22 | |
k4zuki | 0:08d27693851c | 23 | if ( NULL == (fp = fopen( SOURCE_FILE, "rb" )) ) { |
k4zuki | 0:08d27693851c | 24 | exit(1); |
k4zuki | 0:08d27693851c | 25 | // return ( ERROR_AT_FILE_OPEN ); |
k4zuki | 0:08d27693851c | 26 | }else{ |
k4zuki | 0:08d27693851c | 27 | filesize=file_size(fp); |
k4zuki | 0:08d27693851c | 28 | pc.printf("0x%04X\n\r",filesize); |
k4zuki | 0:08d27693851c | 29 | } |
k4zuki | 0:08d27693851c | 30 | |
k4zuki | 0:08d27693851c | 31 | while(1) { |
k4zuki | 0:08d27693851c | 32 | recieve=ble.getc(); |
k4zuki | 0:08d27693851c | 33 | if(recieve == 0x02) { |
k4zuki | 0:08d27693851c | 34 | ble.putc(0x01); |
k4zuki | 0:08d27693851c | 35 | pc.putc('!'); |
k4zuki | 0:08d27693851c | 36 | break; |
k4zuki | 0:08d27693851c | 37 | } |
k4zuki | 0:08d27693851c | 38 | } |
k4zuki | 0:08d27693851c | 39 | ble.putc(filesize&0xff); |
k4zuki | 0:08d27693851c | 40 | ble.putc( (filesize>>8)&0xff); |
k4zuki | 0:08d27693851c | 41 | while(1) { |
k4zuki | 0:08d27693851c | 42 | recieve=ble.getc(); |
k4zuki | 0:08d27693851c | 43 | if(recieve == 0x06) { |
k4zuki | 0:08d27693851c | 44 | pc.printf("ok!\n\r"); |
k4zuki | 0:08d27693851c | 45 | // ble.putc(0x01); |
k4zuki | 0:08d27693851c | 46 | break; |
k4zuki | 0:08d27693851c | 47 | } |
k4zuki | 0:08d27693851c | 48 | } |
k4zuki | 0:08d27693851c | 49 | for(int i=0;i<filesize;i++){ |
k4zuki | 0:08d27693851c | 50 | read=getc(fp); |
k4zuki | 0:08d27693851c | 51 | ble.putc(read); |
k4zuki | 0:08d27693851c | 52 | crc=crc^read; |
k4zuki | 0:08d27693851c | 53 | if((i%16)==0){ |
k4zuki | 0:08d27693851c | 54 | pc.printf("\n\r"); |
k4zuki | 0:08d27693851c | 55 | } |
k4zuki | 0:08d27693851c | 56 | pc.printf("%02X ",read); |
k4zuki | 0:08d27693851c | 57 | } |
k4zuki | 0:08d27693851c | 58 | pc.printf("\n\r0x%02X ",crc); |
k4zuki | 0:08d27693851c | 59 | while(1) { |
k4zuki | 0:08d27693851c | 60 | recieve=ble.getc(); |
k4zuki | 0:08d27693851c | 61 | if(recieve == crc) { |
k4zuki | 0:08d27693851c | 62 | ble.putc(0x06); |
k4zuki | 0:08d27693851c | 63 | pc.printf("-=-=DONE=-=-\n\r"); |
k4zuki | 0:08d27693851c | 64 | break; |
k4zuki | 0:08d27693851c | 65 | } |
k4zuki | 0:08d27693851c | 66 | } |
k4zuki | 0:08d27693851c | 67 | fp.close(); |
k4zuki | 0:08d27693851c | 68 | while(1) { |
k4zuki | 0:08d27693851c | 69 | myled = 1; |
k4zuki | 0:08d27693851c | 70 | wait(0.2); |
k4zuki | 0:08d27693851c | 71 | myled = 0; |
k4zuki | 0:08d27693851c | 72 | wait(0.2); |
k4zuki | 0:08d27693851c | 73 | } |
k4zuki | 0:08d27693851c | 74 | } |
k4zuki | 0:08d27693851c | 75 | |
k4zuki | 0:08d27693851c | 76 | int file_size( FILE *fp ) |
k4zuki | 0:08d27693851c | 77 | { |
k4zuki | 0:08d27693851c | 78 | int size; |
k4zuki | 0:08d27693851c | 79 | |
k4zuki | 0:08d27693851c | 80 | fseek( fp, 0, SEEK_END ); // seek to end of file |
k4zuki | 0:08d27693851c | 81 | size = ftell( fp ); // get current file pointer |
k4zuki | 0:08d27693851c | 82 | fseek( fp, 0, SEEK_SET ); // seek back to beginning of file |
k4zuki | 0:08d27693851c | 83 | |
k4zuki | 0:08d27693851c | 84 | return size; |
k4zuki | 0:08d27693851c | 85 | } |