@@ -6,6 +6,152 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66and this project adheres to
77[ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
88
9+ ## [ 1.20.0] - 2025-02-06
10+
11+ ### 📈 Added
12+
13+ - General:
14+
15+ - Make ` memfault_reboot_reason_get() ` and
16+ ` memfault_platform_metrics_timer_boot() ` weakly defined in the
17+ [ platform templates] ( ports/templates ) to make removing them optional when
18+ first integrating
19+
20+ - Added a configuration option, ` MEMFAULT_CRC16_BUILTIN ` , that permits
21+ disabling the built-in [ crc16] ( components/util/src/memfault_crc16_ccitt.c )
22+ implementation. The user should provide a compatible implementation of
23+ ` memfault_crc16_compute() ` . For example, if the Zephyr CRC library is used,
24+ a compatible implementation would be:
25+
26+ ``` c
27+ #include < zephyr/sys/crc.h>
28+
29+ uint16_t memfault_crc16_compute (uint16_t crc_initial_value, const void * data,
30+ size_t data_len_bytes) {
31+ return crc16_itu_t(crc_initial_value, data, data_len_bytes);
32+ }
33+ ```
34+
35+ A Zephyr Kconfig setting, `CONFIG_MEMFAULT_CRC16_BUILTIN`, is also provided
36+ to control this option.
37+
38+ Thanks to [@JordanYates](https://github.com/JordanYates) for submitting this
39+ feature request in
40+ [#84](https://github.com/memfault/memfault-firmware-sdk/issues/84) !
41+
42+ - Added an example ` daily_heartbeat ` session to the
43+ [ FreeRTOS QEMU example] ( examples/freertos/src/metrics.c ) , which demonstrates
44+ how to send a daily heartbeat session to Memfault. Daily Heartbeats are a
45+ special category of Session Metrics, and can be used to track device
46+ properties over a longer interval than heartbeat metrics.
47+
48+ - Added an optional field to the built-in
49+ [ FreeRTOS task stack usage metrics] ( ports/include/memfault/ports/freertos/thread_metrics.h ) ,
50+ ` .get_task_handle ` , which allows the user to provide a custom function to
51+ get the task handle for a given thread name, instead of using the thread
52+ name to identify the thread. This is useful in systems where there are
53+ threads with ambiguous names. The
54+ [ ESP32 example app] ( examples/esp32/apps/memfault_demo_app/main/metrics.c ) is
55+ updated to use this feature for ESP-IDF <5.3, where on dual-core SOCs, the
56+ per-core idle threads are both named ` IDLE ` .
57+
58+ - nRF Connect SDK:
59+
60+ - Added a new Kconfig symbol ` CONFIG_MEMFAULT_FOTA_HTTP_FRAG_SIZE ` to enable
61+ controlling the HTTP fragment size when using NCS >=2.9.9. Previously,
62+ ` CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE_1024=y ` was required, but this option
63+ was deprecated in NCS 2.9.9.
64+
65+ - Add built-in support for the ` thermal_cpu_c ` (CPU temperature) metric for
66+ nRF5x chips (nRF52 and nRF54 app core supported). Use the Kconfig setting
67+ ` MEMFAULT_METRICS_CPU_TEMP ` to disable the metric.
68+
69+ - Zephyr
70+
71+ - Add a new Kconfig setting, ` CONFIG_MEMFAULT_HTTP_CLIENT_TIMEOUT_MS ` , which
72+ controls the timeout for the Memfault HTTP client, used both for chunk
73+ upload and OTA operations. The default timeout is 5 seconds. Connections
74+ with poor latency may require a longer timeout to avoid premature
75+ disconnection. Thanks to [ @chirambaht ] ( https://github.com/chirambaht ) for
76+ submitting this in
77+ [ #86 ] ( https://github.com/memfault/memfault-firmware-sdk/issues/86 ) !
78+
79+ ### 🐛 Fixed
80+
81+ - ESP-IDF:
82+
83+ - Use the configuration ` MEMFAULT_LOG_MAX_LINE_SAVE_LEN ` to set the max length
84+ of a log line when ` CONFIG_MEMFAULT_LOG_USE_VPRINTF_HOOK=y ` , which is the
85+ default setting in ESP-IDF. Previously, the log line was arbitrarily
86+ truncated in the Memfault vprintf hook before being saved to the Memfault
87+ log buffer.
88+
89+ - General:
90+
91+ - Remove the ` MEMFAULT_PACKED ` attribute for the ` eMemfaultRebootReason `
92+ declaration; this compiler extension is not supported on IAR EWARM's
93+ compiler. Change the assembly shim to properly zero-extend the enum constant
94+ to avoid ABI issues when invoking the C fault handling code.
95+
96+ ### 🛠️ Changed
97+
98+ - General:
99+
100+ - Remove an extra underscore in the folder name when using the
101+ [ ` eclipse_patch.py ` ] ( scripts/eclipse_patch.py ) utility with a port name that
102+ is one folder deep (e.g. ` freertos ` )
103+
104+ - Rename the ` memfault_crc16_ccitt_compute() ` function to
105+ ` memfault_crc16_compute() ` . The CRC-16 algorithm used is canonically named
106+ ` CRC-16/XMODEM ` , ** not** ` CRC-16/CCITT ` (aka ` CRC-16/KERMIT ` ). The file
107+ implementing that function is left as ` memfault_crc16_ccitt.c ` for backwards
108+ compatibility. Thanks to [ @JordanYates ] ( https://github.com/JordanYates ) for
109+ reporting this issue in
110+ [ #83 ] ( https://github.com/memfault/memfault-firmware-sdk/issues/83 ) !
111+
112+ - Zephyr:
113+
114+ - Add a missing Kconfig dependency to ` MEMFAULT_METRICS_THREADS ` ,
115+ ` INIT_STACKS ` . Also add missing dependencies to the Kconfig option
116+ ` MEMFAULT_METRICS_DEFAULT_SET_ENABLE ` :
117+
118+ - ` INIT_STACKS `
119+ - ` THREAD_RUNTIME_STATS `
120+ - ` THREAD_STACK_INFO `
121+
122+ Thanks to [ @JordanYates ] ( https://github.com/JordanYates ) for reporting this
123+ problem in
124+ [ #86 ] ( https://github.com/memfault/memfault-firmware-sdk/issues/86 ) !
125+
126+ - Update the
127+ [ memfault_zephyr_port_post_data()/memfault_zephyr_port_post_data_return_size()] ( ports/zephyr/common/memfault_platform_http.c )
128+ functions to only open the TLS socket if there is data ready to send, which
129+ is otherwise wasteful, as the socket will be closed without sending any
130+ Memfault data.
131+
132+ - Add an explicit module name, ` memfault-firmware-sdk ` , to the module
133+ manifest. This avoids issues when the SDK is registered in a Zephyr manifest
134+ under a directory name other than ` memfault-firmware-sdk ` . Thanks to
135+ [ @JordanYates ] ( https://github.com/JordanYates ) for reporting this issue in
136+ [ #81 ] ( https://github.com/memfault/memfault-firmware-sdk/issues/81 ) !
137+
138+ - Exclude unused stack space when capturing thread stacks, via the
139+ ` thread.stack_info.delta ` property. This reduces the amount of coredump
140+ storage used to capture thread stacks, especially when
141+ ` CONFIG_STACK_POINTER_RANDOM ` or ` CONFIG_THREAD_LOCAL_STORAGE ` is enabled.
142+ Thanks to [ @JordanYates ] ( https://github.com/JordanYates ) for reporting this
143+ issue in [ #81 ] ( https://github.com/memfault/memfault-firmware-sdk/issues/85 ) !
144+
145+ - nRF Connect SDK:
146+
147+ - Remove use of child and parent image functionality in the nRF9160 sample
148+ app, and replace with sysbuild support. Child image support was deprecated
149+ in NCS 2.7.0 in favor of sysbuild.
150+
151+ - Use the downloader library instead of the download client library when using
152+ NCS >= 2.9.9. The download_client was recently deprecated in favor of the
153+ downloader. Download client support is now in ` memfault_fota_legacy.c ` .
154+
9155## [ 1.19.0] - 2025-01-10
10156
11157### 📈 Added
@@ -2034,7 +2180,8 @@ earlier versions!
20342180 call the normal ` z_fatal_error` handler at the end of Memfault fault
20352181 processing instead of rebooting the system. This is useful when user code
20362182 needs to run within ` k_sys_fatal_error_handler()` just prior to system
2037- shutdown. Thanks to @JordanYates for the patch! Fixes
2183+ shutdown. Thanks to [@JordanYates](https://github.com/JordanYates) for the
2184+ patch! Fixes
20382185 [# 59](https://github.com/memfault/memfault-firmware-sdk/issues/59).
20392186
20402187 - Add a timeout to the initial `send ()` socket operation in
@@ -2205,7 +2352,8 @@ earlier versions!
22052352 - Fix a 🐛 and warnings involving older Zephyr header paths. Resolves
22062353 [#62](https://github.com/memfault/memfault-firmware-sdk/issues/62) and
22072354 [#57](https://github.com/memfault/memfault-firmware-sdk/issues/57). Thanks
2208- @JordanYates and @YHusain1 for reporting these issues.
2355+ [@JordanYates](https://github.com/JordanYates) and @YHusain1 for reporting
2356+ these issues.
22092357
22102358### Changes between Memfault SDK 1.1.2 and 1.1.3 - Aug 8, 2023
22112359
@@ -2219,7 +2367,7 @@ earlier versions!
22192367 override the default. For Zephyr, the Kconfig option
22202368 `CONFIG_MEMFAULT_GNU_BUILD_ID_SOURCE_BUILTIN` can be used to override the
22212369 builtin section specifier + linker fragment for the GNU build ID. Thanks to
2222- @JordanYates for posting this change in
2370+ [ @JordanYates](https://github.com/JordanYates) for posting this change in
22232371 [#60](https://github.com/memfault/memfault-firmware-sdk/pull/60) 🎉
22242372- Improvements to the ARMv7-R exception handling when the supervisor processor
22252373 mode is active
@@ -2245,7 +2393,7 @@ earlier versions!
22452393- Zephyr:
22462394 - Fix a build error when `CONFIG_MEMFAULT_LOGGING=n`, see
22472395 [#56](https://github.com/memfault/memfault-firmware-sdk/issues/56). Thanks
2248- to @JordanYates for reporting this issue!
2396+ to [ @JordanYates](https://github.com/JordanYates) for reporting this issue!
22492397 - Fix a potential bug in the Memfault Log Backend when
22502398 `CONFIG_LOG_MODE_IMMEDIATE=y` when flushing of fault logs during a crash
22512399
0 commit comments