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 Nov 17 06:10:54 2016 +0000
Revision:
30:ce6ba33e0dff
Parent:
29:6ebf4b4f297f
Child:
31:d25111c2fa21
SOF 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);
vidyasagarbhat 10:09d1a403eb14 32 extern void ble_init(void);
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) {
vidyasagarbhat 10:09d1a403eb14 75 // TODO: DUMMY Read, send dummy byte back
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 22:7980e0aa7938 82 {
jinu 22:7980e0aa7938 83 ble_init();
jinu 22:7980e0aa7938 84 toggle_led();
jinu 22:7980e0aa7938 85 }
jinu 22:7980e0aa7938 86
vidyasagarbhat 10:09d1a403eb14 87 break;
vidyasagarbhat 10:09d1a403eb14 88
vidyasagarbhat 10:09d1a403eb14 89 case BLE_START_ADV_CMD:
vidyasagarbhat 10:09d1a403eb14 90 // TODO: As of now Advertising is done from the ble_init
vidyasagarbhat 10:09d1a403eb14 91 break;
vidyasagarbhat 10:09d1a403eb14 92
vidyasagarbhat 10:09d1a403eb14 93 case BLE_SEND_DATA_CMD:
jinu 11:b8e687d97537 94 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 30:ce6ba33e0dff 95 ble_send_data(tmp_buf,rx_data[3]);
vidyasagarbhat 10:09d1a403eb14 96 break;
vidyasagarbhat 10:09d1a403eb14 97
jinu 18:d210f580ff04 98 case BLE_START_OF_FILE:
jinu 18:d210f580ff04 99 toggle_led();
jinu 23:7c71b3313b9c 100 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 30:ce6ba33e0dff 101 ble_send_data(tmp_buf, rx_data[3]);
jinu 18:d210f580ff04 102 break;
jinu 18:d210f580ff04 103
jinu 18:d210f580ff04 104 case BLE_END_OF_FILE:
jinu 18:d210f580ff04 105 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 25:96044c55f844 106 ble_send_data(tmp_buf, rx_data[3]);
jinu 18:d210f580ff04 107 break;
jinu 18:d210f580ff04 108
vidyasagarbhat 10:09d1a403eb14 109 default :
vidyasagarbhat 10:09d1a403eb14 110 break;
vidyasagarbhat 10:09d1a403eb14 111
vidyasagarbhat 10:09d1a403eb14 112 }
vidyasagarbhat 10:09d1a403eb14 113 } else {
vidyasagarbhat 10:09d1a403eb14 114 // Invalid Packet received, ignore as of now
vidyasagarbhat 10:09d1a403eb14 115 }
vidyasagarbhat 10:09d1a403eb14 116 }
vidyasagarbhat 10:09d1a403eb14 117 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 118 /* Global Functions */
vidyasagarbhat 10:09d1a403eb14 119 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 120 /**
vidyasagarbhat 10:09d1a403eb14 121 * @brief Data Handler Init, register for the BLE & SPI callbacks
vidyasagarbhat 10:09d1a403eb14 122 * @param
vidyasagarbhat 10:09d1a403eb14 123 * @retval
vidyasagarbhat 10:09d1a403eb14 124 */
vidyasagarbhat 10:09d1a403eb14 125 void ble_data_handler_init(void)
vidyasagarbhat 10:09d1a403eb14 126 {
vidyasagarbhat 10:09d1a403eb14 127 ble_data_rx_cb_register(ble_rx_Data_Callback);
jinu 11:b8e687d97537 128 spi_data_rx_cb_register(spi_rx_Data_Callback);
vidyasagarbhat 10:09d1a403eb14 129 }
vidyasagarbhat 10:09d1a403eb14 130
vidyasagarbhat 10:09d1a403eb14 131 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 132 /* END OF FILE */
vidyasagarbhat 10:09d1a403eb14 133 /******************************************************************************/