Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Wed Oct 26 21:03:53 2016 +0000
Revision:
280:7c1c9274cce6
Parent:
275:76285569fb64
Parent:
279:b60379a9eb1a
Child:
284:cc72206ea8e0
Merge of Updates for BLE and added mailbox for BLE

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
davidjhoward 265:0fb72c26ae68 20 #include "mbed.h"
davidjhoward 265:0fb72c26ae68 21 #include "ble_msg_handler.h"
davidjhoward 265:0fb72c26ae68 22 #include "ble_spi.h"
davidjhoward 265:0fb72c26ae68 23 #include "ble_main.h"
davidjhoward 265:0fb72c26ae68 24 /******************************************************************************/
davidjhoward 265:0fb72c26ae68 25 /* Defines */
davidjhoward 265:0fb72c26ae68 26 /******************************************************************************/
davidjhoward 279:b60379a9eb1a 27 #define MAX_FILE_SIZE 1000
davidjhoward 265:0fb72c26ae68 28
davidjhoward 265:0fb72c26ae68 29 volatile bool isDeviceConnected;
davidjhoward 265:0fb72c26ae68 30 static ble_data_ready_callback_t data_ready_cb;
davidjhoward 279:b60379a9eb1a 31 uint8_t json_array[MAX_FILE_SIZE];
davidjhoward 279:b60379a9eb1a 32 uint8_t count,file_index,file_size;
davidjhoward 265:0fb72c26ae68 33 /*****************************************************************************
davidjhoward 265:0fb72c26ae68 34 * Function: BLE data receive callback
davidjhoward 265:0fb72c26ae68 35 * Description: Function used to register ble data receive callback
davidjhoward 265:0fb72c26ae68 36 *
davidjhoward 265:0fb72c26ae68 37 * @param ble_data_ready_callback_t
davidjhoward 265:0fb72c26ae68 38 * @return none
davidjhoward 265:0fb72c26ae68 39 *****************************************************************************/
davidjhoward 265:0fb72c26ae68 40 void BleDataRxCbRegister(ble_data_ready_callback_t data_rx_callback)
davidjhoward 265:0fb72c26ae68 41 {
davidjhoward 265:0fb72c26ae68 42 data_ready_cb = data_rx_callback;
davidjhoward 265:0fb72c26ae68 43 }
davidjhoward 265:0fb72c26ae68 44
davidjhoward 265:0fb72c26ae68 45 /*****************************************************************************
davidjhoward 265:0fb72c26ae68 46 * Function: ProcessBleRxEvents()
davidjhoward 265:0fb72c26ae68 47 * Description: Process BLE data
davidjhoward 265:0fb72c26ae68 48 *
davidjhoward 265:0fb72c26ae68 49 * @param spi_rcv_array
davidjhoward 265:0fb72c26ae68 50 * @param length
davidjhoward 265:0fb72c26ae68 51 * @return none
davidjhoward 265:0fb72c26ae68 52 *****************************************************************************/
davidjhoward 265:0fb72c26ae68 53 void ProcessBleRxEvents(uint8_t *spi_rcv_array, uint8_t len)
davidjhoward 265:0fb72c26ae68 54 {
davidjhoward 265:0fb72c26ae68 55 static bool file_receiving_flag = false;
davidjhoward 265:0fb72c26ae68 56
davidjhoward 265:0fb72c26ae68 57 if (spi_rcv_array[0] == BLE_SOF_CMD) {
davidjhoward 265:0fb72c26ae68 58 switch (spi_rcv_array[1])
davidjhoward 265:0fb72c26ae68 59 {
davidjhoward 265:0fb72c26ae68 60 case BLE_CONNECTION_EVNT_CMD:
jmarkel44 275:76285569fb64 61 printf("Mobile device connected...\n\r");
davidjhoward 265:0fb72c26ae68 62 isDeviceConnected =true;
davidjhoward 265:0fb72c26ae68 63 break;
davidjhoward 265:0fb72c26ae68 64
davidjhoward 265:0fb72c26ae68 65 case BLE_REC_DATA_CMD:
davidjhoward 265:0fb72c26ae68 66 /*
davidjhoward 279:b60379a9eb1a 67 when nRF UART send a packet to mDot board, we are incrementing
davidjhoward 279:b60379a9eb1a 68 a counter and till count equals 3, we are appending data to
davidjhoward 279:b60379a9eb1a 69 json Array.when it equals 3,ie 60 bytes(assuming that each time
davidjhoward 279:b60379a9eb1a 70 we are sening 20 bytes), passing this to callback to main
davidjhoward 279:b60379a9eb1a 71 function.
davidjhoward 279:b60379a9eb1a 72 */
davidjhoward 279:b60379a9eb1a 73
davidjhoward 279:b60379a9eb1a 74 count++;
davidjhoward 279:b60379a9eb1a 75 /*reassembling packets */
davidjhoward 279:b60379a9eb1a 76 memcpy(&json_array[file_index],&spi_rcv_array[3], (spi_rcv_array[2]-4));
davidjhoward 279:b60379a9eb1a 77
davidjhoward 279:b60379a9eb1a 78 file_index+= (spi_rcv_array[2]-4); //((spi_rcv_array[2]-4) contains packet length excluding headers
davidjhoward 279:b60379a9eb1a 79
davidjhoward 279:b60379a9eb1a 80 if(count ==3) //added for testing. Need to change this to if(file_index == file_size)
davidjhoward 279:b60379a9eb1a 81 {
davidjhoward 279:b60379a9eb1a 82 /*Passing the entire file to callback function*/
davidjhoward 279:b60379a9eb1a 83 data_ready_cb(json_array, file_index);
davidjhoward 279:b60379a9eb1a 84 count= 0;
davidjhoward 279:b60379a9eb1a 85 file_index =0;
davidjhoward 279:b60379a9eb1a 86 }
davidjhoward 265:0fb72c26ae68 87 break;
davidjhoward 265:0fb72c26ae68 88
davidjhoward 265:0fb72c26ae68 89 case BLE_DISCONNECTION_EVNT_CMD:
jmarkel44 275:76285569fb64 90 printf("Mobile device disconnected...\n\r");
davidjhoward 265:0fb72c26ae68 91 isDeviceConnected =false;
davidjhoward 265:0fb72c26ae68 92 break;
davidjhoward 265:0fb72c26ae68 93
davidjhoward 265:0fb72c26ae68 94 case BLE_START_OF_FILE:
davidjhoward 279:b60379a9eb1a 95
davidjhoward 265:0fb72c26ae68 96 file_receiving_flag = true;
davidjhoward 279:b60379a9eb1a 97
davidjhoward 279:b60379a9eb1a 98 /*extract the json string length from SOF. */
davidjhoward 279:b60379a9eb1a 99
davidjhoward 279:b60379a9eb1a 100 file_size = spi_rcv_array[3];
davidjhoward 279:b60379a9eb1a 101
davidjhoward 265:0fb72c26ae68 102 break;
davidjhoward 265:0fb72c26ae68 103
davidjhoward 265:0fb72c26ae68 104 case BLE_END_OF_FILE:
davidjhoward 265:0fb72c26ae68 105 /* Reset the File Parameters */
davidjhoward 265:0fb72c26ae68 106 file_receiving_flag = false;
davidjhoward 265:0fb72c26ae68 107 break;
davidjhoward 265:0fb72c26ae68 108
davidjhoward 265:0fb72c26ae68 109 default:
davidjhoward 265:0fb72c26ae68 110 printf("Unknown ID\n\r");
davidjhoward 265:0fb72c26ae68 111 break;
davidjhoward 265:0fb72c26ae68 112 }
davidjhoward 265:0fb72c26ae68 113 } else {
davidjhoward 265:0fb72c26ae68 114 printf("SOF not found\n\r");
davidjhoward 265:0fb72c26ae68 115 }
davidjhoward 265:0fb72c26ae68 116 }
davidjhoward 265:0fb72c26ae68 117
davidjhoward 265:0fb72c26ae68 118 /******************************************************************************/
davidjhoward 265:0fb72c26ae68 119 /* END OF FILE */
davidjhoward 279:b60379a9eb1a 120 /******************************************************************************/