Button initiated config service

Dependencies:   BLE_API_EddystoneConfigService_2 mbed nRF51822

Fork of BLE_EddystoneBeaconConfigService_3 by URIBeacon

Files at this revision

API Documentation at this revision

Comitter:
mbedAustin
Date:
Mon Jul 27 21:00:35 2015 +0000
Parent:
31:11e7a505a4be
Child:
33:8c65879e7d52
Commit message:
Things are working, just not correctly. Passing all but the last few validation tests. Seems that the URI being passed, flags and a couple other things are not propagating properly.

Changed in this revision

EddystoneConfigService.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/EddystoneConfigService.h	Mon Jul 27 18:15:14 2015 +0000
+++ b/EddystoneConfigService.h	Mon Jul 27 21:00:35 2015 +0000
@@ -39,14 +39,16 @@
 static const uint8_t BEACON_EDDYSTONE[] = {0xAA, 0xFE};
 
 //Debug is disabled by default
-#if 0
+#if 1
 #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(x, ##__VA_ARGS__) 
 #else
 #define DBG(x, ...) //wait_us(10);
 #define WARN(x, ...) //wait_us(10);
 #define ERR(x, ...)
+#define INFO(x, ...)
 #endif
 
 /**
@@ -608,6 +610,9 @@
         uint8_t serviceData[SERVICE_DATA_MAX];
         unsigned serviceDataLen = 0;
         unsigned beaconPeriod = params.beaconPeriod;
+        
+        setUIDFrameData(params.txPowerMode,defaultUidNamespaceID, defaultUidInstanceID);
+        //setURLFrameData(params.txPowerMode,(char *)params.uriData);
 
         // Initialize Frame transition
         frameIndex = 0;
@@ -618,20 +623,20 @@
         /* Reinitialize the BLE stack. This will clear away the existing services and advertising state. */
         ble.shutdown();
         ble.init();
-        ble.setTxPower(params.advPowerLevels[params.txPowerMode]);
+        ble.setTxPower(params.txPowerMode);
         ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
         ble.setAdvertisingInterval(beaconPeriod);
         extern void saveURIBeaconConfigParams(const Params_t *paramsP); /* forward declaration; necessary to avoid a circular dependency. */
         saveURIBeaconConfigParams(&params);
 
-        setTLMFrameData(0x00,0x2222,0x3333,0x01,0x02); // Initialize TLM Data, for testing, remove for release
+        //setTLMFrameData(0x00,0x2222,0x3333,0x01,0x02); // Initialize TLM Data, for testing, remove for release
         updateTlmPduCount(0);
         updateTlmTimeSinceBoot(0);
 
         // Construct TLM Frame in initial advertising.
         serviceData[serviceDataLen++] = BEACON_EDDYSTONE[0];
         serviceData[serviceDataLen++] = BEACON_EDDYSTONE[1];
-        serviceDataLen += constructURLFrame(serviceData+serviceDataLen,SERVICE_DATA_MAX);
+        serviceDataLen += constructTLMFrame(serviceData+serviceDataLen,SERVICE_DATA_MAX);
 
         updateAdvPacket(serviceData, serviceDataLen);
         ble.gap().startAdvertising();
@@ -667,12 +672,18 @@
         } else if (handle == uriDataChar.getValueHandle()) {
             params.uriDataLength = writeParams->len;
             memcpy(params.uriData, writeParams->data, params.uriDataLength);
+            //memcpy(defaultUriData, writeParams->data, params.uriDataLength);
+            //defaultUriDataLength = params.uriDataLength;
+            DBG("URI = %s, URILen = %d", writeParams->data, writeParams->len);
         } else if (handle == flagsChar.getValueHandle()) {
             params.flags = *(writeParams->data);
+            DBG("flagsChar = 0x%x",params.flags);
         } else if (handle == advPowerLevelsChar.getValueHandle()) {
             memcpy(params.advPowerLevels, writeParams->data, sizeof(PowerLevels_t));
+            DBG("PowerLevelsChar = %4x",writeParams->data);
         } else if (handle == txPowerModeChar.getValueHandle()) {
             params.txPowerMode = *(writeParams->data);
+            DBG("TxPowerModeChar = %d",params.txPowerMode);
         } else if (handle == beaconPeriodChar.getValueHandle()) {
             params.beaconPeriod = *((uint16_t *)(writeParams->data));
 
--- a/main.cpp	Mon Jul 27 18:15:14 2015 +0000
+++ b/main.cpp	Mon Jul 27 21:00:35 2015 +0000
@@ -35,7 +35,7 @@
  *
  * The following help with this switch.
  */
-static const int CONFIG_ADVERTISEMENT_TIMEOUT_SECONDS = 5;  // Duration after power-on that config service is available.
+static const int CONFIG_ADVERTISEMENT_TIMEOUT_SECONDS = 60;  // Duration after power-on that config service is available.
 Ticker configAdvertisementTimeout;
 
 /**