Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
6 years, 5 months ago.
How to update the URL payload of a BLE Eddystone advertisement in runtime
Hello,
I am new to the BLE code and I am not being able to update the URL payload of a BLE Eddystone advertisement in runtime.
I am trying to use the eddystoneServicePtr pointer and the setURLData() method but I don't get the expected update in the advertisement.
Can someone please help me with this?
include the mbed library with this snippet
int main(void) { pc.printf("INFO: Loop initializing - main thread running.\n"); buttonA.rise(&flagA); buttonB.rise(&flagB); BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); ble.init(bleInitComplete); /* SpinWait for initialization to complete. This is necessary because the * BLE object is used in the main loop below. */ while (ble.hasInitialized() == false) { /* spin loop */ } while (true) { if (triggerA) { pc.printf("INFO: TriggerA sensed.\n"); /* Do blocking calls or whatever hardware-specific action is * necessary to poll the sensor. */ wait(1); /* Set Score */ scoreA = scoreA + 1; /* Update advertisement */ /* ... */ eddyServicePtr->setURLData(current_match_url); triggerA = false; alivenessLED = false; } if (triggerB) { pc.printf("INFO: TriggerB sensed.\n"); /* Do blocking calls or whatever hardware-specific action is * necessary to poll the sensor. */ wait(1); /* Set Score */ scoreB = scoreB + 1; /* Update advertisement */ /* ... */ eddyServicePtr->setURLData(current_match_url); triggerB = false; alivenessLED = false; } ble.waitForEvent(); /* this will return upon any system event (such as an interrupt or a ticker wakeup) */ } }