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