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 {
52 bool decoding_done_required;
77#define NRF_RPC_CBOR_CMD_DECODER(_group, _name, _cmd, _handler, _data) \
79 struct _nrf_rpc_cbor_decoder NRF_RPC_CONCAT(_name, _cbor_data) = { \
80 .handler = _handler, \
81 .handler_data = _data, \
82 .decoding_done_required = true, \
84 NRF_RPC_CMD_DECODER(_group, _name, _cmd, _nrf_rpc_cbor_proxy_handler, \
85 (void *)&NRF_RPC_CONCAT(_name, _cbor_data))
96#define NRF_RPC_CBOR_EVT_DECODER(_group, _name, _evt, _handler, _data) \
98 struct _nrf_rpc_cbor_decoder NRF_RPC_CONCAT(_name, _cbor_data) = { \
99 .handler = _handler, \
100 .handler_data = _data, \
101 .decoding_done_required = true, \
103 NRF_RPC_EVT_DECODER(_group, _name, _evt, _nrf_rpc_cbor_proxy_handler, \
104 (void *)&NRF_RPC_CONCAT(_name, _cbor_data))
119#define NRF_RPC_CBOR_ALLOC(_group, _ctx, _len) \
121 nrf_rpc_alloc_tx_buf(_group, &((_ctx).out_packet), (_len) + 1); \
122 _nrf_rpc_cbor_prepare((struct nrf_rpc_cbor_ctx *)(&(_ctx)), (_len) + 1); \
133#define NRF_RPC_CBOR_DISCARD(_group, _ctx) \
134 nrf_rpc_free_tx_buf(_group, (_ctx).out_packet)
273void _nrf_rpc_cbor_proxy_handler(
const struct nrf_rpc_group *group,
const uint8_t *packet,
274 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.
int nrf_rpc_cbor_rsp(const struct nrf_rpc_group *group, struct nrf_rpc_cbor_ctx *ctx)
Send a response.
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:64
uint8_t * out_packet
Definition nrf_rpc_cbor.h:63
zcbor_state_t zs[(2+CONFIG_NRF_RPC_ZCBOR_BACKUPS)]
Definition nrf_rpc_cbor.h:61
Context for encoding and sending commands, events and responses.
Definition nrf_rpc_cbor.h:60
Defines a group of commands and events.
Definition nrf_rpc.h:139