BLE Nano Code.Tested with Integrated mDot code

Dependencies:   BLE_API mbed nRF51822

Fork of eco_Labs_ble_Client by Happiest

Committer:
jinu
Date:
Wed Dec 07 10:05:21 2016 +0000
Revision:
32:bb3b81b06676
Parent:
31:d25111c2fa21
Child:
33:17b8c186eb07
BLE callback function updated

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 32:bb3b81b06676 73 uint8_t tmp_buf[30];
jinu 32:bb3b81b06676 74 if(rx_data !=NULL)
jinu 32:bb3b81b06676 75 {
jinu 32:bb3b81b06676 76 if (rx_data[1] == 0xFF) {
jinu 32:bb3b81b06676 77 //Dummy packet from mDot to clear buffer.
jinu 32:bb3b81b06676 78 } else if (rx_data[1] == BLE_SOF_CMD) {
jinu 32:bb3b81b06676 79 switch (rx_data[2]) {
jinu 32:bb3b81b06676 80 case BLE_INIT_CMD:
jinu 32:bb3b81b06676 81 /* TODO: Get the BLE Device name from rx_data and pass it to
jinu 32:bb3b81b06676 82 ble_init */
jinu 32:bb3b81b06676 83 if(init_success ==false)
jinu 32:bb3b81b06676 84 {
jinu 32:bb3b81b06676 85 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 86 //memset(tmp_buf, 'a', 5);
jinu 32:bb3b81b06676 87 ble_init(tmp_buf,rx_data[3]);
jinu 32:bb3b81b06676 88 toggle_led();
jinu 32:bb3b81b06676 89 }
jinu 32:bb3b81b06676 90
jinu 32:bb3b81b06676 91 break;
jinu 22:7980e0aa7938 92
jinu 32:bb3b81b06676 93 case BLE_START_ADV_CMD:
jinu 32:bb3b81b06676 94 // TODO: As of now Advertising is done from the ble_init
jinu 32:bb3b81b06676 95 break;
vidyasagarbhat 10:09d1a403eb14 96
jinu 32:bb3b81b06676 97 case BLE_SEND_DATA_CMD:
jinu 32:bb3b81b06676 98 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 99 ble_send_data(tmp_buf,rx_data[3]);
jinu 32:bb3b81b06676 100 break;
jinu 32:bb3b81b06676 101
jinu 32:bb3b81b06676 102 case BLE_START_OF_FILE:
jinu 32:bb3b81b06676 103 // toggle_led();
jinu 32:bb3b81b06676 104 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 105 ble_send_data(tmp_buf, rx_data[3]);
jinu 32:bb3b81b06676 106 break;
jinu 32:bb3b81b06676 107
jinu 32:bb3b81b06676 108 case BLE_END_OF_FILE:
jinu 32:bb3b81b06676 109 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 110 ble_send_data(tmp_buf, rx_data[3]);
jinu 32:bb3b81b06676 111 break;
jinu 32:bb3b81b06676 112
jinu 32:bb3b81b06676 113 default :
jinu 32:bb3b81b06676 114 break;
jinu 32:bb3b81b06676 115
jinu 32:bb3b81b06676 116 }
jinu 32:bb3b81b06676 117 } else {
jinu 32:bb3b81b06676 118 // Invalid Packet received, ignore as of now
vidyasagarbhat 10:09d1a403eb14 119 }
vidyasagarbhat 10:09d1a403eb14 120 }
vidyasagarbhat 10:09d1a403eb14 121 }
vidyasagarbhat 10:09d1a403eb14 122 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 123 /* Global Functions */
vidyasagarbhat 10:09d1a403eb14 124 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 125 /**
vidyasagarbhat 10:09d1a403eb14 126 * @brief Data Handler Init, register for the BLE & SPI callbacks
vidyasagarbhat 10:09d1a403eb14 127 * @param
vidyasagarbhat 10:09d1a403eb14 128 * @retval
vidyasagarbhat 10:09d1a403eb14 129 */
vidyasagarbhat 10:09d1a403eb14 130 void ble_data_handler_init(void)
vidyasagarbhat 10:09d1a403eb14 131 {
vidyasagarbhat 10:09d1a403eb14 132 ble_data_rx_cb_register(ble_rx_Data_Callback);
jinu 11:b8e687d97537 133 spi_data_rx_cb_register(spi_rx_Data_Callback);
vidyasagarbhat 10:09d1a403eb14 134 }
vidyasagarbhat 10:09d1a403eb14 135
vidyasagarbhat 10:09d1a403eb14 136 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 137 /* END OF FILE */
vidyasagarbhat 10:09d1a403eb14 138 /******************************************************************************/