|
1 | 1 | # Memfault Firmware SDK Changelog
|
2 | 2 |
|
| 3 | +## [1.5.0] - 2023-11-29 |
| 4 | + |
| 5 | +### :rocket: New Features |
| 6 | + |
| 7 | +- General: |
| 8 | + |
| 9 | + - Added support for Session Metrics. These are similar to Heartbeat Metrics, |
| 10 | + except they are set on an arbitrary session interval (not required to be |
| 11 | + aligned to Heartbeat interval). Session metrics are useful for tracking |
| 12 | + device operation sessions- for example, measuring properties for a BLE |
| 13 | + connected stove top during a single cooking session. Session metrics |
| 14 | + automatically include a "session duration" timer metric. |
| 15 | + |
| 16 | + Session metrics must be defined using the new session-specific APIs, but are |
| 17 | + set using the same `MEMFAULT_METRIC_SET_*` APIs as Heartbeat metrics. |
| 18 | + |
| 19 | + See the |
| 20 | + [`metrics.h` header file](components/include/memfault/metrics/metrics.h) for |
| 21 | + usage details. |
| 22 | + |
| 23 | + - New built in metrics for measuring the following properties: |
| 24 | + |
| 25 | + - **crash-free hours**: enabled by default, generates `operational_hours` |
| 26 | + and `operational_crashfree_hours` metrics, which are automatically |
| 27 | + processed by Memfault |
| 28 | + |
| 29 | + - **battery drop**: enabled with `#define MEMFAULT_METRICS_BATTERY_ENABLE 1` |
| 30 | + in `memfault_platform_config.h`. See more information in the |
| 31 | + [header file](components/include/memfault/metrics/battery.h) for how to |
| 32 | + use the metric. |
| 33 | + |
| 34 | + - **connectivity**: enabled with |
| 35 | + `MEMFAULT_METRICS_SYNC_SUCCESS`/`MEMFAULT_METRICS_MEMFAULT_SYNC_SUCCESS`/`MEMFAULT_METRICS_CONNECTIVITY_CONNECTED_TIME`. |
| 36 | + See more information in the |
| 37 | + [header file](components/include/memfault/metrics/connectivity.h) for how |
| 38 | + to use the metric. |
| 39 | + |
| 40 | + These metrics are considered first-class metrics by Memfault, are exempt |
| 41 | + from quota limits, and are automatically processed by Memfault. |
| 42 | + |
| 43 | +- Zephyr: |
| 44 | + |
| 45 | + - By default, set the `sync_memfault_successful`/`sync_memfault_failure` |
| 46 | + metrics for devices using Memfault's Zephyr HTTP chunk upload functionality. |
| 47 | + This feature is controlled with the `CONFIG_MEMFAULT_SYNC_MEMFAULT_METRICS` |
| 48 | + Kconfig flag. |
| 49 | + |
| 50 | + - Automatically set captured timestamps for events for devices that either |
| 51 | + implement the RTC subsystem, or use the Nordic `date_time` library. The |
| 52 | + appropriate option is enabled by default based on which features are |
| 53 | + available, and can be controlled with the Kconfig flags: |
| 54 | + `CONFIG_MEMFAULT_SYSTEM_TIME_SOURCE_DATETIME` or |
| 55 | + `CONFIG_MEMFAULT_SYSTEM_TIME_SOURCE_RTC`. |
| 56 | + |
| 57 | +- ESP-IDF: |
| 58 | + |
| 59 | + - By default, set the `sync_memfault_successful`/`sync_memfault_failure` |
| 60 | + metrics for devices using Memfault's ESP-IDF HTTP chunk upload |
| 61 | + functionality. This feature is controlled with the |
| 62 | + `CONFIG_MEMFAULT_SYNC_MEMFAULT_METRICS` Kconfig flag. |
| 63 | + |
| 64 | +### :chart_with_upwards_trend: Improvements |
| 65 | + |
| 66 | +- General: |
| 67 | + |
| 68 | + - Add the ability to extend the Memfault Demo Shell command table with custom |
| 69 | + commands. This is used in the [`examples/freertos`](examples/freertos) demo |
| 70 | + project to add 2 new commands: |
| 71 | + |
| 72 | + - `freertos_tasks` : print FreeRTOS task information, via `vTaskList()` |
| 73 | + - `freertos_vassert` : trigger a `vAssertCalled` FreeRTOS assert, via |
| 74 | + `configASSERT()` |
| 75 | + |
| 76 | + The Shell extension API is documented in |
| 77 | + [`components/include/memfault/demo/shell_commands.h`](components/include/memfault/demo/shell_commands.h), |
| 78 | + and must be enabled by setting |
| 79 | + `#define MEMFAULT_DEMO_SHELL_COMMAND_EXTENSIONS 1` in |
| 80 | + `memfault_platform_config.h`. |
| 81 | + |
| 82 | +- Zephyr: |
| 83 | + |
| 84 | + - Remove a warning in Zephyr 3.5+ where the `zephyr/random/rand32.h` header |
| 85 | + was renamed to `zephyr/random/random.h`. This was reported in |
| 86 | + [#66](https://github.com/memfault/memfault-firmware-sdk/issues/66)- thanks |
| 87 | + to @nordicjm for reporting this! |
| 88 | + |
| 89 | + - Add test commands for exercising Secure Faults in ARM TrustZone-enabled |
| 90 | + chips: |
| 91 | + |
| 92 | + - `mflt test badptr` |
| 93 | + - `mflt test isr_badptr` |
| 94 | + |
| 95 | + Note that non-TrustZone chips may not trigger a fault when running those |
| 96 | + commands. |
| 97 | + |
| 98 | +- nRF-Connect SDK: |
| 99 | + |
| 100 | + - Add the `CONFIG_AT_SHELL` setting to the |
| 101 | + [`examples/nrf-connect-sdk/nrf9160`](nrf-connect-sdk/nrf9160) sample app. |
| 102 | + This permits sending raw AT commands, useful for testing. |
| 103 | + |
| 104 | + - Specific to nRF-Connect based apps using FOTA, add a warning if |
| 105 | + `CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE > 1024`, which can sporadically error |
| 106 | + out on nRF9160 devices (there is a limitation in the modem, see |
| 107 | + `CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE_2048=y`) and DevZone note |
| 108 | + [here](https://devzone.nordicsemi.com/f/nordic-q-a/68601/tls-2303-bytes-packet-limit/281107). |
| 109 | + |
| 110 | + - Improve FOTA support for nRF-Connect SDK 2.4+, by improving the technique |
| 111 | + used to find the correct Memfault server root cert. Memfault uses a fast CDN |
| 112 | + to improve OTA payload delivery, which uses a different root cert than the |
| 113 | + Memfault device server. Please contact [email protected] immediately if |
| 114 | + you encounter any cert-related issues. |
| 115 | + |
| 116 | +### :boom: Breaking Changes |
| 117 | + |
| 118 | +- The metrics convenience API added in v1.4.3 (`MEMFAULT_HEARTBEAT_SET_*` and |
| 119 | + others) have been renamed to `MEMFAULT_METRIC_SET_*`, to better support the |
| 120 | + new Session Metric feature. |
| 121 | + |
3 | 122 | ## [1.4.4] - 2023-11-13
|
4 | 123 |
|
5 | 124 | ### :chart_with_upwards_trend: Improvements
|
|
19 | 138 | with `0` bytes loaded into the output buffer and `*buf_len` set to `0`.
|
20 | 139 |
|
21 | 140 | - Update all example Metrics implementations to use the new API from v1.4.3
|
22 |
| - (eg `MEMFAULT_HEARTBEAT_SET_UNSIGNED` instead of |
| 141 | + (eg `MEMFAULT_METRIC_SET_UNSIGNED` instead of |
23 | 142 | `memfault_metrics_heartbeat_set_unsigned`).
|
24 | 143 |
|
25 | 144 | - Fix compilation for systems not integrating the
|
|
34 | 153 |
|
35 | 154 | - Add a new streamlined Metrics setter API:
|
36 | 155 |
|
37 |
| - - `MEMFAULT_HEARTBEAT_SET_SIGNED(key_name, signed_value)` |
38 |
| - - `MEMFAULT_HEARTBEAT_SET_UNSIGNED(key_name, unsigned_value)` |
39 |
| - - `MEMFAULT_HEARTBEAT_SET_STRING(key_name, value)` |
40 |
| - - `MEMFAULT_HEARTBEAT_TIMER_START(key_name)` |
41 |
| - - `MEMFAULT_HEARTBEAT_TIMER_STOP(key_name)` |
42 |
| - - `MEMFAULT_HEARTBEAT_ADD(key_name, amount)` |
| 156 | + - `MEMFAULT_METRIC_SET_SIGNED(key_name, signed_value)` |
| 157 | + - `MEMFAULT_METRIC_SET_UNSIGNED(key_name, unsigned_value)` |
| 158 | + - `MEMFAULT_METRIC_SET_STRING(key_name, value)` |
| 159 | + - `MEMFAULT_METRIC_TIMER_START(key_name)` |
| 160 | + - `MEMFAULT_METRIC_TIMER_STOP(key_name)` |
| 161 | + - `MEMFAULT_METRIC_ADD(key_name, amount)` |
43 | 162 |
|
44 | 163 | These APIs can be used in place of the original APIs:
|
45 | 164 |
|
|
71 | 190 | - Add a new out-of-box metric, `wifi_ap_oui`, which will record the associated
|
72 | 191 | AP's Organizationally Unique Identifier (OUI) in the Memfault heartbeat.
|
73 | 192 |
|
| 193 | +- Zephyr: |
| 194 | + |
| 195 | + - Organize the Memfault Coredump Kconfig settings under a |
| 196 | + `Memfault Coredump Settings` submenu, for easier navigation when using |
| 197 | + graphical Kconfig frontends like menuconfig. |
| 198 | + |
74 | 199 | ### :chart_with_upwards_trend: Improvements
|
75 | 200 |
|
76 | 201 | - General:
|
|
0 commit comments