fds
Dependencies: BLE_API mbed nRF51822
main.cpp@0:a18188c7a4ee, 2017-10-06 (annotated)
- Committer:
- npap2309
- Date:
- Fri Oct 06 06:41:44 2017 +0000
- Revision:
- 0:a18188c7a4ee
mjkl
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
npap2309 | 0:a18188c7a4ee | 1 | #include "ble/BLE.h" |
npap2309 | 0:a18188c7a4ee | 2 | #include "mbed.h" |
npap2309 | 0:a18188c7a4ee | 3 | |
npap2309 | 0:a18188c7a4ee | 4 | BLE ble; |
npap2309 | 0:a18188c7a4ee | 5 | Timeout timeout; |
npap2309 | 0:a18188c7a4ee | 6 | |
npap2309 | 0:a18188c7a4ee | 7 | #define TXRX_BUF_LEN 20 |
npap2309 | 0:a18188c7a4ee | 8 | Serial pc(USBTX, USBRX); |
npap2309 | 0:a18188c7a4ee | 9 | |
npap2309 | 0:a18188c7a4ee | 10 | //**********TAG Personalization*********************** |
npap2309 | 0:a18188c7a4ee | 11 | //**************************************************** |
npap2309 | 0:a18188c7a4ee | 12 | char TAG_ADDRESS[]="D2:FB:BE:68:EF:5A"; |
npap2309 | 0:a18188c7a4ee | 13 | //char TAG_ADDRESS[]="EE:04:D4:1A:9C:16"; |
npap2309 | 0:a18188c7a4ee | 14 | //char TAG_ADDRESS[]="F6:99:64:A9:FD:6D"; |
npap2309 | 0:a18188c7a4ee | 15 | //char TAG_ADDRESS[]="D6:F7:8B:78:5D:BD"; |
npap2309 | 0:a18188c7a4ee | 16 | //char TAG_ADDRESS[]="D7:8F:65:5C:A0:B9"; |
npap2309 | 0:a18188c7a4ee | 17 | int password=135; |
npap2309 | 0:a18188c7a4ee | 18 | //**************************************************** |
npap2309 | 0:a18188c7a4ee | 19 | |
npap2309 | 0:a18188c7a4ee | 20 | |
npap2309 | 0:a18188c7a4ee | 21 | |
npap2309 | 0:a18188c7a4ee | 22 | int stealthModeActive=0; |
npap2309 | 0:a18188c7a4ee | 23 | uint8_t chars_value[TXRX_BUF_LEN] = {0,}; |
npap2309 | 0:a18188c7a4ee | 24 | |
npap2309 | 0:a18188c7a4ee | 25 | // The Nordic UART Service |
npap2309 | 0:a18188c7a4ee | 26 | static const uint8_t cityRiskServiceUuid[] = {0x71, 0x3D, 0, 0, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E}; |
npap2309 | 0:a18188c7a4ee | 27 | static const uint8_t cityRiskCharacteristcUuid[] = {0x71, 0x3D, 0, 2, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E}; |
npap2309 | 0:a18188c7a4ee | 28 | static const uint8_t uart_base_uuid_rev[] = {0x1E, 0x94, 0x8D, 0xF1, 0x48, 0x31, 0x94, 0xBA, 0x75, 0x4C, 0x3E, 0x50, 0, 0, 0x3D, 0x71}; |
npap2309 | 0:a18188c7a4ee | 29 | |
npap2309 | 0:a18188c7a4ee | 30 | |
npap2309 | 0:a18188c7a4ee | 31 | GattCharacteristic cityRiskCharacteristic(cityRiskCharacteristcUuid, chars_value, 3, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE); |
npap2309 | 0:a18188c7a4ee | 32 | |
npap2309 | 0:a18188c7a4ee | 33 | GattCharacteristic *cityRiskChars[] = {&cityRiskCharacteristic}; |
npap2309 | 0:a18188c7a4ee | 34 | |
npap2309 | 0:a18188c7a4ee | 35 | GattService cityRiskService(cityRiskServiceUuid, cityRiskChars, sizeof(cityRiskChars) / sizeof(GattCharacteristic *)); |
npap2309 | 0:a18188c7a4ee | 36 | |
npap2309 | 0:a18188c7a4ee | 37 | |
npap2309 | 0:a18188c7a4ee | 38 | //static void scanCallBack(const Gap::AdvertisementCallbackParams_t *params); |
npap2309 | 0:a18188c7a4ee | 39 | |
npap2309 | 0:a18188c7a4ee | 40 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 41 | *Function Name: autodisconnect |
npap2309 | 0:a18188c7a4ee | 42 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 43 | * Summary: Function is called to disconnect automatically |
npap2309 | 0:a18188c7a4ee | 44 | * |
npap2309 | 0:a18188c7a4ee | 45 | * |
npap2309 | 0:a18188c7a4ee | 46 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 47 | * None |
npap2309 | 0:a18188c7a4ee | 48 | * |
npap2309 | 0:a18188c7a4ee | 49 | * Return: |
npap2309 | 0:a18188c7a4ee | 50 | * None |
npap2309 | 0:a18188c7a4ee | 51 | * |
npap2309 | 0:a18188c7a4ee | 52 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 53 | void autodisconnect(){ |
npap2309 | 0:a18188c7a4ee | 54 | |
npap2309 | 0:a18188c7a4ee | 55 | if (ble.getGapState().connected){ |
npap2309 | 0:a18188c7a4ee | 56 | ble.gap().disconnect(Gap::LOCAL_HOST_TERMINATED_CONNECTION); |
npap2309 | 0:a18188c7a4ee | 57 | // pc.printf("Autodisconnect\n"); |
npap2309 | 0:a18188c7a4ee | 58 | } |
npap2309 | 0:a18188c7a4ee | 59 | } |
npap2309 | 0:a18188c7a4ee | 60 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 61 | *Function Name: beaconInit |
npap2309 | 0:a18188c7a4ee | 62 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 63 | * Summary: Setup peripheral profile |
npap2309 | 0:a18188c7a4ee | 64 | * |
npap2309 | 0:a18188c7a4ee | 65 | * |
npap2309 | 0:a18188c7a4ee | 66 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 67 | * None |
npap2309 | 0:a18188c7a4ee | 68 | * |
npap2309 | 0:a18188c7a4ee | 69 | * Return: |
npap2309 | 0:a18188c7a4ee | 70 | * None |
npap2309 | 0:a18188c7a4ee | 71 | * |
npap2309 | 0:a18188c7a4ee | 72 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 73 | void beaconInit (void){ |
npap2309 | 0:a18188c7a4ee | 74 | ble.gap().startAdvertising(); |
npap2309 | 0:a18188c7a4ee | 75 | // pc.printf("beacon Init\n"); |
npap2309 | 0:a18188c7a4ee | 76 | } |
npap2309 | 0:a18188c7a4ee | 77 | |
npap2309 | 0:a18188c7a4ee | 78 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 79 | *Function Name: ble_advdata_decode |
npap2309 | 0:a18188c7a4ee | 80 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 81 | * Summary: Used by the scan call back function to declare a successful scan. |
npap2309 | 0:a18188c7a4ee | 82 | * |
npap2309 | 0:a18188c7a4ee | 83 | * |
npap2309 | 0:a18188c7a4ee | 84 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 85 | * BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME, params->advertisingDataLen, |
npap2309 | 0:a18188c7a4ee | 86 | * (uint8_t *)params->advertisingData, &len, adv_name : Parameters the adverising device sends |
npap2309 | 0:a18188c7a4ee | 87 | * and the scan retrieves |
npap2309 | 0:a18188c7a4ee | 88 | * |
npap2309 | 0:a18188c7a4ee | 89 | * Return: |
npap2309 | 0:a18188c7a4ee | 90 | * NRF Succes or not |
npap2309 | 0:a18188c7a4ee | 91 | * |
npap2309 | 0:a18188c7a4ee | 92 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 93 | int ble_advdata_decode(uint8_t type, uint8_t advdata_len, uint8_t *p_advdata, uint8_t *len, uint8_t *p_field_data){ |
npap2309 | 0:a18188c7a4ee | 94 | |
npap2309 | 0:a18188c7a4ee | 95 | uint8_t index=0; |
npap2309 | 0:a18188c7a4ee | 96 | uint8_t field_length, field_type; |
npap2309 | 0:a18188c7a4ee | 97 | |
npap2309 | 0:a18188c7a4ee | 98 | while(index<advdata_len){ |
npap2309 | 0:a18188c7a4ee | 99 | field_length = p_advdata[index]; |
npap2309 | 0:a18188c7a4ee | 100 | field_type = p_advdata[index+1]; |
npap2309 | 0:a18188c7a4ee | 101 | if(field_type == type){ |
npap2309 | 0:a18188c7a4ee | 102 | memcpy(p_field_data, &p_advdata[index+2], (field_length-1)); |
npap2309 | 0:a18188c7a4ee | 103 | *len = field_length - 1; |
npap2309 | 0:a18188c7a4ee | 104 | return 1; |
npap2309 | 0:a18188c7a4ee | 105 | } |
npap2309 | 0:a18188c7a4ee | 106 | index += field_length + 1; |
npap2309 | 0:a18188c7a4ee | 107 | } |
npap2309 | 0:a18188c7a4ee | 108 | return 0; |
npap2309 | 0:a18188c7a4ee | 109 | } |
npap2309 | 0:a18188c7a4ee | 110 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 111 | *Function Name: scanCallBack |
npap2309 | 0:a18188c7a4ee | 112 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 113 | * Summary: Start scan for a device. When a spesific device defined by a certain name |
npap2309 | 0:a18188c7a4ee | 114 | * is scanned, the device changes from Central to Peripheral. |
npap2309 | 0:a18188c7a4ee | 115 | * |
npap2309 | 0:a18188c7a4ee | 116 | * |
npap2309 | 0:a18188c7a4ee | 117 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 118 | * Gap::AdvertisementCallbackParams_t *params: The Params returned by the scan. The |
npap2309 | 0:a18188c7a4ee | 119 | * Params are the ones the peripheral device advertises. |
npap2309 | 0:a18188c7a4ee | 120 | * |
npap2309 | 0:a18188c7a4ee | 121 | * Return: |
npap2309 | 0:a18188c7a4ee | 122 | * None |
npap2309 | 0:a18188c7a4ee | 123 | * |
npap2309 | 0:a18188c7a4ee | 124 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 125 | static void scanCallBack(const Gap::AdvertisementCallbackParams_t *params){ |
npap2309 | 0:a18188c7a4ee | 126 | |
npap2309 | 0:a18188c7a4ee | 127 | uint8_t len; |
npap2309 | 0:a18188c7a4ee | 128 | uint8_t adv_name[31]; |
npap2309 | 0:a18188c7a4ee | 129 | // pc.printf("packetscanned\n"); |
npap2309 | 0:a18188c7a4ee | 130 | if( 1 == ble_advdata_decode(0x09, params->advertisingDataLen, (uint8_t *)params->advertisingData, &len, adv_name) ){ |
npap2309 | 0:a18188c7a4ee | 131 | // pc.printf("stage1\n"); |
npap2309 | 0:a18188c7a4ee | 132 | //pc.printf("%x",&adv_name,"\n"); |
npap2309 | 0:a18188c7a4ee | 133 | if (memcmp(TAG_ADDRESS, adv_name, len) == 0x00){ |
npap2309 | 0:a18188c7a4ee | 134 | ble.stopScan(); |
npap2309 | 0:a18188c7a4ee | 135 | stealthModeActive=0; |
npap2309 | 0:a18188c7a4ee | 136 | beaconInit(); |
npap2309 | 0:a18188c7a4ee | 137 | // pc.printf("activation\n"); |
npap2309 | 0:a18188c7a4ee | 138 | } |
npap2309 | 0:a18188c7a4ee | 139 | } |
npap2309 | 0:a18188c7a4ee | 140 | } |
npap2309 | 0:a18188c7a4ee | 141 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 142 | *Function Name: stealthModeInit |
npap2309 | 0:a18188c7a4ee | 143 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 144 | * Summary: Initiate central profile |
npap2309 | 0:a18188c7a4ee | 145 | * |
npap2309 | 0:a18188c7a4ee | 146 | * |
npap2309 | 0:a18188c7a4ee | 147 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 148 | * None |
npap2309 | 0:a18188c7a4ee | 149 | * |
npap2309 | 0:a18188c7a4ee | 150 | * Return: |
npap2309 | 0:a18188c7a4ee | 151 | * None |
npap2309 | 0:a18188c7a4ee | 152 | * |
npap2309 | 0:a18188c7a4ee | 153 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 154 | void stealthModeInit(void){ |
npap2309 | 0:a18188c7a4ee | 155 | ble.gap().startScan(scanCallBack); |
npap2309 | 0:a18188c7a4ee | 156 | pc.printf("stealthmode\n"); |
npap2309 | 0:a18188c7a4ee | 157 | } |
npap2309 | 0:a18188c7a4ee | 158 | |
npap2309 | 0:a18188c7a4ee | 159 | |
npap2309 | 0:a18188c7a4ee | 160 | |
npap2309 | 0:a18188c7a4ee | 161 | /************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 162 | *Function Name: writtenHandle * |
npap2309 | 0:a18188c7a4ee | 163 | *************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 164 | * Summary: GATT call back handle. When a write service is offered by the device this * |
npap2309 | 0:a18188c7a4ee | 165 | * function handles the data the client sends. * |
npap2309 | 0:a18188c7a4ee | 166 | * * |
npap2309 | 0:a18188c7a4ee | 167 | * * |
npap2309 | 0:a18188c7a4ee | 168 | * Parameters: * |
npap2309 | 0:a18188c7a4ee | 169 | * GattWriteCallbackParams *Handler: The Params returned by a write action of the * |
npap2309 | 0:a18188c7a4ee | 170 | * client. * |
npap2309 | 0:a18188c7a4ee | 171 | * * |
npap2309 | 0:a18188c7a4ee | 172 | * Return: * |
npap2309 | 0:a18188c7a4ee | 173 | * None * |
npap2309 | 0:a18188c7a4ee | 174 | * * |
npap2309 | 0:a18188c7a4ee | 175 | **************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 176 | void gattServerWriteCallBack(const GattWriteCallbackParams *Handler) { |
npap2309 | 0:a18188c7a4ee | 177 | uint8_t index; |
npap2309 | 0:a18188c7a4ee | 178 | uint8_t buf[TXRX_BUF_LEN]; |
npap2309 | 0:a18188c7a4ee | 179 | uint16_t bytesRead; |
npap2309 | 0:a18188c7a4ee | 180 | int code; |
npap2309 | 0:a18188c7a4ee | 181 | /*if (Handler->handle == cityRiskCharacteristic.getValueAttribute().getHandle()){ |
npap2309 | 0:a18188c7a4ee | 182 | |
npap2309 | 0:a18188c7a4ee | 183 | }*/ |
npap2309 | 0:a18188c7a4ee | 184 | pc.printf("writecallback\n"); |
npap2309 | 0:a18188c7a4ee | 185 | ble.readCharacteristicValue(cityRiskCharacteristic.getValueAttribute().getHandle(), buf, &bytesRead); |
npap2309 | 0:a18188c7a4ee | 186 | /*for( index=0; index<bytesRead; index++){ |
npap2309 | 0:a18188c7a4ee | 187 | code=buf[index]; |
npap2309 | 0:a18188c7a4ee | 188 | pc.printf(code,"\n"); |
npap2309 | 0:a18188c7a4ee | 189 | }*/ |
npap2309 | 0:a18188c7a4ee | 190 | code=Handler->data[0]; |
npap2309 | 0:a18188c7a4ee | 191 | // pc.printf("%d",code,"\n"); |
npap2309 | 0:a18188c7a4ee | 192 | |
npap2309 | 0:a18188c7a4ee | 193 | if (code==password){ |
npap2309 | 0:a18188c7a4ee | 194 | stealthModeActive=1; |
npap2309 | 0:a18188c7a4ee | 195 | // pc.printf("Success\n"); |
npap2309 | 0:a18188c7a4ee | 196 | } |
npap2309 | 0:a18188c7a4ee | 197 | |
npap2309 | 0:a18188c7a4ee | 198 | //ble.disconnect(Gap::LOCAL_HOST_TERMINATED_CONNECTION); |
npap2309 | 0:a18188c7a4ee | 199 | } |
npap2309 | 0:a18188c7a4ee | 200 | |
npap2309 | 0:a18188c7a4ee | 201 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 202 | *Function Name: disconnectionCallBack |
npap2309 | 0:a18188c7a4ee | 203 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 204 | * Summary: Function is called when our device disconnects from another device |
npap2309 | 0:a18188c7a4ee | 205 | * |
npap2309 | 0:a18188c7a4ee | 206 | * |
npap2309 | 0:a18188c7a4ee | 207 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 208 | * Gap::Handle_t handle, Gap::DisconnectionReason_t reason |
npap2309 | 0:a18188c7a4ee | 209 | * |
npap2309 | 0:a18188c7a4ee | 210 | * Return: |
npap2309 | 0:a18188c7a4ee | 211 | * None |
npap2309 | 0:a18188c7a4ee | 212 | * |
npap2309 | 0:a18188c7a4ee | 213 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 214 | void disconnectionCallBack(const Gap::DisconnectionCallbackParams_t *params) |
npap2309 | 0:a18188c7a4ee | 215 | { |
npap2309 | 0:a18188c7a4ee | 216 | // pc.printf("disconnect\n"); |
npap2309 | 0:a18188c7a4ee | 217 | if (stealthModeActive==0){ |
npap2309 | 0:a18188c7a4ee | 218 | beaconInit(); |
npap2309 | 0:a18188c7a4ee | 219 | } |
npap2309 | 0:a18188c7a4ee | 220 | else{ |
npap2309 | 0:a18188c7a4ee | 221 | stealthModeInit(); |
npap2309 | 0:a18188c7a4ee | 222 | } |
npap2309 | 0:a18188c7a4ee | 223 | } |
npap2309 | 0:a18188c7a4ee | 224 | |
npap2309 | 0:a18188c7a4ee | 225 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 226 | *Function Name: ConnectionCallBack |
npap2309 | 0:a18188c7a4ee | 227 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 228 | * Summary: Function is called when our device connects to another device |
npap2309 | 0:a18188c7a4ee | 229 | * |
npap2309 | 0:a18188c7a4ee | 230 | * |
npap2309 | 0:a18188c7a4ee | 231 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 232 | * Gap::ConnectionCallbackParams_t |
npap2309 | 0:a18188c7a4ee | 233 | * |
npap2309 | 0:a18188c7a4ee | 234 | * Return: |
npap2309 | 0:a18188c7a4ee | 235 | * None |
npap2309 | 0:a18188c7a4ee | 236 | * |
npap2309 | 0:a18188c7a4ee | 237 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 238 | void connectionCallBack( const Gap::ConnectionCallbackParams_t *params ){ |
npap2309 | 0:a18188c7a4ee | 239 | // pc.printf("Connected\n"); |
npap2309 | 0:a18188c7a4ee | 240 | timeout.attach(autodisconnect, 3); |
npap2309 | 0:a18188c7a4ee | 241 | //disconnection time out after 3 sec central device is get disconnected! |
npap2309 | 0:a18188c7a4ee | 242 | } |
npap2309 | 0:a18188c7a4ee | 243 | /************************************************************************************* |
npap2309 | 0:a18188c7a4ee | 244 | *Function Name: setup |
npap2309 | 0:a18188c7a4ee | 245 | ************************************************************************************** |
npap2309 | 0:a18188c7a4ee | 246 | * Summary: Basic setup for the SoC. Setup for central/peripheral roles |
npap2309 | 0:a18188c7a4ee | 247 | * |
npap2309 | 0:a18188c7a4ee | 248 | * |
npap2309 | 0:a18188c7a4ee | 249 | * Parameters: |
npap2309 | 0:a18188c7a4ee | 250 | * None |
npap2309 | 0:a18188c7a4ee | 251 | * |
npap2309 | 0:a18188c7a4ee | 252 | * Return: |
npap2309 | 0:a18188c7a4ee | 253 | * None |
npap2309 | 0:a18188c7a4ee | 254 | * |
npap2309 | 0:a18188c7a4ee | 255 | ************************************************************************************/ |
npap2309 | 0:a18188c7a4ee | 256 | int main(void) |
npap2309 | 0:a18188c7a4ee | 257 | { |
npap2309 | 0:a18188c7a4ee | 258 | ble.init(); |
npap2309 | 0:a18188c7a4ee | 259 | ble.onConnection(connectionCallBack); |
npap2309 | 0:a18188c7a4ee | 260 | ble.onDisconnection(disconnectionCallBack); |
npap2309 | 0:a18188c7a4ee | 261 | ble.onDataWritten(gattServerWriteCallBack); |
npap2309 | 0:a18188c7a4ee | 262 | ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); |
npap2309 | 0:a18188c7a4ee | 263 | ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, |
npap2309 | 0:a18188c7a4ee | 264 | (const uint8_t *)"Beacon02", sizeof("Beacon02") - 1); |
npap2309 | 0:a18188c7a4ee | 265 | //change here complete local name |
npap2309 | 0:a18188c7a4ee | 266 | // ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,(const uint8_t *)uart_base_uuid_rev, sizeof(uart_base_uuid_rev)); |
npap2309 | 0:a18188c7a4ee | 267 | // to check the operation commenting uart_base_uuid_rev |
npap2309 | 0:a18188c7a4ee | 268 | // set adv_type |
npap2309 | 0:a18188c7a4ee | 269 | //ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::DEVICE_ID); |
npap2309 | 0:a18188c7a4ee | 270 | ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
npap2309 | 0:a18188c7a4ee | 271 | // add service |
npap2309 | 0:a18188c7a4ee | 272 | ble.addService(cityRiskService); |
npap2309 | 0:a18188c7a4ee | 273 | ble.gap().setDeviceName((const uint8_t *)"Beacon02"); |
npap2309 | 0:a18188c7a4ee | 274 | // set tx power,valid values are -40, -20, -16, -12, -8, -4, 0, 4 |
npap2309 | 0:a18188c7a4ee | 275 | ble.gap().setTxPower(0); |
npap2309 | 0:a18188c7a4ee | 276 | // set adv_interval, in ms |
npap2309 | 0:a18188c7a4ee | 277 | ble.gap().setAdvertisingInterval(100); |
npap2309 | 0:a18188c7a4ee | 278 | // set adv_timeout, in seconds |
npap2309 | 0:a18188c7a4ee | 279 | ble.gap().setAdvertisingTimeout(0); |
npap2309 | 0:a18188c7a4ee | 280 | ble.gap().setScanParams(1000,100,0,false); |
npap2309 | 0:a18188c7a4ee | 281 | beaconInit(); |
npap2309 | 0:a18188c7a4ee | 282 | pc.printf("start\n"); |
npap2309 | 0:a18188c7a4ee | 283 | while (1){ |
npap2309 | 0:a18188c7a4ee | 284 | ble.waitForEvent(); |
npap2309 | 0:a18188c7a4ee | 285 | } |
npap2309 | 0:a18188c7a4ee | 286 | } |