Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
BLE/src/ble_init.cpp@249:68ed571e0002, 2016-10-21 (annotated)
- 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?
| User | Revision | Line number | New 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 | /******************************************************************************/ | 
