DA14580 Bluetooth Smart IC writer library

Dependents:   11u35_usbLocalFilesystem

Committer:
k4zuki
Date:
Wed Aug 19 14:41:13 2015 +0000
Revision:
0:3bdbabca8a09
Child:
1:b2d4a4e2f362
DA14580 Bluetooth Smart IC writer library: first version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k4zuki 0:3bdbabca8a09 1 /**
k4zuki 0:3bdbabca8a09 2 * @file DA1458X.h
k4zuki 0:3bdbabca8a09 3 * @brief DA1458X writer
k4zuki 0:3bdbabca8a09 4 **/
k4zuki 0:3bdbabca8a09 5 #ifndef DA1458X_H
k4zuki 0:3bdbabca8a09 6 #define DA1458X_H
k4zuki 0:3bdbabca8a09 7
k4zuki 0:3bdbabca8a09 8 #include "mbed.h"
k4zuki 0:3bdbabca8a09 9
k4zuki 0:3bdbabca8a09 10 #define LOADER_FILE "/local/loader.bin"
k4zuki 0:3bdbabca8a09 11 #define TARGET_FILE "/local/target.bin"
k4zuki 0:3bdbabca8a09 12
k4zuki 0:3bdbabca8a09 13 /** \class DA14580
k4zuki 0:3bdbabca8a09 14 * \brief mbed library for Dialog Semiconductor DA14580 Bluetooth LE chip
k4zuki 0:3bdbabca8a09 15 *
k4zuki 0:3bdbabca8a09 16 * Example:
k4zuki 0:3bdbabca8a09 17 * @code
k4zuki 0:3bdbabca8a09 18 * #include "mbed.h"
k4zuki 0:3bdbabca8a09 19 * #include "DA14580.h"
k4zuki 0:3bdbabca8a09 20 *
k4zuki 0:3bdbabca8a09 21 * DA14580 BLE(P0_18, P0_19, P0_1);
k4zuki 0:3bdbabca8a09 22 * Serial pc(USBTX, USBRX);
k4zuki 0:3bdbabca8a09 23 *
k4zuki 0:3bdbabca8a09 24 * int main()
k4zuki 0:3bdbabca8a09 25 * {
k4zuki 0:3bdbabca8a09 26 * int result=0;
k4zuki 0:3bdbabca8a09 27 * pc.baud(115200);
k4zuki 0:3bdbabca8a09 28 *
k4zuki 0:3bdbabca8a09 29 * wait_ms(1);
k4zuki 0:3bdbabca8a09 30 * fp = fopen( SOURCE_FILE, "rb" );
k4zuki 0:3bdbabca8a09 31 * result = BLE.load(fp);
k4zuki 0:3bdbabca8a09 32 * fclose(fp);
k4zuki 0:3bdbabca8a09 33 #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
k4zuki 0:3bdbabca8a09 34 * free(fp);
k4zuki 0:3bdbabca8a09 35 #endif
k4zuki 0:3bdbabca8a09 36 * pc.printf("Result = %d \n\r",&result);
k4zuki 0:3bdbabca8a09 37 * }
k4zuki 0:3bdbabca8a09 38 * @endcode
k4zuki 0:3bdbabca8a09 39 */
k4zuki 0:3bdbabca8a09 40
k4zuki 0:3bdbabca8a09 41 enum XMODEM_CONST {
k4zuki 0:3bdbabca8a09 42 SOH = (0x01),
k4zuki 0:3bdbabca8a09 43 STX = (0x02),
k4zuki 0:3bdbabca8a09 44 EOT = (0x04),
k4zuki 0:3bdbabca8a09 45 ACK = (0x06),
k4zuki 0:3bdbabca8a09 46 DLE = (0x10),
k4zuki 0:3bdbabca8a09 47 NAK = (0x15),
k4zuki 0:3bdbabca8a09 48 CAN = (0x18),
k4zuki 0:3bdbabca8a09 49 };
k4zuki 0:3bdbabca8a09 50
k4zuki 0:3bdbabca8a09 51 enum DA14580_STATUS {
k4zuki 0:3bdbabca8a09 52 SUCCESS = '0',
k4zuki 0:3bdbabca8a09 53 E_NOT_CONNECTED = '1',
k4zuki 0:3bdbabca8a09 54 E_FILE_NOT_FOUND = '2',
k4zuki 0:3bdbabca8a09 55 E_TIMEOUT_STX = '3',
k4zuki 0:3bdbabca8a09 56 E_ACK_NOT_RETURNED = '4',
k4zuki 0:3bdbabca8a09 57 E_CRC_MISMATCH = '5'
k4zuki 0:3bdbabca8a09 58 };
k4zuki 0:3bdbabca8a09 59
k4zuki 0:3bdbabca8a09 60 class DA14580
k4zuki 0:3bdbabca8a09 61 {
k4zuki 0:3bdbabca8a09 62 public:
k4zuki 0:3bdbabca8a09 63 DA14580( PinName TX, PinName RX, PinName RESET );
k4zuki 0:3bdbabca8a09 64 DA14580( RawSerial &ble, PinName RESET );
k4zuki 0:3bdbabca8a09 65 ~DA14580();
k4zuki 0:3bdbabca8a09 66
k4zuki 0:3bdbabca8a09 67 void init();
k4zuki 0:3bdbabca8a09 68 int load();
k4zuki 0:3bdbabca8a09 69 int file_size( FILE *fp ); // copied from ika_shouyu_poppoyaki
k4zuki 0:3bdbabca8a09 70 RawSerial _ble;
k4zuki 0:3bdbabca8a09 71
k4zuki 0:3bdbabca8a09 72 private:
k4zuki 0:3bdbabca8a09 73 uint8_t _recieve;
k4zuki 0:3bdbabca8a09 74 uint8_t _read;
k4zuki 0:3bdbabca8a09 75 int _filesize;
k4zuki 0:3bdbabca8a09 76 int _timeout;
k4zuki 0:3bdbabca8a09 77 int _status;
k4zuki 0:3bdbabca8a09 78 FILE* _fp;
k4zuki 0:3bdbabca8a09 79 int _crc;
k4zuki 0:3bdbabca8a09 80 DigitalOut _reset;
k4zuki 0:3bdbabca8a09 81 };
k4zuki 0:3bdbabca8a09 82
k4zuki 0:3bdbabca8a09 83 #endif //DA1458X_H