BLE Nano Code.Tested with Integrated mDot code

Dependencies:   BLE_API mbed nRF51822

Fork of eco_Labs_ble_Client by Happiest

Committer:
jinu
Date:
Fri Dec 16 11:32:53 2016 +0000
Revision:
35:b2af2293635a
Parent:
34:d146cdbffd91
BLE name chnage and local name fix

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 33:17b8c186eb07 53 uint8_t send_buf[SPI_TX_BUF_SIZE];
jinu 25:96044c55f844 54
vidyasagarbhat 10:09d1a403eb14 55 send_buf[0] = BLE_SOF_CMD;
jinu 28:5acf1e0542f3 56 send_buf[1] = rx_data[0];
jinu 28:5acf1e0542f3 57 send_buf[2] = len+4;
jinu 29:6ebf4b4f297f 58 memcpy(&send_buf[3], &rx_data[1], (len-1));
jinu 15:67fbed00edf2 59 send_buf[len + 3] = BLE_EOT_CMD;
jinu 15:67fbed00edf2 60 spi_slave_tx_data(send_buf, (len + 4));
vidyasagarbhat 10:09d1a403eb14 61 }
vidyasagarbhat 10:09d1a403eb14 62
vidyasagarbhat 10:09d1a403eb14 63
vidyasagarbhat 10:09d1a403eb14 64 /**
vidyasagarbhat 10:09d1a403eb14 65 * @brief SPI data Receive Callback
vidyasagarbhat 10:09d1a403eb14 66 * @param
vidyasagarbhat 10:09d1a403eb14 67 * @retval
vidyasagarbhat 10:09d1a403eb14 68 */
jinu 34:d146cdbffd91 69 void spi_rx_Data_Callback(uint8_t *rx_data)
vidyasagarbhat 10:09d1a403eb14 70 {
jinu 33:17b8c186eb07 71 uint8_t tmp_buf[SPI_TX_BUF_SIZE];
jinu 32:bb3b81b06676 72 if(rx_data !=NULL)
jinu 32:bb3b81b06676 73 {
jinu 33:17b8c186eb07 74 if (rx_data[1] == 0xFF)
jinu 33:17b8c186eb07 75 {
jinu 33:17b8c186eb07 76 //Dummy send to clear buffer.
jinu 33:17b8c186eb07 77 }
jinu 33:17b8c186eb07 78 else if (rx_data[1] == BLE_SOF_CMD)
jinu 33:17b8c186eb07 79 {
jinu 32:bb3b81b06676 80 switch (rx_data[2]) {
jinu 32:bb3b81b06676 81 case BLE_INIT_CMD:
jinu 32:bb3b81b06676 82 if(init_success ==false)
jinu 32:bb3b81b06676 83 {
jinu 33:17b8c186eb07 84 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 85 ble_init(tmp_buf,rx_data[3]);
jinu 32:bb3b81b06676 86 toggle_led();
jinu 32:bb3b81b06676 87 }
jinu 32:bb3b81b06676 88
jinu 32:bb3b81b06676 89 break;
jinu 22:7980e0aa7938 90
jinu 32:bb3b81b06676 91 case BLE_START_ADV_CMD:
jinu 32:bb3b81b06676 92 // TODO: As of now Advertising is done from the ble_init
jinu 32:bb3b81b06676 93 break;
vidyasagarbhat 10:09d1a403eb14 94
jinu 32:bb3b81b06676 95 case BLE_SEND_DATA_CMD:
jinu 32:bb3b81b06676 96 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 97 ble_send_data(tmp_buf,rx_data[3]);
jinu 32:bb3b81b06676 98 break;
jinu 32:bb3b81b06676 99
jinu 32:bb3b81b06676 100 case BLE_START_OF_FILE:
jinu 32:bb3b81b06676 101 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 102 ble_send_data(tmp_buf, rx_data[3]);
jinu 32:bb3b81b06676 103 break;
jinu 32:bb3b81b06676 104
jinu 32:bb3b81b06676 105 case BLE_END_OF_FILE:
jinu 32:bb3b81b06676 106 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 32:bb3b81b06676 107 ble_send_data(tmp_buf, rx_data[3]);
jinu 32:bb3b81b06676 108 break;
jinu 33:17b8c186eb07 109
jinu 33:17b8c186eb07 110 case BLE_RESET_CMD:
jinu 33:17b8c186eb07 111
jinu 33:17b8c186eb07 112 /*Performing system reset*/
jinu 33:17b8c186eb07 113 NVIC_SystemReset();
jinu 33:17b8c186eb07 114 break;
jinu 32:bb3b81b06676 115
jinu 32:bb3b81b06676 116 default :
jinu 32:bb3b81b06676 117 break;
jinu 32:bb3b81b06676 118
jinu 32:bb3b81b06676 119 }
jinu 32:bb3b81b06676 120 } else {
jinu 32:bb3b81b06676 121 // Invalid Packet received, ignore as of now
vidyasagarbhat 10:09d1a403eb14 122 }
vidyasagarbhat 10:09d1a403eb14 123 }
vidyasagarbhat 10:09d1a403eb14 124 }
vidyasagarbhat 10:09d1a403eb14 125 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 126 /* Global Functions */
vidyasagarbhat 10:09d1a403eb14 127 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 128 /**
vidyasagarbhat 10:09d1a403eb14 129 * @brief Data Handler Init, register for the BLE & SPI callbacks
vidyasagarbhat 10:09d1a403eb14 130 * @param
vidyasagarbhat 10:09d1a403eb14 131 * @retval
vidyasagarbhat 10:09d1a403eb14 132 */
vidyasagarbhat 10:09d1a403eb14 133 void ble_data_handler_init(void)
vidyasagarbhat 10:09d1a403eb14 134 {
vidyasagarbhat 10:09d1a403eb14 135 ble_data_rx_cb_register(ble_rx_Data_Callback);
jinu 11:b8e687d97537 136 spi_data_rx_cb_register(spi_rx_Data_Callback);
vidyasagarbhat 10:09d1a403eb14 137 }
vidyasagarbhat 10:09d1a403eb14 138
vidyasagarbhat 10:09d1a403eb14 139 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 140 /* END OF FILE */
vidyasagarbhat 10:09d1a403eb14 141 /******************************************************************************/