BLE Nano Code.Tested with Integrated mDot code

Dependencies:   BLE_API mbed nRF51822

Fork of eco_Labs_ble_Client by Happiest

Committer:
jinu
Date:
Thu Dec 01 14:50:00 2016 +0000
Revision:
31:d25111c2fa21
Parent:
30:ce6ba33e0dff
Child:
32:bb3b81b06676
Setting the BLE name from mDot

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vidyasagarbhat 10:09d1a403eb14 1 /**
vidyasagarbhat 10:09d1a403eb14 2 ******************************************************************************
vidyasagarbhat 10:09d1a403eb14 3 * @file ble_msg_handler.cpp
vidyasagarbhat 10:09d1a403eb14 4 * @author Happiesstminds Firmware Team
vidyasagarbhat 10:09d1a403eb14 5 * @version v1.0
vidyasagarbhat 10:09d1a403eb14 6 * @date 4-Oct-2016
vidyasagarbhat 10:09d1a403eb14 7 * @brief
vidyasagarbhat 10:09d1a403eb14 8 *
vidyasagarbhat 10:09d1a403eb14 9 ******************************************************************************
vidyasagarbhat 10:09d1a403eb14 10 * @attention
vidyasagarbhat 10:09d1a403eb14 11 *
vidyasagarbhat 10:09d1a403eb14 12 *
vidyasagarbhat 10:09d1a403eb14 13 ******************************************************************************
vidyasagarbhat 10:09d1a403eb14 14 */
vidyasagarbhat 10:09d1a403eb14 15
vidyasagarbhat 10:09d1a403eb14 16 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 17 /* Include Files*/
vidyasagarbhat 10:09d1a403eb14 18 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 19 #include <string.h>
vidyasagarbhat 10:09d1a403eb14 20 #include "mbed.h"
vidyasagarbhat 10:09d1a403eb14 21 #include "BLE.h"
vidyasagarbhat 10:09d1a403eb14 22 #include "ble_types.h"
vidyasagarbhat 10:09d1a403eb14 23 #include "UARTService.h"
vidyasagarbhat 10:09d1a403eb14 24 #include "ble_msg_handler.h"
jinu 11:b8e687d97537 25 #include "spi_slave.h"
vidyasagarbhat 10:09d1a403eb14 26 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 27 /* extern function definations */
vidyasagarbhat 10:09d1a403eb14 28 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 29 extern void ble_data_rx_cb_register(ble_data_ready_callback_t data_rx_callback);
jinu 11:b8e687d97537 30 extern void spi_data_rx_cb_register(spi_data_ready_callback_t data_rx_callback);
vidyasagarbhat 10:09d1a403eb14 31 extern eStatus_t ble_send_data(uint8_t *tx_buf, uint8_t length);
jinu 31:d25111c2fa21 32 extern void ble_init(uint8_t *tx_buf, uint8_t length);
jinu 11:b8e687d97537 33 extern void spi_slave_tx_data(uint8_t *tx_buf, uint8_t len);
vidyasagarbhat 10:09d1a403eb14 34
vidyasagarbhat 10:09d1a403eb14 35 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 36 /* Global Variables */
vidyasagarbhat 10:09d1a403eb14 37 /******************************************************************************/
jinu 22:7980e0aa7938 38 extern bool init_success;
vidyasagarbhat 10:09d1a403eb14 39 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 40 /* Static Variable Declarations */
vidyasagarbhat 10:09d1a403eb14 41 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 42
vidyasagarbhat 10:09d1a403eb14 43 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 44 /* Static Functions */
vidyasagarbhat 10:09d1a403eb14 45 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 46 /**
vidyasagarbhat 10:09d1a403eb14 47 * @brief BLE_UART data Receive Callback
vidyasagarbhat 10:09d1a403eb14 48 * @param
vidyasagarbhat 10:09d1a403eb14 49 * @retval
vidyasagarbhat 10:09d1a403eb14 50 */
vidyasagarbhat 10:09d1a403eb14 51 static void ble_rx_Data_Callback(uint8_t *rx_data, uint8_t len)
vidyasagarbhat 10:09d1a403eb14 52 {
jinu 25:96044c55f844 53 uint8_t send_buf[100];
jinu 25:96044c55f844 54
vidyasagarbhat 10:09d1a403eb14 55 send_buf[0] = BLE_SOF_CMD;
jinu 28:5acf1e0542f3 56 // send_buf[1] = BLE_REC_DATA_CMD;
jinu 28:5acf1e0542f3 57 send_buf[1] = rx_data[0];
jinu 28:5acf1e0542f3 58 send_buf[2] = len+4;
jinu 28:5acf1e0542f3 59
jinu 29:6ebf4b4f297f 60 memcpy(&send_buf[3], &rx_data[1], (len-1));
jinu 15:67fbed00edf2 61 send_buf[len + 3] = BLE_EOT_CMD;
jinu 15:67fbed00edf2 62 spi_slave_tx_data(send_buf, (len + 4));
vidyasagarbhat 10:09d1a403eb14 63 }
vidyasagarbhat 10:09d1a403eb14 64
vidyasagarbhat 10:09d1a403eb14 65
vidyasagarbhat 10:09d1a403eb14 66 /**
vidyasagarbhat 10:09d1a403eb14 67 * @brief SPI data Receive Callback
vidyasagarbhat 10:09d1a403eb14 68 * @param
vidyasagarbhat 10:09d1a403eb14 69 * @retval
vidyasagarbhat 10:09d1a403eb14 70 */
jinu 11:b8e687d97537 71 void spi_rx_Data_Callback(uint8_t *rx_data, uint8_t len)
vidyasagarbhat 10:09d1a403eb14 72 {
jinu 23:7c71b3313b9c 73 uint8_t tmp_buf[30];
jinu 12:c7a8a7fe76fd 74 if (rx_data[1] == 0xFF) {
jinu 31:d25111c2fa21 75 //Dummy packet from mDot to clear buffer.
jinu 11:b8e687d97537 76 } else if (rx_data[1] == BLE_SOF_CMD) {
jinu 11:b8e687d97537 77 switch (rx_data[2]) {
vidyasagarbhat 10:09d1a403eb14 78 case BLE_INIT_CMD:
jinu 22:7980e0aa7938 79 /* TODO: Get the BLE Device name from rx_data and pass it to
jinu 22:7980e0aa7938 80 ble_init */
jinu 22:7980e0aa7938 81 if(init_success ==false)
jinu 31:d25111c2fa21 82 {
jinu 31:d25111c2fa21 83 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 31:d25111c2fa21 84 //memset(tmp_buf, 'a', 5);
jinu 31:d25111c2fa21 85 ble_init(tmp_buf,rx_data[3]);
jinu 22:7980e0aa7938 86 toggle_led();
jinu 22:7980e0aa7938 87 }
jinu 22:7980e0aa7938 88
vidyasagarbhat 10:09d1a403eb14 89 break;
vidyasagarbhat 10:09d1a403eb14 90
vidyasagarbhat 10:09d1a403eb14 91 case BLE_START_ADV_CMD:
vidyasagarbhat 10:09d1a403eb14 92 // TODO: As of now Advertising is done from the ble_init
vidyasagarbhat 10:09d1a403eb14 93 break;
vidyasagarbhat 10:09d1a403eb14 94
vidyasagarbhat 10:09d1a403eb14 95 case BLE_SEND_DATA_CMD:
jinu 11:b8e687d97537 96 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 30:ce6ba33e0dff 97 ble_send_data(tmp_buf,rx_data[3]);
vidyasagarbhat 10:09d1a403eb14 98 break;
vidyasagarbhat 10:09d1a403eb14 99
jinu 18:d210f580ff04 100 case BLE_START_OF_FILE:
jinu 18:d210f580ff04 101 toggle_led();
jinu 23:7c71b3313b9c 102 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 30:ce6ba33e0dff 103 ble_send_data(tmp_buf, rx_data[3]);
jinu 18:d210f580ff04 104 break;
jinu 18:d210f580ff04 105
jinu 18:d210f580ff04 106 case BLE_END_OF_FILE:
jinu 18:d210f580ff04 107 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 25:96044c55f844 108 ble_send_data(tmp_buf, rx_data[3]);
jinu 18:d210f580ff04 109 break;
jinu 18:d210f580ff04 110
vidyasagarbhat 10:09d1a403eb14 111 default :
vidyasagarbhat 10:09d1a403eb14 112 break;
vidyasagarbhat 10:09d1a403eb14 113
vidyasagarbhat 10:09d1a403eb14 114 }
vidyasagarbhat 10:09d1a403eb14 115 } else {
vidyasagarbhat 10:09d1a403eb14 116 // Invalid Packet received, ignore as of now
vidyasagarbhat 10:09d1a403eb14 117 }
vidyasagarbhat 10:09d1a403eb14 118 }
vidyasagarbhat 10:09d1a403eb14 119 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 120 /* Global Functions */
vidyasagarbhat 10:09d1a403eb14 121 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 122 /**
vidyasagarbhat 10:09d1a403eb14 123 * @brief Data Handler Init, register for the BLE & SPI callbacks
vidyasagarbhat 10:09d1a403eb14 124 * @param
vidyasagarbhat 10:09d1a403eb14 125 * @retval
vidyasagarbhat 10:09d1a403eb14 126 */
vidyasagarbhat 10:09d1a403eb14 127 void ble_data_handler_init(void)
vidyasagarbhat 10:09d1a403eb14 128 {
vidyasagarbhat 10:09d1a403eb14 129 ble_data_rx_cb_register(ble_rx_Data_Callback);
jinu 11:b8e687d97537 130 spi_data_rx_cb_register(spi_rx_Data_Callback);
vidyasagarbhat 10:09d1a403eb14 131 }
vidyasagarbhat 10:09d1a403eb14 132
vidyasagarbhat 10:09d1a403eb14 133 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 134 /* END OF FILE */
vidyasagarbhat 10:09d1a403eb14 135 /******************************************************************************/