nRF Connect SDK API 3.4.99
Loading...
Searching...
No Matches
vtf_monitoring.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2026 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
6
7#ifndef _VTF_MONITORING_H_
8#define _VTF_MONITORING_H_
9
10#include <stddef.h>
11#include <stdint.h>
12#include <zephyr/sys/iterable_sections.h>
13
21/* Code written at address VTF_CH_INITIALIZATION to verify initialization */
22#define VTF_CH_INITIALIZATION_CODE 0xAA
23
35
36BUILD_ASSERT(VTF_CH_INITIALIZATION == 0, "VTF_CH_INITIALIZATION must be 0");
37BUILD_ASSERT(VTF_CH_BATTERY_VOLTAGE == 1, "VTF_CH_BATTERY_VOLTAGE must be 1");
38BUILD_ASSERT(VTF_CH_DIE_TEMP == 2, "VTF_CH_DIE_TEMP must be 2");
39BUILD_ASSERT(VTF_CH_FREQ_OFFSET == 3, "VTF_CH_FREQ_OFFSET must be 3");
40
50
56
57typedef struct {
58 uint16_t init_code;
59 uint16_t reserved;
61
64 int32_t i32;
65 uint32_t u32;
66 float f32;
67};
68
76
77extern volatile union vtf_sample_value vtf_snapshots[VTF_CH_COUNT];
78
102
118#define VTF_CHANNEL_DEFINE(_sym, _id, _sample_fn, _init_fn, _type, _field, _default) \
119 const int unique_id_##_id = 0; \
120 static const STRUCT_SECTION_ITERABLE(vtf_channel, _sym) = { \
121 .id = (_id), \
122 .sample = (_sample_fn), \
123 .init = (_init_fn), \
124 .default_type = (_type), \
125 .default_value._field = (_default), \
126 }
127
140
145#endif /* _VTF_MONITORING_H_ */
vtf_sample_status
Definition vtf_monitoring.h:42
@ VTF_STATUS_OK
Definition vtf_monitoring.h:44
@ VTF_STATUS_UNINITIALISED
Definition vtf_monitoring.h:46
@ VTF_STATUS_ERROR
Definition vtf_monitoring.h:48
#define VTF_CH_INITIALIZATION_CODE
Definition vtf_monitoring.h:22
vtf_channel_id
Definition vtf_monitoring.h:28
@ VTF_CH_COUNT
Definition vtf_monitoring.h:33
@ VTF_CH_FREQ_OFFSET
Definition vtf_monitoring.h:32
@ VTF_CH_BATTERY_VOLTAGE
Definition vtf_monitoring.h:30
@ VTF_CH_INITIALIZATION
Definition vtf_monitoring.h:29
@ VTF_CH_DIE_TEMP
Definition vtf_monitoring.h:31
static bool vtf_monitoring_is_ready(void)
Check whether VTF monitoring initialization is complete.
Definition vtf_monitoring.h:135
vtf_sample_type
Definition vtf_monitoring.h:51
@ VTF_SAMPLE_TYPE_UINT
Definition vtf_monitoring.h:53
@ VTF_SAMPLE_TYPE_FLOAT
Definition vtf_monitoring.h:54
@ VTF_SAMPLE_TYPE_INT
Definition vtf_monitoring.h:52
volatile union vtf_sample_value vtf_snapshots[VTF_CH_COUNT]
union vtf_sample_value default_value
Definition vtf_monitoring.h:87
enum vtf_channel_id id
Definition vtf_monitoring.h:81
enum vtf_sample_type default_type
Definition vtf_monitoring.h:83
int(* init)(void)
Definition vtf_monitoring.h:100
int(* sample)(struct vtf_sample *out)
Definition vtf_monitoring.h:95
Definition vtf_monitoring.h:79
uint16_t init_code
Definition vtf_monitoring.h:58
uint16_t reserved
Definition vtf_monitoring.h:59
Definition vtf_monitoring.h:57
union vtf_sample_value value
Definition vtf_monitoring.h:72
enum vtf_sample_status status
Definition vtf_monitoring.h:74
enum vtf_sample_type type
Definition vtf_monitoring.h:71
uint64_t timestamp_ms
Definition vtf_monitoring.h:73
Definition vtf_monitoring.h:70
float f32
Definition vtf_monitoring.h:66
int32_t i32
Definition vtf_monitoring.h:64
uint32_t u32
Definition vtf_monitoring.h:65
vtf_metadata_t metadata
Definition vtf_monitoring.h:63
Definition vtf_monitoring.h:62