Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
BLE/src/ble_main.cpp@259:341f04be325e, 2016-10-24 (annotated)
- Committer:
- davidjhoward
- Date:
- Mon Oct 24 21:08:15 2016 +0000
- Revision:
- 259:341f04be325e
- Parent:
- 249:68ed571e0002
- Parent:
- 258:150f5a76162d
Commit updated BLE module and add new messages
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| davidjhoward | 258:150f5a76162d | 1 | /** |
| davidjhoward | 258:150f5a76162d | 2 | ****************************************************************************** |
| davidjhoward | 258:150f5a76162d | 3 | * @file ble_uart.cpp |
| davidjhoward | 258:150f5a76162d | 4 | * @author Happiesstminds Firmware Team |
| davidjhoward | 258:150f5a76162d | 5 | * @version v1.0 |
| davidjhoward | 258:150f5a76162d | 6 | * @date 4-Oct-2016 |
| davidjhoward | 258:150f5a76162d | 7 | * @brief |
| davidjhoward | 258:150f5a76162d | 8 | * |
| davidjhoward | 258:150f5a76162d | 9 | ****************************************************************************** |
| davidjhoward | 258:150f5a76162d | 10 | * @attention |
| davidjhoward | 258:150f5a76162d | 11 | * |
| davidjhoward | 258:150f5a76162d | 12 | * |
| davidjhoward | 258:150f5a76162d | 13 | ****************************************************************************** |
| davidjhoward | 258:150f5a76162d | 14 | */ |
| davidjhoward | 258:150f5a76162d | 15 | |
| davidjhoward | 258:150f5a76162d | 16 | /******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 17 | /* Include Files*/ |
| davidjhoward | 258:150f5a76162d | 18 | /******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 19 | #include "mbed.h" |
| davidjhoward | 258:150f5a76162d | 20 | #include "ble_main.h" |
| davidjhoward | 258:150f5a76162d | 21 | #include "ble_spi.h" |
| davidjhoward | 258:150f5a76162d | 22 | #include "ble_msg_handler.h" |
| davidjhoward | 258:150f5a76162d | 23 | #include "ble_init.h" |
| davidjhoward | 258:150f5a76162d | 24 | |
| davidjhoward | 258:150f5a76162d | 25 | #define BLE_DEVICE_NAME "Ecolab" |
| davidjhoward | 258:150f5a76162d | 26 | |
| davidjhoward | 258:150f5a76162d | 27 | /******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 28 | /* Global Functions */ |
| davidjhoward | 258:150f5a76162d | 29 | /******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 30 | BLE_INIT BLE_INIT; |
| davidjhoward | 258:150f5a76162d | 31 | extern volatile bool isDeviceConnected; |
| davidjhoward | 258:150f5a76162d | 32 | |
| davidjhoward | 258:150f5a76162d | 33 | /******************************************************************************* |
| davidjhoward | 258:150f5a76162d | 34 | * Function: ConfigureBLEDevice() |
| davidjhoward | 258:150f5a76162d | 35 | * Description: Initialise and configure BLE |
| davidjhoward | 258:150f5a76162d | 36 | * |
| davidjhoward | 258:150f5a76162d | 37 | * @param none |
| davidjhoward | 258:150f5a76162d | 38 | * @return none |
| davidjhoward | 258:150f5a76162d | 39 | ******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 40 | |
| davidjhoward | 258:150f5a76162d | 41 | uint8_t BLE_FILE :: ConfigureBLEDevice(void) |
| davidjhoward | 258:150f5a76162d | 42 | { |
| davidjhoward | 258:150f5a76162d | 43 | |
| davidjhoward | 258:150f5a76162d | 44 | uint8_t status = SUCCESS; |
| davidjhoward | 258:150f5a76162d | 45 | BLE_INIT.InitBLEModule(); //initialising BLE SPI GPIO etc. |
| davidjhoward | 258:150f5a76162d | 46 | BLE_INIT.SetDeviceName(); //setting device name |
| davidjhoward | 258:150f5a76162d | 47 | BLE_INIT.SetAdvertisingData(); //setting advdata |
| davidjhoward | 258:150f5a76162d | 48 | BLE_INIT.SendInitBleCommand((const uint8_t *) BLE_DEVICE_NAME); //initializing BLE |
| davidjhoward | 258:150f5a76162d | 49 | // StartAdvertisingData(); //starting adv data |
| davidjhoward | 258:150f5a76162d | 50 | return status; |
| davidjhoward | 258:150f5a76162d | 51 | } |
| davidjhoward | 258:150f5a76162d | 52 | |
| davidjhoward | 258:150f5a76162d | 53 | /***************************************************************************** |
| davidjhoward | 258:150f5a76162d | 54 | * Function: GetBleConnectionState() |
| davidjhoward | 258:150f5a76162d | 55 | * Description: check whether device is connected or not |
| davidjhoward | 258:150f5a76162d | 56 | * |
| davidjhoward | 258:150f5a76162d | 57 | * @param none |
| davidjhoward | 258:150f5a76162d | 58 | * @return uint8_t status(connected or disconnected) |
| davidjhoward | 258:150f5a76162d | 59 | *****************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 60 | |
| davidjhoward | 258:150f5a76162d | 61 | bool BLE_FILE :: GetBleConnectionState(void) |
| davidjhoward | 258:150f5a76162d | 62 | { |
| davidjhoward | 258:150f5a76162d | 63 | return isDeviceConnected; |
| davidjhoward | 258:150f5a76162d | 64 | } |
| davidjhoward | 258:150f5a76162d | 65 | |
| davidjhoward | 258:150f5a76162d | 66 | /***************************************************************************** |
| davidjhoward | 258:150f5a76162d | 67 | * Function: SendSOF() |
| davidjhoward | 258:150f5a76162d | 68 | * Description: This function send Start of File transfer frame |
| davidjhoward | 258:150f5a76162d | 69 | * |
| davidjhoward | 258:150f5a76162d | 70 | * @param tx_buf |
| davidjhoward | 258:150f5a76162d | 71 | * @param data length |
| davidjhoward | 258:150f5a76162d | 72 | * @return none |
| davidjhoward | 258:150f5a76162d | 73 | *****************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 74 | static uint8_t SendSOF(uint8_t *tx_buf, uint8_t len) |
| davidjhoward | 258:150f5a76162d | 75 | { |
| davidjhoward | 258:150f5a76162d | 76 | |
| davidjhoward | 258:150f5a76162d | 77 | uint8_t packet[100]; |
| davidjhoward | 258:150f5a76162d | 78 | uint8_t status = SUCCESS; |
| davidjhoward | 258:150f5a76162d | 79 | uint8_t packetlength; |
| davidjhoward | 258:150f5a76162d | 80 | // uint8_t array_length[10]; |
| davidjhoward | 258:150f5a76162d | 81 | packetlength = len + 4; |
| davidjhoward | 258:150f5a76162d | 82 | |
| davidjhoward | 258:150f5a76162d | 83 | packet[0]= BLE_SOF_CMD; |
| davidjhoward | 258:150f5a76162d | 84 | packet[1]= BLE_START_OF_FILE; |
| davidjhoward | 258:150f5a76162d | 85 | packet[2]= len; |
| davidjhoward | 258:150f5a76162d | 86 | |
| davidjhoward | 258:150f5a76162d | 87 | memcpy(&packet[3], tx_buf, len); |
| davidjhoward | 258:150f5a76162d | 88 | packet[len + 3]= BLE_EOT_CMD; |
| davidjhoward | 258:150f5a76162d | 89 | |
| davidjhoward | 258:150f5a76162d | 90 | WriteSpiData(packet, packetlength); |
| davidjhoward | 258:150f5a76162d | 91 | return status; |
| davidjhoward | 258:150f5a76162d | 92 | } |
| davidjhoward | 258:150f5a76162d | 93 | /***************************************************************************** |
| davidjhoward | 258:150f5a76162d | 94 | * Function: SendEOF() |
| davidjhoward | 258:150f5a76162d | 95 | * Description: This function send End of File transfer frame |
| davidjhoward | 258:150f5a76162d | 96 | * |
| davidjhoward | 258:150f5a76162d | 97 | * @param none |
| davidjhoward | 258:150f5a76162d | 98 | * @return none |
| davidjhoward | 258:150f5a76162d | 99 | *****************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 100 | static void SendEOF(void) |
| davidjhoward | 258:150f5a76162d | 101 | { |
| davidjhoward | 258:150f5a76162d | 102 | uint8_t packet[24]; |
| davidjhoward | 258:150f5a76162d | 103 | |
| davidjhoward | 258:150f5a76162d | 104 | packet[0] =BLE_SOF_CMD; |
| davidjhoward | 258:150f5a76162d | 105 | packet[1] =BLE_END_OF_FILE; |
| davidjhoward | 258:150f5a76162d | 106 | packet[2] =20; |
| davidjhoward | 258:150f5a76162d | 107 | packet[3] =0x45; |
| davidjhoward | 258:150f5a76162d | 108 | packet[4] =0x4f; |
| davidjhoward | 258:150f5a76162d | 109 | packet[5] =0x46; |
| davidjhoward | 258:150f5a76162d | 110 | memset(&packet[6], 0x45, 17); |
| davidjhoward | 258:150f5a76162d | 111 | packet[23]=BLE_EOT_CMD; |
| davidjhoward | 258:150f5a76162d | 112 | WriteSpiData(packet,24); |
| davidjhoward | 258:150f5a76162d | 113 | } |
| davidjhoward | 258:150f5a76162d | 114 | /***************************************************************************** |
| davidjhoward | 258:150f5a76162d | 115 | * Function: GetFileName() |
| davidjhoward | 258:150f5a76162d | 116 | * Description: This function extract File name |
| davidjhoward | 258:150f5a76162d | 117 | * |
| davidjhoward | 258:150f5a76162d | 118 | * @param json file data |
| davidjhoward | 258:150f5a76162d | 119 | * @return none |
| davidjhoward | 258:150f5a76162d | 120 | *****************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 121 | void GetFileName(uint8_t json_file) |
| davidjhoward | 258:150f5a76162d | 122 | { |
| davidjhoward | 258:150f5a76162d | 123 | //TODO |
| davidjhoward | 258:150f5a76162d | 124 | } |
| davidjhoward | 258:150f5a76162d | 125 | |
| davidjhoward | 258:150f5a76162d | 126 | /***************************************************************************** |
| davidjhoward | 258:150f5a76162d | 127 | * Function: SendFile() |
| davidjhoward | 258:150f5a76162d | 128 | * Description: This function receive the json file data and transmit |
| davidjhoward | 258:150f5a76162d | 129 | data over BLE |
| davidjhoward | 258:150f5a76162d | 130 | * |
| davidjhoward | 258:150f5a76162d | 131 | * @param json file data |
| davidjhoward | 258:150f5a76162d | 132 | * @param data length |
| davidjhoward | 258:150f5a76162d | 133 | * @return none |
| davidjhoward | 258:150f5a76162d | 134 | *****************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 135 | void BLE_FILE :: SendFile(uint8_t* json_file,uint8_t len) |
| davidjhoward | 258:150f5a76162d | 136 | { |
| davidjhoward | 258:150f5a76162d | 137 | uint8_t num_writes,rem_bytes,start_index =0; |
| davidjhoward | 258:150f5a76162d | 138 | // GetFileName(); //TODO |
| davidjhoward | 258:150f5a76162d | 139 | /*added for testing purpose.Need to be removed*/ |
| davidjhoward | 258:150f5a76162d | 140 | uint8_t file_name[20]; |
| davidjhoward | 258:150f5a76162d | 141 | file_name[0] =0x53; |
| davidjhoward | 258:150f5a76162d | 142 | file_name[1] =0x4f; |
| davidjhoward | 258:150f5a76162d | 143 | file_name[2] =0x46; |
| davidjhoward | 258:150f5a76162d | 144 | memset(&file_name[3],0x5a,17); |
| davidjhoward | 258:150f5a76162d | 145 | |
| davidjhoward | 258:150f5a76162d | 146 | /*TODO |
| davidjhoward | 258:150f5a76162d | 147 | SOF consist of information about packets.Now sending a string for testing |
| davidjhoward | 258:150f5a76162d | 148 | with mobile app |
| davidjhoward | 258:150f5a76162d | 149 | */ |
| davidjhoward | 258:150f5a76162d | 150 | SendSOF(file_name,16); |
| davidjhoward | 258:150f5a76162d | 151 | |
| davidjhoward | 258:150f5a76162d | 152 | num_writes = ((len)/MAX_PAYLOAD_BYTES); |
| davidjhoward | 258:150f5a76162d | 153 | rem_bytes =((len)%MAX_PAYLOAD_BYTES); |
| davidjhoward | 258:150f5a76162d | 154 | |
| davidjhoward | 258:150f5a76162d | 155 | for(int i=0;i<(num_writes);i++) |
| davidjhoward | 258:150f5a76162d | 156 | { |
| davidjhoward | 258:150f5a76162d | 157 | BLE_INIT.SendBleData(&json_file[start_index], MAX_PAYLOAD_BYTES); |
| davidjhoward | 258:150f5a76162d | 158 | start_index= start_index+MAX_PAYLOAD_BYTES; |
| davidjhoward | 258:150f5a76162d | 159 | } |
| davidjhoward | 258:150f5a76162d | 160 | if(rem_bytes) |
| davidjhoward | 258:150f5a76162d | 161 | { |
| davidjhoward | 258:150f5a76162d | 162 | BLE_INIT.SendBleData(&json_file[start_index], rem_bytes); |
| davidjhoward | 258:150f5a76162d | 163 | } |
| davidjhoward | 258:150f5a76162d | 164 | |
| davidjhoward | 258:150f5a76162d | 165 | /*TODO |
| davidjhoward | 258:150f5a76162d | 166 | EOF indication that packets transfer compleated. |
| davidjhoward | 258:150f5a76162d | 167 | This information can be passed in SOF. */ |
| davidjhoward | 258:150f5a76162d | 168 | // SendEOF(); |
| davidjhoward | 258:150f5a76162d | 169 | |
| davidjhoward | 258:150f5a76162d | 170 | } |
| davidjhoward | 258:150f5a76162d | 171 | |
| davidjhoward | 258:150f5a76162d | 172 | |
| davidjhoward | 258:150f5a76162d | 173 | /******************************************************************************/ |
| davidjhoward | 258:150f5a76162d | 174 | /* END OF FILE */ |
| davidjhoward | 258:150f5a76162d | 175 | /******************************************************************************/ |
