nRF Connect SDK API 3.4.99
Loading...
Searching...
No Matches
rtfw.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2026 Nordic Semiconductor
3 *
4 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5 */
6
7#ifndef RTFW_RTFW_H_
8#define RTFW_RTFW_H_
9
10#include <stdbool.h>
11#include <stddef.h>
12#include <stdint.h>
13#include <zephyr/sys/util.h>
14
22#ifdef __cplusplus
23extern "C" {
24#endif
25
30#define RTFW_EVENT_COMMAND_PROCESSED 1U
31
33#define RTFW_EVENT_TYPE_FRAMEWORK_MAX 0xffU
35#define RTFW_EVENT_TYPE_USER_BASE 0x100U
36
37#define RTFW_FAULT_EVENT_OVERFLOW BIT(0)
38#define RTFW_FAULT_BACKEND_APPLY BIT(1)
39
47 uint32_t id;
48 uint32_t data_len;
49 uint8_t data[CONFIG_RTFW_COMMAND_DATA_SIZE];
50};
51
59struct rtfw_event {
60 uint32_t type;
61 uint32_t value;
62 uint32_t timestamp;
63};
64
85
96typedef int (*rtfw_command_handler_t)(const struct rtfw_command *command,
97 void *user_data);
98
108typedef void (*rtfw_fastpath_handler_t)(void *user_data);
109
117typedef void (*rtfw_pend_source_irq_t)(void *user_data);
118
127typedef void (*rtfw_event_cb_t)(const struct rtfw_event *event, void *user_data);
128
146
164int rtfw_init(const struct rtfw_config *config);
165
182int rtfw_submit(const struct rtfw_command *command);
183
192int rtfw_get_status(struct rtfw_status *status);
193
202
216int rtfw_event_push(const struct rtfw_event *event);
217
218#ifdef __cplusplus
219}
220#endif
221
224#endif /* RTFW_RTFW_H_ */
int rtfw_init(const struct rtfw_config *config)
Initialize the reusable framework.
void(* rtfw_fastpath_handler_t)(void *user_data)
Service a client-owned source in the zero-latency fast path.
Definition rtfw.h:108
int rtfw_event_push(const struct rtfw_event *event)
Push one event from the single producer fast path.
void(* rtfw_pend_source_irq_t)(void *user_data)
Pend the client-owned source interrupt.
Definition rtfw.h:117
int rtfw_get_status(struct rtfw_status *status)
Read a coherent requested/attempted/applied state snapshot.
int rtfw_submit(const struct rtfw_command *command)
Publish a latest-wins command and pend the backend source IRQ.
void rtfw_fastpath_run(void)
Enter the registered zero-latency fast path.
void(* rtfw_event_cb_t)(const struct rtfw_event *event, void *user_data)
Consume an event outside the zero-latency fast path.
Definition rtfw.h:127
int(* rtfw_command_handler_t)(const struct rtfw_command *command, void *user_data)
Process a command in the zero-latency fast path.
Definition rtfw.h:96
uint32_t data_len
Definition rtfw.h:48
uint32_t id
Definition rtfw.h:47
uint8_t data[CONFIG_RTFW_COMMAND_DATA_SIZE]
Definition rtfw.h:49
Fixed-size command exchanged with an RTFW backend.
Definition rtfw.h:46
void * fastpath_user_data
Definition rtfw.h:143
rtfw_pend_source_irq_t pend_source_irq
Definition rtfw.h:141
rtfw_fastpath_handler_t fastpath_handler
Definition rtfw.h:140
rtfw_event_cb_t event_handler
Definition rtfw.h:142
void * event_user_data
Definition rtfw.h:144
rtfw_command_handler_t command_handler
Definition rtfw.h:139
RTFW client configuration.
Definition rtfw.h:138
uint32_t timestamp
Definition rtfw.h:62
uint32_t type
Definition rtfw.h:60
uint32_t value
Definition rtfw.h:61
Event produced by a backend's zero-latency fast path.
Definition rtfw.h:59
uint32_t dropped_events
Definition rtfw.h:80
int32_t apply_result
Definition rtfw.h:78
struct rtfw_command requested
Definition rtfw.h:75
uint32_t max_queue_depth
Definition rtfw.h:82
bool pending
Definition rtfw.h:79
uint32_t faults
Definition rtfw.h:83
struct rtfw_command attempted
Definition rtfw.h:76
struct rtfw_command applied
Definition rtfw.h:77
Coherent framework status snapshot.
Definition rtfw.h:74