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@258:150f5a76162d, 2016-10-24 (annotated)
- 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?
| User | Revision | Line number | New 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 | /******************************************************************************/ | 
