Ioto 2.4.0 Update

I’m pleased to announce a big feature release of Ioto 2.4.0.

This is a release that has breaking changes and significant new features including a port to FreeRTOS and ESP32, on-demand MQTT connections, and a secure Printf replacement.

Breaking Changes

  • The mqttAlloc and mqttConnect APIs have changed. The socket has been moved from mqttAlloc to mqttConnect. The MQTT callback now provides attach and detach events so the user can attach a socket on demand.
  • The jsonGet API has been refactored into jsonGet and jsonGetClone. jsonGet returns a reference, jsonGetClone returns an allocated string which must be freed.
  • Move the manager apps into a separate distribution “Ioto Apps”
  • The safe runtime initialization routine has changed and now takes only 2 args: a fiber function and argument. The stackSize has been removed in favor of the API: rSetFiberStack.

Features

  • ESP32 and FreeRTOS support
  • On-demand MQTT connections. The mqttPublish and mqttSubscribe routines will automatically connect if required.
  • The mqttConnect username and password parameters have been moved to a separate API mqttSetCredentials.
  • MQTT scheduled connections and disconnections.
  • An mqtt.timeout configuration parameter defines how long the connection should live.
  • An R_TIMEOUT event has been added to the runtime for when blocking / waiting APIs timeout past their deadline.
  • Add rEnter and rLeave APIs to define fiber critical sections.
  • Mqtt message receipt has been optimized.
  • Improve the rState definition. Set to R_STARTED on launch and R_INITIALIZED when the safe runtime is initialized and R_READY when the app is ready. Also set ioto->ready.
  • Enhanced json query/edit and converter program for JSON and JSON5
  • Optimized web requests
  • Reduced memory and stack load
  • Fast event path for direct calls without invoking a fiber
  • Modular Safe Runtime to select only required components
  • Safe, secure Printf replacement that is tolerant of NULLs

Fixes

  • The rCloseSocket API no longer frees an attached wait structure which is freed in rFreeSocket.
  • The runtime svalue() API converts the strings “never” and “forever” into slightly smaller numbers so that date arithmetic will not overflow.
  • Run expired events in rWait
  • Set of minor fixes to apps
  • Fix some memory leaks
  • Cleanup some compiler warnings
  • Optimize mqtt message throttling
  • Fix issue with buffered data synchronized updates

Upgrading

This should be a simple upgrade for all users, but there are a few noted API evolutions.

Download

Go to the Builder and navigate to the Product List to download. Select a product using “Ioto” as the device agent and click the Download icon.

Ongoing Maintenance

If you have questions, please contact us at: sales@embedthis.com.

Comments

Make a Comment

Thank You!

Messages are moderated.

Your message will be posted shortly.

Sorry

Your message could not be processed at this time.

Error:

Please retry later.

OK