8#ifndef ZEPHYR_INCLUDE_MGMT_MCUMGR_TRANSPORT_SMP_H_
9#define ZEPHYR_INCLUDE_MGMT_MCUMGR_TRANSPORT_SMP_H_
12#include <zcbor_common.h>
26struct zephyr_smp_transport;
125 bool direction,
uint32_t mode,
bool same_transport,
126 zcbor_state_t *input_data,
127 zcbor_state_t *output_data);
156 struct net_buf *nb,
bool direction);
218#if defined(CONFIG_MCUMGR_GRP_TRANSPORT) || defined(__DOXYGEN__)
228#if defined(CONFIG_MCUMGR_GRP_TRANSPORT_INFO_FUNCTIONS) || defined(__DOXYGEN__)
251#ifdef CONFIG_MCUMGR_TRANSPORT_REASSEMBLY
317#if defined(CONFIG_MCUMGR_GRP_TRANSPORT_INFO_FUNCTIONS) || defined(__DOXYGEN__)
bool(* smp_transport_bridge_connect_fn)(struct smp_transport_bridge *bridge, bool direction, uint32_t mode, bool same_transport, zcbor_state_t *input_data, zcbor_state_t *output_data)
SMP transport bridge connect.
Definition smp.h:124
void(* smp_transport_ud_req_init_fn)(struct net_buf *nb, void *priv)
SMP init request buffer.
Definition smp.h:105
bool(* smp_transport_bridge_config_details_fn)(uint32_t mode, zcbor_state_t *output_data, int *rc)
SMP transport bridge config details.
Definition smp.h:192
void(* smp_transport_ud_free_fn)(void *ud)
SMP free user_data callback.
Definition smp.h:82
uint16_t(* smp_transport_get_mtu_fn)(const struct net_buf *nb)
SMP MTU query callback for transport.
Definition smp.h:55
bool(* smp_transport_bridge_modes_fn)(zcbor_state_t *output_data, int *rc)
SMP transport bridge details.
Definition smp.h:179
bool(* mgmt_client_transport_cb_t)(const struct smp_client_transport_entry *transport, void *user_data)
Callback for SMP client transports.
Definition smp.h:166
int(* smp_transport_out_fn)(struct net_buf *nb)
SMP transmit callback for transport.
Definition smp.h:40
void(* smp_transport_bridge_disconnect_fn)(struct smp_transport_bridge *bridge, bool direction)
SMP transport bridge disconnect.
Definition smp.h:139
smp_transport_type
SMP transport type for client registration.
Definition smp.h:283
void smp_rx_clear(struct smp_transport *zst)
Used to clear pending queued requests for an SMP transport.
struct smp_transport * smp_client_transport_get(int smpt_type)
Discover a registered SMP transport client object.
bool(* smp_transport_query_valid_check_fn)(struct net_buf *nb, void *arg)
Function for checking if queued data is still valid.
Definition smp.h:95
int(* smp_transport_ud_copy_fn)(struct net_buf *dst, const struct net_buf *src)
SMP copy user_data callback.
Definition smp.h:70
void smp_rx_remove_invalid(struct smp_transport *zst, void *arg)
Used to remove queued requests for an SMP transport that are no longer valid.
int(* smp_transport_bridge_out_fn)(const struct smp_transport_bridge *bridge, struct net_buf *nb, bool direction)
SMP transport bridge output data.
Definition smp.h:155
bool smp_client_transport_foreach(mgmt_client_transport_cb_t user_cb, void *user_data)
Iterate over SMP client/transports.
int smp_transport_init(struct smp_transport *smpt)
Initializes a Zephyr SMP transport object.
void smp_client_transport_register(struct smp_client_transport_entry *entry)
Register a Zephyr SMP transport object for client.
@ SMP_RAW_SERIAL_TRANSPORT
SMP raw serial (not SMP over console).
Definition smp.h:287
@ SMP_UDP_IPV6_TRANSPORT
SMP UDP IPv6.
Definition smp.h:295
@ SMP_SPI_TRANSPORT
SMP SPI.
Definition smp.h:299
@ SMP_SHELL_TRANSPORT
SMP shell.
Definition smp.h:291
@ SMP_BLUETOOTH_TRANSPORT
SMP bluetooth.
Definition smp.h:289
@ SMP_USER_DEFINED_TRANSPORT
IDs up to 63 reserved for future in-tree transports.
Definition smp.h:304
@ SMP_SERIAL_TRANSPORT
SMP serial.
Definition smp.h:285
@ SMP_UDP_IPV4_TRANSPORT
SMP UDP IPv4.
Definition smp.h:293
@ SMP_LORAWAN_TRANSPORT
SMP LoRaWAN.
Definition smp.h:297
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:44
#define bool
Definition stdbool.h:13
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Kernel FIFO structure.
Definition kernel.h:2974
A structure used to submit work.
Definition kernel.h:4667
Network buffer representation.
Definition net_buf.h:1048
SMP Client transport structure.
Definition smp.h:310
int smpt_type
Transport type.
Definition smp.h:315
char * name
Transport name, used for transport mgmt (or NULL to omit).
Definition smp.h:319
sys_snode_t node
Definition smp.h:311
struct smp_transport * smpt
Transport structure pointer.
Definition smp.h:313
Function pointers of SMP transport functions, if a handler is NULL then it is not supported/implement...
Definition smp.h:199
smp_transport_ud_req_init_fn ud_init
Transport's request buffer init function.
Definition smp.h:216
smp_transport_bridge_config_details_fn bridge_config_details
Transport get config details function.
Definition smp.h:233
smp_transport_bridge_connect_fn bridge_connect
Transport connect bridge to another transport function.
Definition smp.h:220
smp_transport_bridge_modes_fn bridge_modes
Transport get modes function.
Definition smp.h:230
smp_transport_get_mtu_fn get_mtu
Transport's get-MTU function.
Definition smp.h:204
smp_transport_query_valid_check_fn query_valid_check
Transport's check function for if a query is valid.
Definition smp.h:213
smp_transport_bridge_out_fn bridge_output
Transport send data over bridged connection function.
Definition smp.h:226
smp_transport_out_fn output
Transport's send function.
Definition smp.h:201
smp_transport_bridge_disconnect_fn bridge_disconnect
Transport disconnect bridge function.
Definition smp.h:223
smp_transport_ud_free_fn ud_free
Transport buffer user_data free function.
Definition smp.h:210
smp_transport_ud_copy_fn ud_copy
Transport buffer user_data copy function.
Definition smp.h:207
Bridged transport context.
Definition smp.h:263
uint8_t status
Status of the bridge: 0 for no bridge (free), 1 for bridged (in use).
Definition smp.h:265
struct smp_transport * outgoing_transport
The outgoing transport, (MCUmgr operating in client mode on device) which accepts read and write resp...
Definition smp.h:277
struct smp_transport * incoming_transport
The incoming transport, (MCUmgr operating in server mode on device) which accepts read and write requ...
Definition smp.h:271
SMP transport object for sending SMP responses.
Definition smp.h:241
struct k_work work
Definition smp.h:243
struct k_fifo fifo
Definition smp.h:246
struct smp_transport_api_t functions
Definition smp.h:249