a writer program for "DA14580" BLE chip. use LocalFileSystem, so only for mbed-LPC1768/mbed-LPC11U24

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }