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 30:6c2db8bf5b17, committed 2015-07-24
- Comitter:
- mbedAustin
- Date:
- Fri Jul 24 04:07:34 2015 +0000
- Parent:
- 29:dfb7fb5a971b
- Child:
- 31:bdd03742096a
- Commit message:
- [[Working]] Updated main program to periodically update the temperature and battery voltage.
Changed in this revision
| Eddystone.h | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Eddystone.h Fri Jul 24 03:36:45 2015 +0000
+++ b/Eddystone.h Fri Jul 24 04:07:34 2015 +0000
@@ -23,15 +23,19 @@
static const uint8_t BEACON_EDDYSTONE[] = {0xAA, 0xFE};
//Debug is disabled by default
-#if 1
+#if 0
#define DBG(x, ...) printf("[EddyStone: DBG]"x" \t[%s,%d]\r\n", ##__VA_ARGS__,__FILE__,__LINE__);
#define WARN(x, ...) printf("[EddyStone: WARN]"x" \t[%s,%d]\r\n", ##__VA_ARGS__,__FILE__,__LINE__);
#define ERR(x, ...) printf("[EddyStone: ERR]"x" \t[%s,%d]\r\n", ##__VA_ARGS__,__FILE__,__LINE__);
-#define INFO(x, ...) printf("[EddyStone: INFO]"x" \t[%s,%d]\r\n", ##__VA_ARGS__,__FILE__,__LINE__);
#else
#define DBG(x, ...) //wait_us(10);
#define WARN(x, ...) //wait_us(10);
#define ERR(x, ...)
+#endif
+
+#if 1
+#define INFO(x, ...) printf("[EddyStone: INFO]"x" \t[%s,%d]\r\n", ##__VA_ARGS__,__FILE__,__LINE__);
+#else
#define INFO(x, ...)
#endif
@@ -254,11 +258,11 @@
bool updateAdvPacket(uint8_t serviceData[], unsigned serviceDataLen) {
// Fields from the Service
DBG("Updating AdvFrame: %d", serviceDataLen);
- printf("\r\n");
- for(int x = 0; x<serviceDataLen; x++) {
- printf("%2.2x:",serviceData[x]);
- }
- printf("\r\n");
+// printf("\r\n");
+// for(int x = 0; x<serviceDataLen; x++) {
+// printf("%2.2x:",serviceData[x]);
+// }
+// printf("\r\n");
ble.clearAdvertisingPayload();
ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, BEACON_EDDYSTONE, sizeof(BEACON_EDDYSTONE));
@@ -284,8 +288,8 @@
switch(frameIndex) {
case 1:
// URL Frame
- INFO("Swaping URL Frame: %d",urlIsSet);
if(urlIsSet) {
+ INFO("Swapping in URL Frame: Power: %d",defaultUrlPower);
serviceDataLen += constructURLFrame(serviceData+serviceDataLen,20);
DBG("\t Swapping in URL Frame: len=%d ",serviceDataLen);
updateAdvPacket(serviceData,serviceDataLen);
@@ -295,8 +299,8 @@
}
case 2:
// UID Frame
- INFO("Swaping UID Frame: %d",uidIsSet);
if(uidIsSet) {
+ INFO("Swapping in UID Frame: Power: %d",defaultUidPower);
serviceDataLen += constructUIDFrame(serviceData+serviceDataLen,20);
DBG("\t Swapping in UID Frame: len=%d",serviceDataLen);
updateAdvPacket(serviceData,serviceDataLen);
@@ -306,7 +310,7 @@
}
default:
// TLM frame
- INFO("Swaping TLM Frame:");
+ INFO("Swapping in TLM Frame: version=%x, Batt=%d, Temp = %d, PDUCnt = %d, TimeSinceBoot=%d",TlmVersion, TlmBatteryVoltage, TlmBeaconTemp, TlmPduCount, TlmTimeSinceBoot);
serviceDataLen += constructTLMFrame(serviceData+serviceDataLen,20);
DBG("\t Swapping in TLM Frame: len=%d",serviceDataLen);
updateAdvPacket(serviceData,serviceDataLen);
--- a/main.cpp Fri Jul 24 03:36:45 2015 +0000
+++ b/main.cpp Fri Jul 24 04:07:34 2015 +0000
@@ -21,12 +21,34 @@
BLE ble;
uint8_t UIDnamespace[] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA}; // 10Bytes for Namespace UUID
uint8_t UIDinstance[] = {0xbb,0xcc,0xdd,0xee,0xff,0x00}; // 6Bytes for Instance UUID
-//char Url[] = "www.mbed.org";
+char Url[] = "http://www.mbed.org";
+int8_t txPower = -18;
+uint16_t beaconPeriodus = 1000;
+
+//Callbacks for temperature / battery updates
+Ticker tlmBattery;
+Ticker tlmTemperature;
+int battery = 0;
+int temp = 0;
+
+// Start the Eddystone beacon here
+EddystoneService eddyBeacon(ble, beaconPeriodus, txPower ,UIDnamespace, UIDinstance, Url, sizeof(Url));
+
+// Function to update beacon battery voltage
+void tlmBatteryCallback(void){
+ eddyBeacon.updateTlmBatteryVoltage(battery++);
+}
+
+// Function to update Beacon Temperature
+void tlmTemperatureCallback(void){
+ eddyBeacon.updateTlmBeaconTemp(temp++);
+}
int main(void)
{
printf("Starting Example\r\n");
- EddystoneService eddyBeacon(ble, 1000, 10,UIDnamespace, UIDinstance, "http://www.mbed.org", sizeof("http://www.mbed.org"));
+ tlmTemperature.attach(tlmTemperatureCallback,2.0f);
+ tlmBattery.attach(tlmBatteryCallback, 1.0f);
printf("Running...\r\n");
while (true) {
ble.waitForEvent();
