10#ifndef INFUSE_SDK_INCLUDE_INFUSE_RPC_CLIENT_H_
11#define INFUSE_SDK_INCLUDE_INFUSE_RPC_CLIENT_H_
13#include <zephyr/net_buf.h>
119 k_timeout_t timeout);
145 k_timeout_t ctx_timeout, k_timeout_t response_timeout);
191 const void *data,
size_t data_len);
223 uint32_t offset,
void *buffer,
size_t buffer_len,
242 size_t req_params_len, k_timeout_t ctx_timeout,
243 k_timeout_t response_timeout,
struct net_buf **rsp);
Autogenerated RPC definitions.
rpc_builtin_id
Infuse-IoT builtin RPC commands.
Definition types.h:518
void rpc_client_init(struct rpc_client_ctx *ctx, const struct device *dev, union epacket_interface_address address)
Initialise RPC client object for use.
int rpc_client_update_response_timeout(struct rpc_client_ctx *ctx, uint32_t request_id, k_timeout_t timeout)
Update the response timeout of an executing command.
int rpc_client_command_queue(struct rpc_client_ctx *ctx, enum rpc_builtin_id cmd, void *req_params, size_t req_params_len, rpc_client_rsp_fn cb, void *user_data, k_timeout_t ctx_timeout, k_timeout_t response_timeout)
Queue a command for execution on a remote device.
int rpc_client_command_sync(struct rpc_client_ctx *ctx, enum rpc_builtin_id cmd, void *req_params, size_t req_params_len, k_timeout_t ctx_timeout, k_timeout_t response_timeout, struct net_buf **rsp)
Queue a command for execution on a remote device and wait for the response.
int rpc_client_data_queue(struct rpc_client_ctx *ctx, uint32_t request_id, uint32_t offset, const void *data, size_t data_len)
Queue data associated with a previously queued command.
static uint32_t rpc_client_last_request_id(const struct rpc_client_ctx *ctx)
Get the request ID used by the last command.
Definition client.h:101
void(* rpc_client_rsp_fn)(const struct net_buf *buf, void *user_data)
Callback run when the response arrives.
Definition client.h:38
int rpc_client_data_queue_auto_load(struct rpc_client_ctx *ctx, uint32_t request_id, uint32_t offset, void *buffer, size_t buffer_len, const struct rpc_client_auto_load_params *loader_params)
Queue data associated with a previously queued command, loaded via callback.
int(* rpc_client_data_loader)(void *user_data, uint32_t offset, void *data, size_t data_len)
Callback to load more data for queueing.
Definition client.h:175
void rpc_client_cleanup(struct rpc_client_ctx *ctx)
Cleanup a RPC client object.
int rpc_client_ack_wait(struct rpc_client_ctx *ctx, uint32_t request_id, k_timeout_t timeout)
Wait for an INFUSE_RPC_DATA_ACK from the remote device.
ePacket interface callback structure.
Definition interface.h:93
State for auto loader control.
Definition client.h:194
uint32_t total_len
Total length of data to send (bytes)
Definition client.h:198
void * user_data
User data pointer for rpc_client_auto_load_params::loader.
Definition client.h:206
k_timeout_t ack_wait
Duration to wait for each DATA_ACK.
Definition client.h:200
uint8_t ack_period
Number of data packets sent per DATA_ACK (0 to not wait for DATA_ACKs)
Definition client.h:202
rpc_client_data_loader loader
Callback to load more data.
Definition client.h:196
uint8_t pipelining
Maximum number of pending DATA_ACK packets.
Definition client.h:204
Context associated with a single in-flight command.
Definition client.h:41
uint16_t command_id
RPC command ID.
Definition client.h:55
struct k_timer timeout
Command response timeout timer.
Definition client.h:43
uint16_t tx_tokens_on_ack
Number of TX tokens to give on DATA_ACK.
Definition client.h:57
rpc_client_rsp_fn cb
Callback to run on completion.
Definition client.h:49
int16_t tx_result
Result of TX queuing.
Definition client.h:59
struct k_sem tx_tokens
Tokens allowing the next transmission.
Definition client.h:45
uint32_t request_id
RPC request ID (0 when context is unused)
Definition client.h:53
k_timeout_t rsp_timeout
Timeout for the response.
Definition client.h:47
bool tx_pending
Command packet TX callback has not yet run (context cannot be reused)
Definition client.h:61
void * user_data
Arbitrary user data for callback.
Definition client.h:51
RPC client context.
Definition client.h:65
union epacket_interface_address address
Interface address of the remote device.
Definition client.h:69
struct rpc_client_cmd_ctx cmd_ctx[CONFIG_INFUSE_RPC_CLIENT_MAX_IN_FLIGHT]
Contexts for in-flight commands.
Definition client.h:73
struct k_spinlock lock
Lock for claiming and releasing command contexts.
Definition client.h:77
struct k_sem cmd_ctx_sem
Semaphore counting free command contexts.
Definition client.h:75
const struct device * interface
ePacket interface commands are sent on
Definition client.h:67
struct epacket_interface_cb interface_cb
Callback structure registered on rpc_client_ctx::interface.
Definition client.h:71
uint32_t request_id
Request ID of the most recently queued command.
Definition client.h:79
Interface specific addresses.
Definition packet.h:56