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: BLE_API LIS3DH mbed nRF51822 BMC050 nRF51_LowPwr nRF51_Vdd
Fork of BLE_EddystoneBeacon_Service by
Revision 10:b5d19bcf23cf, committed 2015-07-17
- Comitter:
- mbedAustin
- Date:
- Fri Jul 17 19:02:54 2015 +0000
- Parent:
- 9:7b4ba649e342
- Child:
- 11:73ea4ef7f5a4
- Commit message:
- added private variables and set functions for 3 types of beacon frames.
Changed in this revision
--- a/BLE_API.lib Thu Jul 02 08:42:21 2015 +0000 +++ b/BLE_API.lib Fri Jul 17 19:02:54 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#6884e374e2eb +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#9c2edf20ea56
--- a/ZipBeaconConfigService.h Thu Jul 02 08:42:21 2015 +0000
+++ b/ZipBeaconConfigService.h Fri Jul 17 19:02:54 2015 +0000
@@ -62,6 +62,12 @@
static const int URI_DATA_MAX = 18;
typedef uint8_t UriData_t[URI_DATA_MAX];
+
+ static const int UID_NAMESPACEID_SIZE = 10;
+ typedef uint8_t UIDNamespaceID_t[UUID_NAMESPACEID_SIZE];
+
+ static const int UID_INSTANCEID_SIZE = 6;
+ typedef uint8_t UIDInstanceID_t[UUID_INSTANCEID_SIZE];
static const uint8_t FRAME_TYPE_UID = 0x00;
static const uint8_t FRAME_TYPE_URL = 0x10;
@@ -75,6 +81,9 @@
PowerLevels_t advPowerLevels; // Current value of AdvertisedPowerLevels
uint8_t txPowerMode; // Firmware power levels used with setTxPower()
uint16_t beaconPeriod;
+ uint8_t tlmVersion; // version of TLM packet
+ UUIDNamespaceID_t uidNamespaceID; // UUID type, Namespace ID, 10B
+ UUIDInstanceID_t uidInstanceID; // UUID type, Instance ID, 6B
};
/**
@@ -116,7 +125,7 @@
beaconPeriodChar(UUID_BEACON_PERIOD_CHAR, ¶ms.beaconPeriod),
resetChar(UUID_RESET_CHAR, &resetFlag) {
- encodeURI(defaultURIDataIn, defaultUriData, defaultUriDataLength);
+ encodeURI(defaultURIDataIn, defaultUriData, defaultUriDataLength); // encode URL to URL Formatting
if (defaultUriDataLength > URI_DATA_MAX) {
return;
}
@@ -165,7 +174,7 @@
* afterwards. */
void setupZipBeaconConfigAdvertisements()
{
- const char DEVICE_NAME[] = "zipBeacon Config";
+ const char DEVICE_NAME[] = "eddystone Config";
ble.clearAdvertisingPayload();
@@ -189,6 +198,54 @@
ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
ble.setAdvertisingInterval(Gap::MSEC_TO_ADVERTISEMENT_DURATION_UNITS(ADVERTISING_INTERVAL_MSEC));
}
+
+ /*
+ * Set Eddystone UID Frame information.
+ * @param[in] power TX Power in dB measured at 0 meters from the device. Range of -100 to +20 dB.
+ * @param namespaceID 10B namespace ID
+ * @param instanceID 6B instance ID
+ * @param RFU 2B of RFU, initialized to 0x0000 and not broadcast, included for future reference.
+ *
+ */
+ void setUIDFrameData(int8_t power, UIDNamespaceID_t namespaceID, UIDInstanceID_t instanceID, uint8_t RFU[2] = [0x00,0x00])
+ {
+ defaultUidNamespaceID = namespaceID;
+ defaultUidInstanceID = instanceID;
+ uidRFU = (uint16_t)RFU;
+ return;
+ }
+
+ /*
+ * Set Eddystone URL Frame information.
+ * @param[in] power TX Power in dB measured at 0 meters from the device.
+ * @param url URL to encode
+ * @return false on success, true on failure.
+ */
+ bool setURLFrameData(int8_t power, const char * url)
+ {
+ encodeURI(defaultURIDataIn, defaultUriData, defaultUriDataLength); // encode URL to URL Formatting
+ if (defaultUriDataLength > URI_DATA_MAX) {
+ return true; // error, URL is too big
+ }
+
+ }
+
+ /*
+ * Set Eddystone TLM Frame information.
+ * @param[in] Version of the TLM beacon data format
+ * @param batteryVoltage in milivolts
+ * @param beaconTemp in 8.8 floating point notation
+ *
+ */
+ void setTLMFrameData(uint8_t version, uint16_t batteryVoltage, uint16_t beaconTemp, uint32_t pduCount = 0, uint32_t timeSinceBoot = 0)
+ {
+ TlmVersion = version;
+ TlmBatteryVoltage = batteryVoltage;
+ TlmBeaconTemp = beaconTemp;
+ TlmPduCount = pduCount; // reset
+ TlmTimeSinceBoot = timeSinceBoot; // reset
+ return;
+ }
/* Helper function to switch to the non-connectible normal mode for ZipBeacon. This gets called after a timeout. */
void setupZipBeaconAdvertisements()
@@ -296,6 +353,8 @@
memcpy(params.advPowerLevels, defaultAdvPowerLevels, sizeof(PowerLevels_t));
params.txPowerMode = TX_POWER_MODE_LOW;
params.beaconPeriod = 1000;
+ memcpy(params.uidNamespaceID, defaultUidNamespaceID, UID_NAMESPACEID_SIZE);
+ memcpy(params.uidInstanceID, defaultUidInstanceID, UID_INSTANCEID_SIZE);
updateCharacteristicValues();
}
@@ -379,16 +438,26 @@
}
}
- BLEDevice &ble;
- Params_t ¶ms;
+ BLEDevice &ble;
+ Params_t ¶ms;
+ // Default value that is restored on reset
+ size_t defaultUriDataLength;
+ UriData_t defaultUriData;
+ UIDNamespaceID_t defaultUidNamespaceID;
+ UIDInstanceID_t defaultUidInstanceID;
+ uint16_t uidRFU;
// Default value that is restored on reset
- size_t defaultUriDataLength;
- UriData_t defaultUriData;
- // Default value that is restored on reset
- PowerLevels_t &defaultAdvPowerLevels;
- uint8_t lockedState;
- bool initSucceeded;
- uint8_t resetFlag;
+ PowerLevels_t &defaultAdvPowerLevels;
+ uint8_t lockedState;
+ bool initSucceeded;
+ uint8_t resetFlag;
+
+ // Private Variables for Telemetry Data
+ uint8_t TlmVersion;
+ uint16_t TlmBatteryVoltage;
+ uint16_t TlmBeaconTemp;
+ uint32_t TlmPduCount;
+ uint32_t TlmTimeSinceBoot;
ReadOnlyGattCharacteristic<uint8_t> lockedStateChar;
WriteOnlyGattCharacteristic<Lock_t> lockChar;
--- a/mbed.bld Thu Jul 02 08:42:21 2015 +0000 +++ b/mbed.bld Fri Jul 17 19:02:54 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/7cff1c4259d7 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/da0ca467f8b5 \ No newline at end of file
--- a/nRF51822.lib Thu Jul 02 08:42:21 2015 +0000 +++ b/nRF51822.lib Fri Jul 17 19:02:54 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#7455428e5ddb +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#6c82f06746bb
