13#ifndef ZEPHYR_INCLUDE_SHELL_SHELL_MQTT_H_
14#define ZEPHYR_INCLUDE_SHELL_SHELL_MQTT_H_
31#define RX_RB_SIZE CONFIG_SHELL_MQTT_RX_BUF_SIZE
32#define TX_BUF_SIZE CONFIG_SHELL_MQTT_TX_BUF_SIZE
33#define SH_MQTT_BUFFER_SIZE 64
34#define DEVICE_ID_BIN_MAX_SIZE 3
35#define DEVICE_ID_HEX_MAX_SIZE ((DEVICE_ID_BIN_MAX_SIZE * 2) + 1)
36#define SH_MQTT_TOPIC_RX_MAX_SIZE DEVICE_ID_HEX_MAX_SIZE + sizeof(CONFIG_SHELL_MQTT_TOPIC_RX_ID)
37#define SH_MQTT_TOPIC_TX_MAX_SIZE DEVICE_ID_HEX_MAX_SIZE + sizeof(CONFIG_SHELL_MQTT_TOPIC_TX_ID)
41struct shell_mqtt_tx_buf {
43 char buf[TX_BUF_SIZE];
51 char device_id[DEVICE_ID_HEX_MAX_SIZE];
52 char sub_topic[SH_MQTT_TOPIC_RX_MAX_SIZE];
53 char pub_topic[SH_MQTT_TOPIC_TX_MAX_SIZE];
58 struct ring_buf rx_rb;
62 struct shell_mqtt_tx_buf tx_buf;
68 struct mqtt_client mqtt_cli;
72 uint8_t rx[SH_MQTT_BUFFER_SIZE];
73 uint8_t tx[SH_MQTT_BUFFER_SIZE];
79 struct net_sockaddr_storage broker;
81 struct zsock_addrinfo *haddr;
82 struct zsock_pollfd fds[1];
85 struct mqtt_publish_param pub_data;
87 struct net_mgmt_event_callback
mgmt_cb;
90 struct k_work_q workq;
91 struct k_work net_disconnected_work;
92 struct k_work_delayable connect_dwork;
93 struct k_work_delayable subscribe_dwork;
94 struct k_work_delayable process_dwork;
95 struct k_work_delayable publish_dwork;
98 enum sh_mqtt_transport_state {
99 SHELL_MQTT_TRANSPORT_DISCONNECTED,
100 SHELL_MQTT_TRANSPORT_CONNECTED,
104 enum sh_mqtt_subscribe_state {
105 SHELL_MQTT_NOT_SUBSCRIBED,
106 SHELL_MQTT_SUBSCRIBED,
110 enum sh_mqtt_network_state {
111 SHELL_MQTT_NETWORK_DISCONNECTED,
112 SHELL_MQTT_NETWORK_CONNECTED,
129#define SHELL_MQTT_DEFINE(_name) \
130 static struct shell_mqtt _name##_shell_mqtt; \
131 struct shell_transport _name = { .api = &shell_mqtt_transport_api, \
132 .ctx = (struct shell_mqtt *)&_name##_shell_mqtt }
API for monitoring network connections and interfaces.
enum mgmt_cb_return(* mgmt_cb)(uint32_t event, enum mgmt_cb_return prev_status, int32_t *rc, uint16_t *group, bool *abort_more, void *data, size_t data_size)
Function to be called on MGMT notification/event.
Definition callbacks.h:75
void(* shell_transport_handler_t)(enum shell_transport_evt evt, void *context)
Shell transport event handler callback.
Definition shell.h:831
bool shell_mqtt_get_devid(char *id, int id_max_len)
Function to define the device ID (devid) for which the shell mqtt backend uses as a client ID when it...
const struct shell * shell_backend_mqtt_get_ptr(void)
This function provides pointer to shell mqtt backend instance.
MQTT Client Implementation.
BSD Sockets compatible API definitions.
Network Events code public header.
Network Management API public header.
Simple, header-only ring buffer implementation.
Header file for the shell subsystem.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Unified shell transport interface.
Definition shell.h:864
Shell instance internals.
Definition shell.h:1129