Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

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?

UserRevisionLine numberNew 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 /******************************************************************************/