11//! @file
22//!
33//! Copyright (c) Memfault, Inc.
4- //! See License.txt for details
4+ //! See LICENSE for details
55//!
66//! @brief
77//! See header for more details
1313#include "memfault/core/build_info.h"
1414#include "memfault_build_id_private.h"
1515
16+ // OS version information
17+ #if defined(MEMFAULT_OS_VERSION_NAME ) ^ defined(MEMFAULT_OS_VERSION_STRING )
18+ #error "MEMFAULT_OS_VERSION_NAME and MEMFAULT_OS_VERSION_STRING must be both defined or undefined"
19+ #elif !(defined(MEMFAULT_OS_VERSION_NAME ) && defined(MEMFAULT_OS_VERSION_STRING ))
20+ #if defined(__ZEPHYR__ )
21+ // Either Zephyr or NCS. We can then rely on the GNU __has_include extension to
22+ // be available.
23+ #if __has_include ("ncs_version.h" )
24+ #include "ncs_version.h"
25+ #define MEMFAULT_OS_VERSION_NAME "ncs"
26+ #define MEMFAULT_OS_VERSION_STRING NCS_VERSION_STRING
27+ #else
28+ // This is Zephyr's version.h file, since Memfault's is namespaced as
29+ // "memfault/version.h".
30+ #include <version.h>
31+ #define MEMFAULT_OS_VERSION_NAME "zephyr"
32+ #define MEMFAULT_OS_VERSION_STRING KERNEL_VERSION_STRING
33+ #endif /* __has_include("ncs_version.h") */
34+
35+ #elif defined(ESP_PLATFORM )
36+ // ESP-IDF, use the command-line defined IDF_VER string
37+ #define MEMFAULT_OS_VERSION_NAME "esp-idf"
38+ #define MEMFAULT_OS_VERSION_STRING IDF_VER
39+ #else
40+ // No OS version information available
41+ #define MEMFAULT_OS_VERSION_NAME ""
42+ #define MEMFAULT_OS_VERSION_STRING ""
43+ #endif /* defined(__ZEPHYR__) */
44+ #endif /* defined(MEMFAULT_OS_VERSION_NAME) ^ defined(MEMFAULT_OS_VERSION_STRING) \
45+ */
46+
1647#if MEMFAULT_USE_GNU_BUILD_ID
1748
1849// Note: This variable is emitted by the linker script
@@ -24,6 +55,10 @@ MEMFAULT_BUILD_ID_QUALIFIER sMemfaultBuildIdStorage g_memfault_build_id = {
2455 .short_len = MEMFAULT_EVENT_INCLUDED_BUILD_ID_SIZE_BYTES ,
2556 .storage = MEMFAULT_GNU_BUILD_ID_SYMBOL ,
2657 .sdk_version = MEMFAULT_SDK_VERSION ,
58+ .os_version = {
59+ .name = MEMFAULT_OS_VERSION_NAME ,
60+ .version = MEMFAULT_OS_VERSION_STRING ,
61+ },
2762};
2863#else
2964
@@ -38,5 +73,9 @@ MEMFAULT_BUILD_ID_QUALIFIER sMemfaultBuildIdStorage g_memfault_build_id = {
3873 .short_len = MEMFAULT_EVENT_INCLUDED_BUILD_ID_SIZE_BYTES ,
3974 .storage = g_memfault_sdk_derived_build_id ,
4075 .sdk_version = MEMFAULT_SDK_VERSION ,
76+ .os_version = {
77+ .name = MEMFAULT_OS_VERSION_NAME ,
78+ .version = MEMFAULT_OS_VERSION_STRING ,
79+ },
4180};
4281#endif
0 commit comments