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