Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Fri Oct 21 13:48:57 2016 +0000
Revision:
249:68ed571e0002
Child:
259:341f04be325e
Add BLE module from Happiest Minds

Who changed what in which revision?

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