20#ifndef ZEPHYR_INCLUDE_NET_MQTT_SN_H_
21#define ZEPHYR_INCLUDE_NET_MQTT_SN_H_
30#ifdef CONFIG_MQTT_SN_TRANSPORT_UDP
80#define MQTT_SN_DATA_STRING_LITERAL(literal) ((struct mqtt_sn_data){literal, sizeof(literal) - 1})
89#define MQTT_SN_DATA_BYTES(...) \
90 ((struct mqtt_sn_data) { (uint8_t[]){ __VA_ARGS__ }, sizeof((uint8_t[]){ __VA_ARGS__ })})
182#ifdef CONFIG_MQTT_SN_TRANSPORT_UDP
186struct mqtt_sn_transport_udp {
198#define UDP_TRANSPORT(transport) CONTAINER_OF(transport, struct mqtt_sn_transport_udp, tp)
207int mqtt_sn_transport_udp_init(
struct mqtt_sn_transport_udp *udp,
struct sockaddr *gwaddr,
246 size_t txsz,
void *rx,
size_t rxsz);
size_t socklen_t
Definition: net_ip.h:167
int mqtt_sn_unsubscribe(struct mqtt_sn_client *client, enum mqtt_sn_qos qos, struct mqtt_sn_data *topic_name)
Unsubscribe from a topic.
int mqtt_sn_publish(struct mqtt_sn_client *client, enum mqtt_sn_qos qos, struct mqtt_sn_data *topic_name, bool retain, struct mqtt_sn_data *data)
Publish a value.
void mqtt_sn_client_deinit(struct mqtt_sn_client *client)
Deinitialize the client.
mqtt_sn_qos
Definition: mqtt_sn.h:42
int mqtt_sn_connect(struct mqtt_sn_client *client, bool will, bool clean_session)
Connect the client.
int mqtt_sn_subscribe(struct mqtt_sn_client *client, enum mqtt_sn_qos qos, struct mqtt_sn_data *topic_name)
Subscribe to a given topic.
mqtt_sn_evt_type
Definition: mqtt_sn.h:95
mqtt_sn_return_code
Definition: mqtt_sn.h:58
int mqtt_sn_disconnect(struct mqtt_sn_client *client)
Disconnect the client.
mqtt_sn_topic_type
Definition: mqtt_sn.h:52
int mqtt_sn_client_init(struct mqtt_sn_client *client, const struct mqtt_sn_data *client_id, struct mqtt_sn_transport *transport, mqtt_sn_evt_cb_t evt_cb, void *tx, size_t txsz, void *rx, size_t rxsz)
Initialize a client.
void(* mqtt_sn_evt_cb_t)(struct mqtt_sn_client *client, const struct mqtt_sn_evt *evt)
Asynchronous event notification callback registered by the application.
Definition: mqtt_sn.h:133
int mqtt_sn_sleep(struct mqtt_sn_client *client, uint16_t duration)
Set the client into sleep state for the given duration (seconds).
int mqtt_sn_input(struct mqtt_sn_client *client)
Check the transport for new incoming data.
@ MQTT_SN_QOS_M1
Definition: mqtt_sn.h:46
@ MQTT_SN_QOS_2
Definition: mqtt_sn.h:45
@ MQTT_SN_QOS_1
Definition: mqtt_sn.h:44
@ MQTT_SN_QOS_0
Definition: mqtt_sn.h:43
@ MQTT_SN_EVT_PINGRESP
Definition: mqtt_sn.h:101
@ MQTT_SN_EVT_CONNECTED
Definition: mqtt_sn.h:96
@ MQTT_SN_EVT_PUBLISH
Definition: mqtt_sn.h:100
@ MQTT_SN_EVT_ASLEEP
Definition: mqtt_sn.h:98
@ MQTT_SN_EVT_DISCONNECTED
Definition: mqtt_sn.h:97
@ MQTT_SN_EVT_AWAKE
Definition: mqtt_sn.h:99
@ MQTT_SN_CODE_ACCEPTED
Definition: mqtt_sn.h:59
@ MQTT_SN_CODE_REJECTED_CONGESTION
Definition: mqtt_sn.h:60
@ MQTT_SN_CODE_REJECTED_NOTSUP
Definition: mqtt_sn.h:62
@ MQTT_SN_CODE_REJECTED_TOPIC_ID
Definition: mqtt_sn.h:61
@ MQTT_SN_TOPIC_TYPE_NORMAL
Definition: mqtt_sn.h:53
@ MQTT_SN_TOPIC_TYPE_PREDEF
Definition: mqtt_sn.h:54
@ MQTT_SN_TOPIC_TYPE_SHORT
Definition: mqtt_sn.h:55
__SIZE_TYPE__ ssize_t
Definition: types.h:28
struct k_thread client
Definition: main.c:31
IPv6 and IPv4 definitions.
struct _slist sys_slist_t
Definition: slist.h:40
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT64_TYPE__ int64_t
Definition: stdint.h:75
A structure used to submit work after a delay.
Definition: kernel.h:3735
Definition: mqtt_sn.h:214
int state
Definition: mqtt_sn.h:234
uint16_t next_msg_id
Definition: mqtt_sn.h:230
uint8_t ping_retries
Definition: mqtt_sn.h:236
sys_slist_t publish
Definition: mqtt_sn.h:231
struct net_buf_simple tx
Definition: mqtt_sn.h:224
enum mqtt_sn_qos will_qos
Definition: mqtt_sn.h:219
struct k_work_delayable process_work
Definition: mqtt_sn.h:238
struct mqtt_sn_data client_id
Definition: mqtt_sn.h:215
struct mqtt_sn_data will_msg
Definition: mqtt_sn.h:218
sys_slist_t topic
Definition: mqtt_sn.h:232
mqtt_sn_evt_cb_t evt_cb
Definition: mqtt_sn.h:228
bool will_retain
Definition: mqtt_sn.h:220
struct mqtt_sn_transport * transport
Definition: mqtt_sn.h:222
struct net_buf_simple rx
Definition: mqtt_sn.h:226
int64_t last_ping
Definition: mqtt_sn.h:235
struct mqtt_sn_data will_topic
Definition: mqtt_sn.h:217
Abstracts memory buffers.
Definition: mqtt_sn.h:66
uint16_t size
Definition: mqtt_sn.h:68
const uint8_t * data
Definition: mqtt_sn.h:67
Definition: mqtt_sn.h:118
union mqtt_sn_evt_param param
Definition: mqtt_sn.h:120
enum mqtt_sn_evt_type type
Definition: mqtt_sn.h:119
Structure to describe an MQTT-SN transport.
Definition: mqtt_sn.h:142
ssize_t(* recv)(struct mqtt_sn_client *client, void *buffer, size_t length)
Will be called by the library when it wants to receive a message.
Definition: mqtt_sn.h:167
int(* init)(struct mqtt_sn_transport *transport)
Will be called once on client init to initialize the transport.
Definition: mqtt_sn.h:148
int(* poll)(struct mqtt_sn_client *client)
Check if incoming data is available.
Definition: mqtt_sn.h:179
int(* msg_send)(struct mqtt_sn_client *client, void *buf, size_t sz)
Definition: mqtt_sn.h:160
void(* deinit)(struct mqtt_sn_transport *transport)
Will be called on client deinit.
Definition: mqtt_sn.h:155
Simple network buffer representation.
Definition: buf.h:82
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
static ZTEST_BMEM char buffer[8]
Definition: test_mbox_api.c:551
static ZTEST_DMEM int tp
Definition: main.c:35
Definition: mqtt_sn.h:107
struct mqtt_sn_evt_param::@232 publish
struct mqtt_sn_data data
Definition: mqtt_sn.h:109
enum mqtt_sn_topic_type topic_type
Definition: mqtt_sn.h:110
uint16_t topic_id
Definition: mqtt_sn.h:111