@@ -6,6 +6,152 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to
7
7
[ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
8
8
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
+
9
155
## [ 1.19.0] - 2025-01-10
10
156
11
157
### 📈 Added
@@ -2034,7 +2180,8 @@ earlier versions!
2034
2180
call the normal ` z_fatal_error` handler at the end of Memfault fault
2035
2181
processing instead of rebooting the system. This is useful when user code
2036
2182
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
2038
2185
[# 59](https://github.com/memfault/memfault-firmware-sdk/issues/59).
2039
2186
2040
2187
- Add a timeout to the initial `send ()` socket operation in
@@ -2205,7 +2352,8 @@ earlier versions!
2205
2352
- Fix a 🐛 and warnings involving older Zephyr header paths. Resolves
2206
2353
[#62](https://github.com/memfault/memfault-firmware-sdk/issues/62) and
2207
2354
[#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.
2209
2357
2210
2358
### Changes between Memfault SDK 1.1.2 and 1.1.3 - Aug 8, 2023
2211
2359
@@ -2219,7 +2367,7 @@ earlier versions!
2219
2367
override the default. For Zephyr, the Kconfig option
2220
2368
`CONFIG_MEMFAULT_GNU_BUILD_ID_SOURCE_BUILTIN` can be used to override the
2221
2369
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
2223
2371
[#60](https://github.com/memfault/memfault-firmware-sdk/pull/60) 🎉
2224
2372
- Improvements to the ARMv7-R exception handling when the supervisor processor
2225
2373
mode is active
@@ -2245,7 +2393,7 @@ earlier versions!
2245
2393
- Zephyr:
2246
2394
- Fix a build error when `CONFIG_MEMFAULT_LOGGING=n`, see
2247
2395
[#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!
2249
2397
- Fix a potential bug in the Memfault Log Backend when
2250
2398
`CONFIG_LOG_MODE_IMMEDIATE=y` when flushing of fault logs during a crash
2251
2399
0 commit comments