38#ifndef PROTOCORE_MQTT_SN_H
39#define PROTOCORE_MQTT_SN_H
43#if PROTOCORE_ENABLE_MQTT_SN
51#define MQTTSN_LEN3_PREFIX 0x01
56#define MQTTSN_ADVERTISE 0x00
57#define MQTTSN_SEARCHGW 0x01
58#define MQTTSN_GWINFO 0x02
59#define MQTTSN_CONNECT 0x04
60#define MQTTSN_CONNACK 0x05
61#define MQTTSN_WILLTOPICREQ 0x06
62#define MQTTSN_WILLTOPIC 0x07
63#define MQTTSN_WILLMSGREQ 0x08
64#define MQTTSN_WILLMSG 0x09
65#define MQTTSN_REGISTER 0x0A
66#define MQTTSN_REGACK 0x0B
67#define MQTTSN_PUBLISH 0x0C
68#define MQTTSN_PUBACK 0x0D
69#define MQTTSN_PUBCOMP 0x0E
70#define MQTTSN_PUBREC 0x0F
71#define MQTTSN_PUBREL 0x10
72#define MQTTSN_SUBSCRIBE 0x12
73#define MQTTSN_SUBACK 0x13
74#define MQTTSN_UNSUBSCRIBE 0x14
75#define MQTTSN_UNSUBACK 0x15
76#define MQTTSN_PINGREQ 0x16
77#define MQTTSN_PINGRESP 0x17
78#define MQTTSN_DISCONNECT 0x18
81#define MQTTSN_FLAG_DUP 0x80
82#define MQTTSN_FLAG_QOS_MASK 0x60
83#define MQTTSN_FLAG_QOS_SHIFT 5
84#define MQTTSN_FLAG_RETAIN 0x10
85#define MQTTSN_FLAG_WILL 0x08
86#define MQTTSN_FLAG_CLEAN 0x04
87#define MQTTSN_FLAG_TOPICIDTYPE_MASK 0x03
90#define MQTTSN_TOPIC_NORMAL 0x00
91#define MQTTSN_TOPIC_PREDEFINED 0x01
92#define MQTTSN_TOPIC_SHORT 0x02
95#define MQTTSN_RC_ACCEPTED 0x00
96#define MQTTSN_RC_CONGESTION 0x01
97#define MQTTSN_RC_INVALID_TOPIC_ID 0x02
98#define MQTTSN_RC_NOT_SUPPORTED 0x03
100#define MQTTSN_PROTOCOL_ID 0x01
114 uint8_t topic_id_type;
122 const char *topic_name;
123 size_t topic_name_len;
129 const char *client_id;
148 const uint8_t *variable;
230 MqttsnFlagsArgs flags;
231 MqttsnTopicArgs topic;
232 MqttsnFieldArgs field;
234 MqttsnHeaderArgs header;
241extern MqttsnVars MqttsnV;
246 void (*
const make_flags)(uint8_t *work);
247 void (*
const build_connect)(uint8_t *work);
248 void (*
const build_register)(uint8_t *work);
249 void (*
const build_regack)(uint8_t *work);
250 void (*
const build_publish)(uint8_t *work);
251 void (*
const build_puback)(uint8_t *work);
252 void (*
const build_subscribe_name)(uint8_t *work);
253 void (*
const build_subscribe_id)(uint8_t *work);
254 void (*
const build_pingreq)(uint8_t *work);
255 void (*
const build_disconnect)(uint8_t *work);
256 void (*
const build_searchgw)(uint8_t *work);
257 void (*
const parse_header)(uint8_t *work);
258 void (*
const parse_connack)(uint8_t *work);
259 void (*
const parse_regack)(uint8_t *work);
260 void (*
const parse_puback)(uint8_t *work);
261 void (*
const parse_suback)(uint8_t *work);
262 void (*
const parse_publish)(uint8_t *work);
263 void (*
const parse_register)(uint8_t *work);
268void protocore_mqttsn_make_flags(uint8_t *work);
269void protocore_mqttsn_build_connect(uint8_t *work);
270void protocore_mqttsn_build_register(uint8_t *work);
271void protocore_mqttsn_build_regack(uint8_t *work);
272void protocore_mqttsn_build_publish(uint8_t *work);
273void protocore_mqttsn_build_puback(uint8_t *work);
274void protocore_mqttsn_build_subscribe_name(uint8_t *work);
275void protocore_mqttsn_build_subscribe_id(uint8_t *work);
276void protocore_mqttsn_build_pingreq(uint8_t *work);
277void protocore_mqttsn_build_disconnect(uint8_t *work);
278void protocore_mqttsn_build_searchgw(uint8_t *work);
279void protocore_mqttsn_parse_header(uint8_t *work);
280void protocore_mqttsn_parse_connack(uint8_t *work);
281void protocore_mqttsn_parse_regack(uint8_t *work);
282void protocore_mqttsn_parse_puback(uint8_t *work);
283void protocore_mqttsn_parse_suback(uint8_t *work);
284void protocore_mqttsn_parse_publish(uint8_t *work);
285void protocore_mqttsn_parse_register(uint8_t *work);
291static const MqttsnNs Mqttsn __attribute__((unused)) = {
292 .make_flags = protocore_mqttsn_make_flags,
293 .build_connect = protocore_mqttsn_build_connect,
294 .build_register = protocore_mqttsn_build_register,
295 .build_regack = protocore_mqttsn_build_regack,
296 .build_publish = protocore_mqttsn_build_publish,
297 .build_puback = protocore_mqttsn_build_puback,
298 .build_subscribe_name = protocore_mqttsn_build_subscribe_name,
299 .build_subscribe_id = protocore_mqttsn_build_subscribe_id,
300 .build_pingreq = protocore_mqttsn_build_pingreq,
301 .build_disconnect = protocore_mqttsn_build_disconnect,
302 .build_searchgw = protocore_mqttsn_build_searchgw,
303 .parse_header = protocore_mqttsn_parse_header,
304 .parse_connack = protocore_mqttsn_parse_connack,
305 .parse_regack = protocore_mqttsn_parse_regack,
306 .parse_puback = protocore_mqttsn_parse_puback,
307 .parse_suback = protocore_mqttsn_parse_suback,
308 .parse_publish = protocore_mqttsn_parse_publish,
309 .parse_register = protocore_mqttsn_parse_register,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS