OTA Updates
System.updatesPending()
// System.updatesPending() example
SYSTEM_MODE(SEMI_AUTOMATIC);
void setup() {
// When disabling updates by default, you must use either system
// thread enabled or system mode SEMI_AUTOMATIC or MANUAL
System.disableUpdates();
// After setting the disable updates flag, it's safe to connect to
// the cloud.
Particle.connect();
}
bool isSafeToUpdate() {
// ...
return true;
}
void loop() {
// NB: System.updatesPending() should only be used in a Product
if (isSafeToUpdate() && System.updatesPending()) {
System.enableUpdates();
// Wait 2 minutes for the update to complete and the device
// to restart. If the device doesn't automatically reset, manually
// reset just in case.
unsigned long start = millis();
while (millis() - start < (120 * 1000)) {
Particle.process();
}
// You normally won't reach this point as the device will
// restart automatically to apply the update.
System.reset();
}
else {
// ... do some critical activity that shouldn't be interrupted
}
}
System.updatesPending()
indicates if there is a firmware update pending that was not delivered to the device while updates were disabled. When an update is pending, the firmware_update_pending
system event is emitted and the System.updatesPending()
function returns true
.
When new product firmware is released with the intelligent
option
enabled, the firmware is delivered immediately after release for devices
that have firmware updates are enabled.
For devices with updates disabled, firmware
updates are deferred by the device. The device is notified of the
pending update at the time of deferral. The system event
firmware_update_pending
is emmitted and the System.updatesPending()
function returns true
. The update is delivered when the application
later re-enables updates by calling System.enableUpdates()
, or when
updates are force enabled from the cloud, or when the device is restarted.
In addition, a cloud-side system event will be emitted when a pending
OTA update is queued,
particle/device/updates/pending
with a data value of true
.
Version | Developer Devices | Product |
---|---|---|
Device OS < 1.2.0 | N/A | N/A |
Device OS >= 1.2.0 | N/A | Supported |