(New Feature) Added support for Precision Time Protocol PTPSlave().
(New Feature) Added a compile warning when PanelTemp() is used on Granite 9/10, which uses CPUTemp() instead.
(New Feature) Added a new setting "FTPClientActivePort". This setting specifies the starting port the datalogger may use in Active FTP mode. It defines the lower bound of a block of 1000 consecutive TCP ports, which will be used for FTP data connections initiated by the datalogger. Each new data connection will use the next available port within this range. Default value: 48000. Allowed range: 8000 to 48000.
(New Feature) Added TableFieldNames() to the CRBasic Instruction list. Retrieves the name of a data table or one of its fields by index, enabling dynamic (at run time) identification of a DataTable and field names.
(New Feature) Added TableName.BytesPerRecord to return number of bytes in a DataTable record.
(New Feature) Added support for web.obj.gz files to automatically execute an embedded recipe.json when detected.
(New Feature) Added GOESAppend compile directive; see CRBasic help for details.
(New Feature) Added Base64() instruction; see CRBasic help for details.
(New Feature) Added extra recovery mechanism for MQTT TLS Mutual Authentication failure.
(New Feature) MQTT publish now includes a publish timestamp "publish_ts" in the payload for the GEOJSON format.
(Major) Refined the Operating System download process over MQTT.
(Major) Fixed memory allocation for MQTT during compile time. This resolved a potential "out of memory" compile error or a watchdog fault.
(Major) Fixed an issue where heavy PPP traffic could overwhelm the system, causing the datalogger to drop outgoing packets. This sometimes led to missed LCP echo packets and unexpected connection closures, even when the link appeared healthy. Although the TCP layer would perform retries to prevent data loss, these retries significantly reduced data transfer rates.
(Major) Fixed watchdog resets caused by memory corruption due to TCP task queue buildup over slow data links, most observed when RTMC projects were published on the datalogger.
(Minor) Fixed the PACP capture on the PPP interface.
(Minor) Fixed an issue where TLS certificates specified in settings were applied to all internet clients using TLS, instead of only to the MQTTS client when mutual TLS authentication was enabled.
(Minor) Fixed an issue where Implicit FTPS Active Mode incorrectly used reserved ports for data connections, leading to server rejections.
(Minor) A compile error is now triggered if FieldNames() contains a dot (.), and a warning is issued for other operator symbols; non-CRBasic-compliant field names will be deprecated and disallowed in a future update.
(Minor) The PakBus/TCP port (default 6785) is now restricted to PakBus traffic only; previously, if Telnet was enabled, the datalogger terminal could also be accessed on this port in addition to the standard Telnet port 23.
(Minor) When viewing the password settings via the CR1000KD, the value will now be displayed as '...' for security purposes.
(Minor) Modified GOES behavior for the TX325 to allow tables to be concatenated in a transmission.
(Minor) Improved handling of PPP flag bytes to ensure correct packet boundaries after a transmission error.
(Minor) Lowered the TCP keepalive interval for FTPClient() command connections to prevent firewalls from closing them during long transfers. On slow links, the command connection can sit idle while data is still transferring, triggering idle timeouts.
(Minor) Updated datalogger HTTP client to correctly handle absolute URLs in Location and Content-Location headers during redirection.
(Minor) Fixed IIF() to work with Type Double. This also fixed a potential "Pointer is out of bounds" compile error.
(Minor) Improved MQTT trace in terminal. It now includes PUBACK ID's.