Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

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?

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