7#ifndef _NRF_RPC_CBOR_H_
8#define _NRF_RPC_CBOR_H_
14#include <zcbor_common.h>
15#include <zcbor_decode.h>
16#include <zcbor_encode.h>
23#define NRF_RPC_ZCBOR_STATES (2 + CONFIG_NRF_RPC_ZCBOR_BACKUPS)
49struct _nrf_rpc_cbor_decoder {
76#define NRF_RPC_CBOR_CMD_DECODER(_group, _name, _cmd, _handler, _data) \
78 struct _nrf_rpc_cbor_decoder NRF_RPC_CONCAT(_name, _cbor_data) = { \
79 .handler = _handler, \
80 .handler_data = _data, \
82 NRF_RPC_CMD_DECODER(_group, _name, _cmd, _nrf_rpc_cbor_proxy_handler, \
83 (void *)&NRF_RPC_CONCAT(_name, _cbor_data))
94#define NRF_RPC_CBOR_EVT_DECODER(_group, _name, _evt, _handler, _data) \
96 struct _nrf_rpc_cbor_decoder NRF_RPC_CONCAT(_name, _cbor_data) = { \
97 .handler = _handler, \
98 .handler_data = _data, \
100 NRF_RPC_EVT_DECODER(_group, _name, _evt, _nrf_rpc_cbor_proxy_handler, \
101 (void *)&NRF_RPC_CONCAT(_name, _cbor_data))
116#define NRF_RPC_CBOR_ALLOC(_group, _ctx, _len) \
118 nrf_rpc_alloc_tx_buf(_group, &((_ctx).out_packet), (_len) + 1); \
119 _nrf_rpc_cbor_prepare((struct nrf_rpc_cbor_ctx *)(&(_ctx)), (_len) + 1); \
130#define NRF_RPC_CBOR_DISCARD(_group, _ctx) \
131 nrf_rpc_free_tx_buf(_group, (_ctx).out_packet)
198 void *handler_data,
const char *file,
int line,
const char *func);
200#ifdef CONFIG_NRF_RPC_DETAILED_ERROR_REPORTING
201#define nrf_rpc_cbor_cmd_no_err(_group, _cmd, _ctx, _handler, _handler_data) \
202 nrf_rpc_cbor_cmd_no_err_impl(_group, _cmd, _ctx, _handler, _handler_data, __FILE__, __LINE__, __func__)
220 const char *file,
int line,
const char *func);
222#ifdef CONFIG_NRF_RPC_DETAILED_ERROR_REPORTING
223#define nrf_rpc_cbor_cmd_rsp_no_err(_group, _cmd, _ctx) \
224 nrf_rpc_cbor_cmd_rsp_no_err_impl(_group, _cmd, _ctx, __FILE__, __LINE__, __func__)
254 const char *file,
int line,
const char *func);
256#ifdef CONFIG_NRF_RPC_DETAILED_ERROR_REPORTING
257#define nrf_rpc_cbor_evt_no_err(_group, _evt, _ctx) \
258 nrf_rpc_cbor_evt_no_err_impl(_group, _evt, _ctx, __FILE__, __LINE__, __func__)
283 const char *file,
int line,
const char *func);
285#ifdef CONFIG_NRF_RPC_DETAILED_ERROR_REPORTING
286#define nrf_rpc_cbor_rsp_no_err(_group, _ctx) \
287 nrf_rpc_cbor_rsp_no_err_impl(_group, _ctx, __FILE__, __LINE__, __func__)
306void _nrf_rpc_cbor_proxy_handler(
const struct nrf_rpc_group *group,
const uint8_t *packet,
307 size_t len,
void *handler_data);
void nrf_rpc_cbor_decoding_done(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx)
Indicate that decoding of the input packet is done.
int nrf_rpc_cbor_cmd_rsp(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx)
Send a command and get response as an output parameter.
void nrf_rpc_cbor_cmd_rsp_no_err_impl(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx, const char *file, int line, const char *func)
int nrf_rpc_cbor_rsp(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx)
Send a response.
void nrf_rpc_cbor_rsp_no_err_impl(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx, const char *file, int line, const char *func)
void nrf_rpc_cbor_evt_no_err_impl(const struct nrf_rpc_group *group, uint8_t evt, struct nrf_rpc_cbor_ctx *ctx, const char *file, int line, const char *func)
void nrf_rpc_cbor_cmd_no_err_impl(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx, nrf_rpc_cbor_handler_t handler, void *handler_data, const char *file, int line, const char *func)
void nrf_rpc_cbor_evt_no_err(const struct nrf_rpc_group *group, uint8_t evt, struct nrf_rpc_cbor_ctx *ctx)
Send an event and pass any error to an error handler.
bool nrf_rpc_cbor_is_alloc(struct nrf_rpc_cbor_ctx *ctx)
Check that the memory for a packet has been allocated.
int nrf_rpc_cbor_evt(const struct nrf_rpc_group *group, uint8_t evt, struct nrf_rpc_cbor_ctx *ctx)
Send an event.
void(* nrf_rpc_cbor_handler_t)(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx, void *handler_data)
Callback that handles decoding of commands, events and responses.
Definition nrf_rpc_cbor.h:45
void nrf_rpc_cbor_cmd_no_err(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx, nrf_rpc_cbor_handler_t handler, void *handler_data)
Send a command, provide callback to handle response and pass any error to an error handler.
void nrf_rpc_cbor_cmd_rsp_no_err(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx)
Send a command, get response as an output parameter and pass any error to an error handler.
void nrf_rpc_cbor_rsp_no_err(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx)
Send a response and pass any error to an error handler.
int nrf_rpc_cbor_cmd(const struct nrf_rpc_group *group, uint8_t cmd, struct nrf_rpc_cbor_ctx *ctx, nrf_rpc_cbor_handler_t handler, void *handler_data)
Send a command and provide callback to handle response.
#define NRF_RPC_ZCBOR_STATES
Definition nrf_rpc_cbor.h:23
const uint8_t * in_packet
Definition nrf_rpc_cbor.h:63
uint8_t * out_packet
Definition nrf_rpc_cbor.h:62
zcbor_state_t zs[(2+CONFIG_NRF_RPC_ZCBOR_BACKUPS)]
Definition nrf_rpc_cbor.h:60
Context for encoding and sending commands, events and responses.
Definition nrf_rpc_cbor.h:59
Defines a group of commands and events.
Definition nrf_rpc.h:139