Particle Device OS Updates: Comments

Hey @peekay123 just following up on this one… it is already noted that pinMode() should be used before calling the fast GPIO functions:
https://docs.particle.io/reference/firmware/photon/#low-level-input-output

1 Like

I think something has stuffed up. Tried recompiling and flashing my user code to Electron this morning and it runs with flashing magenta, sign that you have changed the default firmware on the cloud build and my local version is out of date. Inspect cloud build, no sign as to what default version is but 0.5.3 is mentioned but not as pre release. No hint in the Firmware Update thread on forum. Decided to just to a particle update in CLI and see what happens, it did update to 0.5.3 even though no mention on the forum. However compiled a test program and flashed it and nothing works, I suspect there are some links missing,
Anyone out there to help???

@pNrie - did you get this resolved? If so it would be interesting to know what the resolution was. If not, can you confirm the firmware target selection for your device in the WebIDE is still set to what you had selected.

Is it the intended behaviour with 0.6.1-rc.1 to get a spark/status/safe-mode event on each wake from deep sleep on Electrons?

The funny thing is, that I get the expected spark/device/last_reset power_management event in consold, but then a second or so after I get the spark/status/safe-mode event inserted below the already present spark/device/last_reset power_management line.

Where can I find the description of the additional flags for System.sleep()?
Even in
https://prerelease-docs.particle.io/reference/firmware/electron/#sleep-sleep-
I can only finde SLEEP_NETWORK_STANDBY but no mention of SLEEP_MODE_SOFTPOWEROFF - and are there any more?

3 Likes

10 posts were split to a new topic: Problems flashing system firmware to Electron

Does Cloud API increase the publish length?. Since Firmware 0.8.0 onward it should be 622, but I am getting only 255 when subscribing to the events.

1 Like

I don’t think the change for the API has been deployed yet. Devices running 0.8.0-rc.3 and later can publish 622 characters, but publishing from the API is currently limited to 255 characters until the cloud side change is released.

1 Like

That's news to me!

So I can now Particle Publish 622 bytes of data in a single publish event?

Yup!

API Field Prior to 0.8.0 Since 0.8.0-rc.4 Comment
Variable Key 12 64
Variable Data 622 622
Function Key 12 64
Function Argument 63 622
Publish/Subscribe Event Name 64 64
Publish/Subscribe Event Data 255 622 Cloud API currently still limits to 255, but Device OS can publish 622. Will change Cloud API to accept 622.
Number of registered Functions or Variables limited by memory available limited by memory available

More Info

4 Likes

Is there a release date for the cloud side changes yet? Also, what is the best list/place to get the most up-to-date release information? The release notes on GitHub?

The cloud side changes are done - you can publish 622 bytes from the API to a device now.

1 Like

I’ve been trying to publish more than 240 bytes but it fails everytime. I noticed the documentation online says the cloud-side changes haven’t been fixed yet - which is the correct answer?

The documentation is wrong. It appears to work, as long as the device being sent the event supports it:

rickkas7:~ rickkas7$ particle publish electron1 012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Published private event: electron1

rickkas7:~ rickkas7$ particle publish electron1 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Server said event data must be less than623bytes
Could not publish event: [object Object]

Update: I removed the warning about the cloud side not being implemented from the docs.

4 Likes

I have an Argon running 0.8.0-rc.27. I am trying to send ~450 bytes of event data. Particle.publish event data is clearly being truncated at 255 bytes, however sending the same data via Mesh.publish does not suffer this limitation.

Yup, I can confirm that.
As it seems the device OS fork for mesh devices was taken before the extension of the publish buffer.
@rickkas7, can you forward that?

Test code

const char txt[] = 
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789A"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789B"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789C"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789D"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789E"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789F"
"123456789112345678921234567893123456789412345678951234567896123456789712345678981234567899123456789G";

bool done = false;
void setup() {
    Particle.subscribe("send", pubLen, MY_DEVICES);
}

void loop() {
    if (done) return;
    Particle.publish("send", txt, PRIVATE);
    done = true;
    delay(5000);
}

void pubLen(const char *event, const char *data) {
    char len[6];
    snprintf(len, sizeof(len), "%5d", strlen(data));
    Particle.publish("len", len, PRIVATE);
    done = false;
}

(Photon 1.0.0 reports len == 622, Argon 0.8.0-rc.27 reports len == 255)

4 Likes

Yes, thanks for mentioning this, I also ran into this problem.
Besides the data also the variable key and function key are limited by 12 characters for the Mesh devices (tested on Xenon and Argon 0.8.0-rc.27) instead of the 64 mentioned in the docs for devices on 0.8.0.
Compiler says:

In Particle.variable, name must be 12 characters or less

Hope this will be fixed in the next release candidate :smiley:

1 Like

I see the same 255 limit on 0.9.0 using Argon.

I have now filed that issue
https://github.com/particle-iot/device-os/issues/1744

1 Like

This looks to be resolved in 1.1.0-rc.1 and 1.2.0-beta.1
https://github.com/particle-iot/device-os/releases/tag/v1.1.0-rc.1