Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Mon Oct 24 21:06:45 2016 +0000
Revision:
258:150f5a76162d
Child:
259:341f04be325e
Commit BLE module changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davidjhoward 258:150f5a76162d 1 /**
davidjhoward 258:150f5a76162d 2 ******************************************************************************
davidjhoward 258:150f5a76162d 3 * @file ble_init.cpp
davidjhoward 258:150f5a76162d 4 * @author Happiesstminds Firmware Team
davidjhoward 258:150f5a76162d 5 * @version v1.0
davidjhoward 258:150f5a76162d 6 * @date 4-Oct-2016
davidjhoward 258:150f5a76162d 7 * @brief
davidjhoward 258:150f5a76162d 8 *
davidjhoward 258:150f5a76162d 9 ******************************************************************************
davidjhoward 258:150f5a76162d 10 * @attention
davidjhoward 258:150f5a76162d 11 *
davidjhoward 258:150f5a76162d 12 *
davidjhoward 258:150f5a76162d 13 ******************************************************************************
davidjhoward 258:150f5a76162d 14 */
davidjhoward 258:150f5a76162d 15
davidjhoward 258:150f5a76162d 16 /******************************************************************************/
davidjhoward 258:150f5a76162d 17 /* Include Files*/
davidjhoward 258:150f5a76162d 18 /******************************************************************************/
davidjhoward 258:150f5a76162d 19 #include "mbed.h"
davidjhoward 258:150f5a76162d 20 #include "ble_main.h"
davidjhoward 258:150f5a76162d 21 #include "ble_spi.h"
davidjhoward 258:150f5a76162d 22 #include "ble_msg_handler.h"
davidjhoward 258:150f5a76162d 23 #include "ble_init.h"
davidjhoward 258:150f5a76162d 24 /******************************************************************************/
davidjhoward 258:150f5a76162d 25 /* Local Defines */
davidjhoward 258:150f5a76162d 26 /******************************************************************************/
davidjhoward 258:150f5a76162d 27
davidjhoward 258:150f5a76162d 28 /******************************************************************************/
davidjhoward 258:150f5a76162d 29 /* Global Functions */
davidjhoward 258:150f5a76162d 30 /******************************************************************************/
davidjhoward 258:150f5a76162d 31
davidjhoward 258:150f5a76162d 32 /*****************************************************************************
davidjhoward 258:150f5a76162d 33 * Function: InitBLEModule()
davidjhoward 258:150f5a76162d 34 * Description: initialise GPIo and SPI
davidjhoward 258:150f5a76162d 35 *
davidjhoward 258:150f5a76162d 36 * @param BLE SPI Command
davidjhoward 258:150f5a76162d 37 * @return status
davidjhoward 258:150f5a76162d 38 *****************************************************************************/
davidjhoward 258:150f5a76162d 39 uint8_t BLE_INIT :: InitBLEModule(void)
davidjhoward 258:150f5a76162d 40 {
davidjhoward 258:150f5a76162d 41 uint8_t status = SUCCESS;
davidjhoward 258:150f5a76162d 42
davidjhoward 258:150f5a76162d 43 /*TODO
davidjhoward 258:150f5a76162d 44 wait(3) second delay need to be removed. This is added to make sure that
davidjhoward 258:150f5a76162d 45 Nano BLE initialised first after a power on reset.
davidjhoward 258:150f5a76162d 46 Within 3 seconds, expecting Nano BLE init is succesfull and waiting
davidjhoward 258:150f5a76162d 47 for the commands from mDOt.Need to check this delay on final hardware
davidjhoward 258:150f5a76162d 48 */
davidjhoward 258:150f5a76162d 49
davidjhoward 258:150f5a76162d 50 wait(3);
davidjhoward 258:150f5a76162d 51 status = InitSpiMaster();
davidjhoward 258:150f5a76162d 52 printf("Initializing BLE..\n\r");
davidjhoward 258:150f5a76162d 53 return status;
davidjhoward 258:150f5a76162d 54 }
davidjhoward 258:150f5a76162d 55
davidjhoward 258:150f5a76162d 56
davidjhoward 258:150f5a76162d 57
davidjhoward 258:150f5a76162d 58 /*****************************************************************************
davidjhoward 258:150f5a76162d 59 * Function: SendCommand()
davidjhoward 258:150f5a76162d 60 * Description: Send command to BLE
davidjhoward 258:150f5a76162d 61 *
davidjhoward 258:150f5a76162d 62 * @param BLE SPI Command
davidjhoward 258:150f5a76162d 63 * @return none
davidjhoward 258:150f5a76162d 64 *****************************************************************************/
davidjhoward 258:150f5a76162d 65
davidjhoward 258:150f5a76162d 66 static void SendCommand(uint8_t command)
davidjhoward 258:150f5a76162d 67 {
davidjhoward 258:150f5a76162d 68 uint8_t packet[4];
davidjhoward 258:150f5a76162d 69
davidjhoward 258:150f5a76162d 70 packet[0]= BLE_SOF_CMD;
davidjhoward 258:150f5a76162d 71 packet[1]= command;
davidjhoward 258:150f5a76162d 72 packet[2]= DATA_LENGTH;
davidjhoward 258:150f5a76162d 73 packet[3]= BLE_EOT_CMD;
davidjhoward 258:150f5a76162d 74 WriteSpiData(packet,COMMAND_LENGTH);
davidjhoward 258:150f5a76162d 75 }
davidjhoward 258:150f5a76162d 76
davidjhoward 258:150f5a76162d 77
davidjhoward 258:150f5a76162d 78 /*****************************************************************************
davidjhoward 258:150f5a76162d 79 * Function: send BLE init command()
davidjhoward 258:150f5a76162d 80 * Description: Send command to BLE
davidjhoward 258:150f5a76162d 81 *
davidjhoward 258:150f5a76162d 82 * @param none
davidjhoward 258:150f5a76162d 83 * @return uint8_t status
davidjhoward 258:150f5a76162d 84 *****************************************************************************/
davidjhoward 258:150f5a76162d 85 uint8_t BLE_INIT :: SendInitBleCommand(const uint8_t *device_name)
davidjhoward 258:150f5a76162d 86 {
davidjhoward 258:150f5a76162d 87 //TODO need to add device name in frame.
davidjhoward 258:150f5a76162d 88 uint8_t status;
davidjhoward 258:150f5a76162d 89 SendCommand(BLE_INIT_CMD);
davidjhoward 258:150f5a76162d 90 /*TODO
davidjhoward 258:150f5a76162d 91 The below two lines added for testing with custom board.This need to be
davidjhoward 258:150f5a76162d 92 changed.After sending the init command, mDot should read the response
davidjhoward 258:150f5a76162d 93 from slave.Poll the response and send init command till nano BLE returns
davidjhoward 258:150f5a76162d 94 success
davidjhoward 258:150f5a76162d 95 */
davidjhoward 258:150f5a76162d 96 SendCommand(BLE_INIT_CMD);
davidjhoward 258:150f5a76162d 97 SendCommand(BLE_INIT_CMD);
davidjhoward 258:150f5a76162d 98
davidjhoward 258:150f5a76162d 99 return status; //@SAGAR: Initialize status before returning
davidjhoward 258:150f5a76162d 100 }
davidjhoward 258:150f5a76162d 101
davidjhoward 258:150f5a76162d 102
davidjhoward 258:150f5a76162d 103 /*****************************************************************************
davidjhoward 258:150f5a76162d 104 * Function: SetDeviceName()
davidjhoward 258:150f5a76162d 105 * Description: Set BLE device name
davidjhoward 258:150f5a76162d 106 *
davidjhoward 258:150f5a76162d 107 * @param none
davidjhoward 258:150f5a76162d 108 * @return uint8_t status
davidjhoward 258:150f5a76162d 109 *****************************************************************************/
davidjhoward 258:150f5a76162d 110 uint8_t BLE_INIT :: SetDeviceName(void)
davidjhoward 258:150f5a76162d 111 {
davidjhoward 258:150f5a76162d 112 uint8_t status;
davidjhoward 258:150f5a76162d 113 /*TODO
davidjhoward 258:150f5a76162d 114
davidjhoward 258:150f5a76162d 115 function to set BLE device name
davidjhoward 258:150f5a76162d 116 */
davidjhoward 258:150f5a76162d 117 return status;
davidjhoward 258:150f5a76162d 118 }
davidjhoward 258:150f5a76162d 119
davidjhoward 258:150f5a76162d 120 /*****************************************************************************
davidjhoward 258:150f5a76162d 121 * Function: SetAdvertisingData()
davidjhoward 258:150f5a76162d 122 * Description: set advertising data
davidjhoward 258:150f5a76162d 123 *
davidjhoward 258:150f5a76162d 124 * @param none
davidjhoward 258:150f5a76162d 125 * @return uint8_t status
davidjhoward 258:150f5a76162d 126 *****************************************************************************/
davidjhoward 258:150f5a76162d 127 uint8_t BLE_INIT :: SetAdvertisingData(void)
davidjhoward 258:150f5a76162d 128 {
davidjhoward 258:150f5a76162d 129 //TODO not implemented
davidjhoward 258:150f5a76162d 130 uint8_t status =SUCCESS;
davidjhoward 258:150f5a76162d 131
davidjhoward 258:150f5a76162d 132 return status;
davidjhoward 258:150f5a76162d 133 }
davidjhoward 258:150f5a76162d 134
davidjhoward 258:150f5a76162d 135 /*****************************************************************************
davidjhoward 258:150f5a76162d 136 * Function: StartAdvertisingData()
davidjhoward 258:150f5a76162d 137 * Description: Send startAdvertisingData Command
davidjhoward 258:150f5a76162d 138 *
davidjhoward 258:150f5a76162d 139 * @param none
davidjhoward 258:150f5a76162d 140 * @return uint8_t status
davidjhoward 258:150f5a76162d 141 *****************************************************************************/
davidjhoward 258:150f5a76162d 142 uint8_t StartAdvertisingData(void)
davidjhoward 258:150f5a76162d 143 {
davidjhoward 258:150f5a76162d 144 uint8_t status =SUCCESS;
davidjhoward 258:150f5a76162d 145 SendCommand(BLE_START_ADV_CMD);
davidjhoward 258:150f5a76162d 146 return status;
davidjhoward 258:150f5a76162d 147 }
davidjhoward 258:150f5a76162d 148
davidjhoward 258:150f5a76162d 149 /*****************************************************************************
davidjhoward 258:150f5a76162d 150 * Function: SendBleData()
davidjhoward 258:150f5a76162d 151 * Description: Send data over BLE (Max 20 bytes)
davidjhoward 258:150f5a76162d 152 *
davidjhoward 258:150f5a76162d 153 * @param txBuf
davidjhoward 258:150f5a76162d 154 * @param data length
davidjhoward 258:150f5a76162d 155 * @return uint8_t status
davidjhoward 258:150f5a76162d 156 *****************************************************************************/
davidjhoward 258:150f5a76162d 157 uint8_t BLE_INIT :: SendBleData(uint8_t *tx_buf, uint8_t len)
davidjhoward 258:150f5a76162d 158 {
davidjhoward 258:150f5a76162d 159 uint8_t packet[24];
davidjhoward 258:150f5a76162d 160 uint8_t status = SUCCESS;
davidjhoward 258:150f5a76162d 161 uint8_t packetlength;
davidjhoward 258:150f5a76162d 162 packetlength = len + 4;
davidjhoward 258:150f5a76162d 163
davidjhoward 258:150f5a76162d 164 if(len<=20)
davidjhoward 258:150f5a76162d 165 {
davidjhoward 258:150f5a76162d 166 packet[0]= BLE_SOF_CMD;
davidjhoward 258:150f5a76162d 167 packet[1]= BLE_SEND_DATA_CMD;
davidjhoward 258:150f5a76162d 168 packet[2]= len;
davidjhoward 258:150f5a76162d 169
davidjhoward 258:150f5a76162d 170 memcpy(&packet[3], tx_buf, len);
davidjhoward 258:150f5a76162d 171 packet[len + 3]= BLE_EOT_CMD;
davidjhoward 258:150f5a76162d 172 WriteSpiData(packet, packetlength);
davidjhoward 258:150f5a76162d 173 }
davidjhoward 258:150f5a76162d 174 else
davidjhoward 258:150f5a76162d 175 {
davidjhoward 258:150f5a76162d 176 status = FAILURE;
davidjhoward 258:150f5a76162d 177 }
davidjhoward 258:150f5a76162d 178 return status;
davidjhoward 258:150f5a76162d 179 }
davidjhoward 258:150f5a76162d 180 /******************************************************************************/
davidjhoward 258:150f5a76162d 181 /* END OF FILE */
davidjhoward 258:150f5a76162d 182 /******************************************************************************/