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 Oct 06 09:42:38 2016 +0000
Revision:
11:b8e687d97537
Parent:
10:09d1a403eb14
Child:
12:c7a8a7fe76fd
woeking slave code

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 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 38
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 {
vidyasagarbhat 10:09d1a403eb14 53 uint8_t send_buf[16];
vidyasagarbhat 10:09d1a403eb14 54
vidyasagarbhat 10:09d1a403eb14 55 send_buf[0] = BLE_SOF_CMD;
vidyasagarbhat 10:09d1a403eb14 56 send_buf[1] = BLE_REC_DATA_CMD;
vidyasagarbhat 10:09d1a403eb14 57 memcpy(&send_buf[2], rx_data, len);
vidyasagarbhat 10:09d1a403eb14 58 send_buf[len + 2] = BLE_EOT_CMD;
vidyasagarbhat 10:09d1a403eb14 59
vidyasagarbhat 10:09d1a403eb14 60 // TODO Send the data to SPI
jinu 11:b8e687d97537 61 spi_slave_tx_data(send_buf, len + 3);
vidyasagarbhat 10:09d1a403eb14 62 }
vidyasagarbhat 10:09d1a403eb14 63
vidyasagarbhat 10:09d1a403eb14 64
vidyasagarbhat 10:09d1a403eb14 65 /**
vidyasagarbhat 10:09d1a403eb14 66 * @brief SPI data Receive Callback
vidyasagarbhat 10:09d1a403eb14 67 * @param
vidyasagarbhat 10:09d1a403eb14 68 * @retval
vidyasagarbhat 10:09d1a403eb14 69 */
jinu 11:b8e687d97537 70 void spi_rx_Data_Callback(uint8_t *rx_data, uint8_t len)
vidyasagarbhat 10:09d1a403eb14 71 {
jinu 11:b8e687d97537 72 uint8_t tmp_buf[16];
jinu 11:b8e687d97537 73 if (rx_data[0] == 0xFF) {
vidyasagarbhat 10:09d1a403eb14 74 // TODO: DUMMY Read, send dummy byte back
jinu 11:b8e687d97537 75 } else if (rx_data[1] == BLE_SOF_CMD) {
jinu 11:b8e687d97537 76 switch (rx_data[2]) {
vidyasagarbhat 10:09d1a403eb14 77 case BLE_INIT_CMD:
jinu 11:b8e687d97537 78 // TODO: Get the BLE Device name from rx_data and pass it to ble_init
vidyasagarbhat 10:09d1a403eb14 79 ble_init();
jinu 11:b8e687d97537 80 toggle_led();
vidyasagarbhat 10:09d1a403eb14 81 break;
vidyasagarbhat 10:09d1a403eb14 82
vidyasagarbhat 10:09d1a403eb14 83 case BLE_START_ADV_CMD:
vidyasagarbhat 10:09d1a403eb14 84 // TODO: As of now Advertising is done from the ble_init
vidyasagarbhat 10:09d1a403eb14 85 break;
vidyasagarbhat 10:09d1a403eb14 86
vidyasagarbhat 10:09d1a403eb14 87 case BLE_SEND_DATA_CMD:
jinu 11:b8e687d97537 88 toggle_led();
jinu 11:b8e687d97537 89 memcpy(tmp_buf, &rx_data[4], rx_data[3]);
jinu 11:b8e687d97537 90 ble_send_data(tmp_buf, rx_data[3]);
vidyasagarbhat 10:09d1a403eb14 91 break;
vidyasagarbhat 10:09d1a403eb14 92
vidyasagarbhat 10:09d1a403eb14 93 default :
vidyasagarbhat 10:09d1a403eb14 94 break;
vidyasagarbhat 10:09d1a403eb14 95
vidyasagarbhat 10:09d1a403eb14 96 }
vidyasagarbhat 10:09d1a403eb14 97 } else {
vidyasagarbhat 10:09d1a403eb14 98 // Invalid Packet received, ignore as of now
vidyasagarbhat 10:09d1a403eb14 99 }
vidyasagarbhat 10:09d1a403eb14 100 }
vidyasagarbhat 10:09d1a403eb14 101 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 102 /* Global Functions */
vidyasagarbhat 10:09d1a403eb14 103 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 104 /**
vidyasagarbhat 10:09d1a403eb14 105 * @brief Data Handler Init, register for the BLE & SPI callbacks
vidyasagarbhat 10:09d1a403eb14 106 * @param
vidyasagarbhat 10:09d1a403eb14 107 * @retval
vidyasagarbhat 10:09d1a403eb14 108 */
vidyasagarbhat 10:09d1a403eb14 109 void ble_data_handler_init(void)
vidyasagarbhat 10:09d1a403eb14 110 {
vidyasagarbhat 10:09d1a403eb14 111 ble_data_rx_cb_register(ble_rx_Data_Callback);
jinu 11:b8e687d97537 112 spi_data_rx_cb_register(spi_rx_Data_Callback);
vidyasagarbhat 10:09d1a403eb14 113 }
vidyasagarbhat 10:09d1a403eb14 114
vidyasagarbhat 10:09d1a403eb14 115 /******************************************************************************/
vidyasagarbhat 10:09d1a403eb14 116 /* END OF FILE */
vidyasagarbhat 10:09d1a403eb14 117 /******************************************************************************/