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.
Header file for the ring buffer API.
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:863
Shell instance internals.
Definition shell.h:1128