30 struct _lws_mqtt_related;
31 typedef struct _lws_mqtt_related lws_mqtt_related_t;
32 struct lws_mqtt_str_st;
33 typedef struct lws_mqtt_str_st lws_mqtt_str_t;
35 #define MQTT_VER_3_1_1 4
37 #define LWS_MQTT_FINAL_PART 1
39 #define LWS_MQTT_MAX_AWSIOT_TOPICLEN 256
40 #define LWS_MQTT_MAX_TOPICLEN 65535
41 #define LWS_MQTT_MAX_CIDLEN 128
42 #define LWS_MQTT_RANDOM_CIDLEN 23
50 FAILURE_QOS_LEVEL = 0x80
51 } lws_mqtt_qos_levels_t;
58 uint8_t ctrl_pkt_type:4;
69 const char *client_id;
78 lws_mqtt_qos_levels_t qos;
97 lws_mqtt_qos_levels_t qos;
108 lws_mqtt_qos_levels_t qos;
134 LMQCP_CTOS_SUBSCRIBE,
136 LMQCP_CTOS_UNSUBSCRIBE,
142 } lws_mqtt_control_packet_t;
146 LMQCFT_USERNAME = (1 << 7),
147 LMQCFT_PASSWORD = (1 << 6),
148 LMQCFT_WILL_RETAIN = (1 << 5),
149 LMQCFT_WILL_QOS = (1 << 3),
150 LMQCFT_WILL_FLAG = (1 << 2),
151 LMQCFT_CLEAN_START = (1 << 1),
152 LMQCFT_RESERVED = (1 << 0),
154 LMQCFT_WILL_QOS_MASK = (3 << 3),
155 } lws_mqtt_connect_flags_t;
159 LMQCFT_SESSION_PRESENT = (1 << 0),
160 } lws_mqtt_connack_flags_t;
163 LMQCP_REASON_SUCCESS = 0x00,
164 LMQCP_REASON_NORMAL_DISCONNECTION = 0x00,
165 LMQCP_REASON_GRANTED_QOS0 = 0x00,
166 LMQCP_REASON_GRANTED_QOS1 = 0x01,
167 LMQCP_REASON_GRANTED_QOS2 = 0x02,
168 LMQCP_REASON_DISCONNECT_WILL = 0x04,
169 LMQCP_REASON_NO_MATCHING_SUBSCRIBER = 0x10,
170 LMQCP_REASON_NO_SUBSCRIPTION_EXISTED = 0x11,
171 LMQCP_REASON_CONTINUE_AUTHENTICATION = 0x18,
172 LMQCP_REASON_RE_AUTHENTICATE = 0x19,
174 LMQCP_REASON_UNSPECIFIED_ERROR = 0x80,
175 LMQCP_REASON_MALFORMED_PACKET = 0x81,
176 LMQCP_REASON_PROTOCOL_ERROR = 0x82,
177 LMQCP_REASON_IMPLEMENTATION_SPECIFIC_ERROR = 0x83,
180 LMQCP_REASON_UNSUPPORTED_PROTOCOL = 0x84,
181 LMQCP_REASON_CLIENT_ID_INVALID = 0x85,
182 LMQCP_REASON_BAD_CREDENTIALS = 0x86,
183 LMQCP_REASON_NOT_AUTHORIZED = 0x87,
186 LMQCP_REASON_SERVER_UNAVAILABLE = 0x88,
187 LMQCP_REASON_SERVER_BUSY = 0x89,
188 LMQCP_REASON_BANNED = 0x8a,
189 LMQCP_REASON_SERVER_SHUTTING_DOWN = 0x8b,
190 LMQCP_REASON_BAD_AUTHENTICATION_METHOD = 0x8c,
191 LMQCP_REASON_KEEPALIVE_TIMEOUT = 0x8d,
192 LMQCP_REASON_SESSION_TAKEN_OVER = 0x8e,
193 LMQCP_REASON_TOPIC_FILTER_INVALID = 0x8f,
194 LMQCP_REASON_TOPIC_NAME_INVALID = 0x90,
195 LMQCP_REASON_PACKET_ID_IN_USE = 0x91,
196 LMQCP_REASON_PACKET_ID_NOT_FOUND = 0x92,
197 LMQCP_REASON_MAX_RX_EXCEEDED = 0x93,
198 LMQCP_REASON_TOPIC_ALIAS_INVALID = 0x94,
199 LMQCP_REASON_PACKET_TOO_LARGE = 0x95,
200 LMQCP_REASON_RATELIMIT = 0x96,
201 LMQCP_REASON_QUOTA_EXCEEDED = 0x97,
202 LMQCP_REASON_ADMINISTRATIVE_ACTION = 0x98,
203 LMQCP_REASON_PAYLOAD_FORMAT_INVALID = 0x99,
204 LMQCP_REASON_RETAIN_NOT_SUPPORTED = 0x9a,
205 LMQCP_REASON_QOS_NOT_SUPPORTED = 0x9b,
206 LMQCP_REASON_USE_ANOTHER_SERVER = 0x9c,
207 LMQCP_REASON_SERVER_MOVED = 0x9d,
208 LMQCP_REASON_SHARED_SUBSCRIPTIONS_NOT_SUPPORTED = 0x9e,
209 LMQCP_REASON_CONNECTION_RATE_EXCEEDED = 0x9f,
210 LMQCP_REASON_MAXIMUM_CONNECT_TIME = 0xa0,
211 LMQCP_REASON_SUBSCRIPTION_IDS_NOT_SUPPORTED = 0xa1,
212 LMQCP_REASON_WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED = 0xa2,
217 LMQPROP_PAYLOAD_FORMAT_INDICATOR = 0x01,
218 LMQPROP_MESSAGE_EXPIRY_INTERVAL = 0x02,
219 LMQPROP_CONTENT_TYPE = 0x03,
220 LMQPROP_RESPONSE_TOPIC = 0x08,
221 LMQPROP_CORRELATION_DATA = 0x09,
222 LMQPROP_SUBSCRIPTION_IDENTIFIER = 0x0b,
223 LMQPROP_SESSION_EXPIRY_INTERVAL = 0x11,
224 LMQPROP_ASSIGNED_CLIENT_IDENTIFIER = 0x12,
225 LMQPROP_SERVER_KEEP_ALIVE = 0x13,
226 LMQPROP_AUTHENTICATION_METHOD = 0x15,
227 LMQPROP_AUTHENTICATION_DATA = 0x16,
228 LMQPROP_REQUEST_PROBLEM_INFORMATION = 0x17,
229 LMQPROP_WILL_DELAY_INTERVAL = 0x18,
230 LMQPROP_REQUEST_RESPONSE_INFORMATION = 0x19,
231 LMQPROP_RESPONSE_INFORMATION = 0x1a,
232 LMQPROP_SERVER_REFERENCE = 0x1c,
233 LMQPROP_REASON_STRING = 0x1f,
234 LMQPROP_RECEIVE_MAXIMUM = 0x21,
235 LMQPROP_TOPIC_ALIAS_MAXIMUM = 0x22,
236 LMQPROP_TOPIC_ALIAS = 0x23,
237 LMQPROP_MAXIMUM_QOS = 0x24,
238 LMQPROP_RETAIN_AVAILABLE = 0x25,
239 LMQPROP_USER_PROPERTY = 0x26,
240 LMQPROP_MAXIMUM_PACKET_SIZE = 0x27,
241 LMQPROP_WILDCARD_SUBSCRIPTION_AVAIL = 0x28,
242 LMQPROP_SUBSCRIPTION_IDENTIFIER_AVAIL = 0x29,
243 LMQPROP_SHARED_SUBSCRIPTION_AVAIL = 0x2a
247 lws_read_mqtt(
struct lws *wsi,
unsigned char *buf, lws_filepos_t len);
250 LWS_VISIBLE LWS_EXTERN
int
251 lws_mqtt_bindata_cmp(
const lws_mqtt_str_t *bd1,
const lws_mqtt_str_t *bd2);
253 LWS_VISIBLE LWS_EXTERN
void
254 lws_mqtt_str_init(lws_mqtt_str_t *s, uint8_t *buf, uint16_t lim,
char nf);
256 LWS_VISIBLE LWS_EXTERN lws_mqtt_str_t *
257 lws_mqtt_str_create(uint16_t lim);
259 LWS_VISIBLE LWS_EXTERN lws_mqtt_str_t *
260 lws_mqtt_str_create_init(uint8_t *buf, uint16_t len, uint16_t lim);
262 LWS_VISIBLE LWS_EXTERN lws_mqtt_str_t *
263 lws_mqtt_str_create_cstr_dup(
const char *buf, uint16_t lim);
265 LWS_VISIBLE LWS_EXTERN uint8_t *
266 lws_mqtt_str_next(lws_mqtt_str_t *s, uint16_t *budget);
268 LWS_VISIBLE LWS_EXTERN
int
269 lws_mqtt_str_advance(lws_mqtt_str_t *s,
int n);
271 LWS_VISIBLE LWS_EXTERN
void
272 lws_mqtt_str_free(lws_mqtt_str_t **s);
302 LWS_VISIBLE LWS_EXTERN
int
304 const void *buf, uint32_t len,
int final);
319 LWS_VISIBLE LWS_EXTERN
int
336 LWS_VISIBLE LWS_EXTERN
int LWS_WARN_UNUSED_RESULT
337 lws_mqtt_client_send_unsubcribe(
struct lws *wsi,
Definition: lws-mqtt.h:67
Definition: lws-mqtt.h:89
Definition: lws-mqtt.h:116
Definition: lws-mqtt.h:105
Definition: lws-mqtt.h:52