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.
Dependents: microbit-dal microbit-dal microbit-ble-open microbit-dal ... more
Fork of BLE_API by
Diff: services/URIBeacon2Service.h
- Revision:
- 162:27a19b0fa40e
- Parent:
- 161:f17b72db118e
- Child:
- 163:8bd70d17589f
diff -r f17b72db118e -r 27a19b0fa40e services/URIBeacon2Service.h
--- a/services/URIBeacon2Service.h Fri Nov 28 14:11:21 2014 +0000
+++ b/services/URIBeacon2Service.h Fri Nov 28 14:11:21 2014 +0000
@@ -26,6 +26,8 @@
const uint8_t URIBeacon2ControlServiceUUID[] = UUID_INITIALIZER_LIST(0x20, 0x80);
const uint8_t lockedStateCharUUID[] = UUID_INITIALIZER_LIST(0x20, 0x81);
const uint8_t uriDataCharUUID[] = UUID_INITIALIZER_LIST(0x20, 0x84);
+const uint8_t flagsCharUUID[] = UUID_INITIALIZER_LIST(0x20, 0x85);
+const uint8_t beaconPeriodCharUUID[] = UUID_INITIALIZER_LIST(0x20, 0x88);
class URIBeacon2Service {
public:
@@ -36,12 +38,14 @@
uriDataValue(),
flags(flags_),
power(power_),
+ beaconPeriod(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(1000)), /* 1hz */
lockedStateChar(lockedStateCharUUID, (uint8_t *)&lockedState, 1, 1, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ),
uriDataChar(uriDataCharUUID,
uriDataValue,
MAX_SIZE_URI_DATA_CHAR_VALUE,
MAX_SIZE_URI_DATA_CHAR_VALUE,
- GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE)
+ GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE),
+ flagsChar(flagsCharUUID, &flags, 1, 1, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE)
{
if ((urldata == NULL) || ((uriDataLength = strlen(urldata)) == 0)) {
return;
@@ -78,9 +82,16 @@
uriDataLength = params->len;
memcpy(uriDataValue, params->data, uriDataLength);
- setup();
- ble.setAdvertisingPayload();
+ } else if (params->charHandle == flagsChar.getValueAttribute().getHandle()) {
+ if (lockedState) {
+ ble.updateCharacteristicValue(flagsChar.getValueAttribute().getHandle(), &flags, 1 /* size */);
+ return;
+ } else {
+ flags = *(params->data);
+ }
}
+ setup();
+ ble.setAdvertisingPayload();
}
/**
@@ -112,6 +123,7 @@
ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, BEACON_UUID, sizeof(BEACON_UUID));
ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA, serviceDataPayload, encodedBytes + 4);
+ ble.setAdvertisingInterval(beaconPeriod);
ble.setTxPower(power);
}
@@ -204,9 +216,11 @@
uint8_t uriDataValue[MAX_SIZE_URI_DATA_CHAR_VALUE];
uint8_t flags;
uint8_t power;
+ uint16_t beaconPeriod;
GattCharacteristic lockedStateChar;
GattCharacteristic uriDataChar;
+ GattCharacteristic flagsChar;
};
#endif /* #ifndef __BLE_URI_BEACON_2_SERVICE_H__*/
\ No newline at end of file
