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];
62 struct shell_mqtt_tx_buf tx_buf;
72 uint8_t rx[SH_MQTT_BUFFER_SIZE];
73 uint8_t tx[SH_MQTT_BUFFER_SIZE];
79 struct net_sockaddr_storage broker;
91 struct k_work net_disconnected_work;
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
Kernel mutex structure.
Definition kernel.h:3497
A structure used to submit work after a delay.
Definition kernel.h:4667
Kernel workqueue structure.
Definition kernel.h:4823
A structure used to submit work.
Definition kernel.h:4625
MQTT Client definition to maintain information relevant to the client.
Definition mqtt.h:902
Parameters for a publish message (PUBLISH).
Definition mqtt.h:501
Network Management event callback structure Used to register a callback into the network management e...
Definition net_mgmt.h:163
A structure to represent a ring buffer.
Definition ring_buffer.h:65
Unified shell transport interface.
Definition shell.h:863
Shell instance internals.
Definition shell.h:1129
Definition used when querying address information.
Definition socket.h:315
Definition of the monitored socket/file descriptor.
Definition socket_poll.h:31