MeterLogger
mqtt.h
Go to the documentation of this file.
1 /* mqtt.h
2 *
3 * Copyright (c) 2014-2015, Tuan PM <tuanpm at live dot com>
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * * Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * * Neither the name of Redis nor the names of its contributors may be used
15 * to endorse or promote products derived from this software without
16 * specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
29 */
30 #ifndef USER_AT_MQTT_H_
31 #define USER_AT_MQTT_H_
32 #include "mqtt_msg.h"
33 #include "user_interface.h"
34 
35 #include "queue.h"
36 typedef struct mqtt_event_data_t
37 {
38  uint8_t type;
39  const char* topic;
40  const char* data;
41  uint16_t topic_length;
42  uint16_t data_length;
43  uint16_t data_offset;
45 
46 typedef struct mqtt_state_t
47 {
48  uint16_t port;
51  uint8_t* in_buffer;
52  uint8_t* out_buffer;
55  uint16_t message_length;
59  uint16_t pending_msg_id;
62 } mqtt_state_t;
63 
64 typedef enum {
88 } tConnState;
89 
90 typedef void (*MqttCallback)(uint32_t *args);
91 typedef void (*MqttDataCallback)(uint32_t *args, const char* topic, uint32_t topic_len, const char *data, uint32_t lengh);
92 
93 typedef struct {
94  struct espconn *pCon;
95  uint8_t security;
96  uint8_t* host;
97  uint32_t port;
107  uint32_t keepAliveTick;
108  uint32_t reconnectTick;
109  uint32_t sendTimeout;
112  void* user_data;
113 } MQTT_Client;
114 
115 #define SEC_NONSSL 0
116 #define SEC_SSL 1
117 
118 #define MQTT_FLAG_CONNECTED 1
119 #define MQTT_FLAG_READY 2
120 #define MQTT_FLAG_EXIT 4
121 
122 #define MQTT_EVENT_TYPE_NONE 0
123 #define MQTT_EVENT_TYPE_CONNECTED 1
124 #define MQTT_EVENT_TYPE_DISCONNECTED 2
125 #define MQTT_EVENT_TYPE_SUBSCRIBED 3
126 #define MQTT_EVENT_TYPE_UNSUBSCRIBED 4
127 #define MQTT_EVENT_TYPE_PUBLISH 5
128 #define MQTT_EVENT_TYPE_PUBLISHED 6
129 #define MQTT_EVENT_TYPE_EXITED 7
130 #define MQTT_EVENT_TYPE_PUBLISH_CONTINUATION 8
131 
132 void ICACHE_FLASH_ATTR MQTT_InitConnection(MQTT_Client *mqttClient, uint8_t* host, uint32_t port, uint8_t security);
133 BOOL ICACHE_FLASH_ATTR MQTT_InitClient(MQTT_Client *mqttClient, uint8_t* client_id, uint8_t* client_user, uint8_t* client_pass, uint32_t keepAliveTime, uint8_t cleanSession);
135 void ICACHE_FLASH_ATTR MQTT_InitLWT(MQTT_Client *mqttClient, uint8_t* will_topic, uint8_t* will_msg, uint8_t will_qos, uint8_t will_retain);
136 void ICACHE_FLASH_ATTR MQTT_OnConnected(MQTT_Client *mqttClient, MqttCallback connectedCb);
137 void ICACHE_FLASH_ATTR MQTT_OnDisconnected(MQTT_Client *mqttClient, MqttCallback disconnectedCb);
138 void ICACHE_FLASH_ATTR MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb);
139 void ICACHE_FLASH_ATTR MQTT_OnTimeout(MQTT_Client *mqttClient, MqttCallback timeoutCb);
141 BOOL ICACHE_FLASH_ATTR MQTT_Subscribe(MQTT_Client *client, char* topic, uint8_t qos);
143 void ICACHE_FLASH_ATTR MQTT_Connect(MQTT_Client *mqttClient);
145 BOOL ICACHE_FLASH_ATTR MQTT_Publish(MQTT_Client *client, const char* topic, const char* data, int data_length, int qos, int retain);
147 
148 #endif /* USER_AT_MQTT_H_ */
BOOL ICACHE_FLASH_ATTR MQTT_UnSubscribe(MQTT_Client *client, char *topic)
MQTT un-subscibe function.
Definition: mqtt.c:650
uint8_t type
Definition: mqtt.h:38
uint32_t sendTimeout
Definition: mqtt.h:109
Definition: mqtt.h:65
uint32_t port
Definition: mqtt.h:97
BOOL ICACHE_FLASH_ATTR MQTT_Subscribe(MQTT_Client *client, char *topic, uint8_t qos)
MQTT subscibe function.
Definition: mqtt.c:623
ETSTimer mqttTimer
Definition: mqtt.h:106
uint16_t message_length
Definition: mqtt.h:55
MqttDataCallback dataCb
Definition: mqtt.h:105
tConnState
Definition: mqtt.h:64
int pending_publish_qos
Definition: mqtt.h:61
void ICACHE_FLASH_ATTR MQTT_Connect(MQTT_Client *mqttClient)
Begin connect to MQTT broker.
Definition: mqtt.c:892
#define ICACHE_FLASH_ATTR
Definition: c_types.h:99
BOOL ICACHE_FLASH_ATTR MQTT_InitClient(MQTT_Client *mqttClient, uint8_t *client_id, uint8_t *client_user, uint8_t *client_pass, uint32_t keepAliveTime, uint8_t cleanSession)
MQTT initialization mqtt client function.
Definition: mqtt.c:801
uint8_t * host
Definition: mqtt.h:96
MqttCallback publishedCb
Definition: mqtt.h:103
BOOL ICACHE_FLASH_ATTR MQTT_Ping(MQTT_Client *client)
MQTT ping function.
Definition: mqtt.c:675
uint16_t port
Definition: mqtt.h:48
struct espconn * pCon
Definition: mqtt.h:94
const char * topic
Definition: mqtt.h:39
struct mqtt_event_data_t mqtt_event_data_t
void ICACHE_FLASH_ATTR MQTT_OnPublished(MQTT_Client *mqttClient, MqttCallback publishedCb)
Definition: mqtt.c:999
void * user_data
Definition: mqtt.h:112
uint8_t * in_buffer
Definition: mqtt.h:51
int out_buffer_length
Definition: mqtt.h:54
MqttCallback connectedCb
Definition: mqtt.h:101
void ICACHE_FLASH_ATTR MQTT_OnTimeout(MQTT_Client *mqttClient, MqttCallback timeoutCb)
Definition: mqtt.c:1005
void ICACHE_FLASH_ATTR MQTT_InitConnection(MQTT_Client *mqttClient, uint8_t *host, uint32_t port, uint8_t security)
MQTT initialization connection function.
Definition: mqtt.c:777
void(* MqttCallback)(uint32_t *args)
Definition: mqtt.h:90
void ICACHE_FLASH_ATTR MQTT_InitLWT(MQTT_Client *mqttClient, uint8_t *will_topic, uint8_t *will_msg, uint8_t will_qos, uint8_t will_retain)
Definition: mqtt.c:869
int in_buffer_length
Definition: mqtt.h:53
MqttCallback timeoutCb
Definition: mqtt.h:104
QUEUE msgQueue
Definition: mqtt.h:111
Definition: mqtt.h:82
typedefPACK_STRUCT_END struct ip_addr ip_addr_t
Definition: ip_addr.h:64
uint16_t message_length_read
Definition: mqtt.h:56
void ICACHE_FLASH_ATTR MQTT_OnConnected(MQTT_Client *mqttClient, MqttCallback connectedCb)
Definition: mqtt.c:981
mqtt_connect_info_t connect_info
Definition: mqtt.h:100
uint16_t pending_msg_id
Definition: mqtt.h:59
uint8_t * out_buffer
Definition: mqtt.h:52
mqtt_connection_t mqtt_connection
Definition: mqtt.h:58
uint32_t reconnectTick
Definition: mqtt.h:108
const char * data
Definition: mqtt.h:40
mqtt_message_t * outbound_message
Definition: mqtt.h:57
void ICACHE_FLASH_ATTR MQTT_OnData(MQTT_Client *mqttClient, MqttDataCallback dataCb)
Definition: mqtt.c:993
uint8_t security
Definition: mqtt.h:95
#define BOOL
Definition: c_types.h:107
void ICACHE_FLASH_ATTR MQTT_DeleteClient(MQTT_Client *mqttClient)
Definition: mqtt.c:964
tConnState connState
Definition: mqtt.h:110
Definition: queue.h:35
uint16_t topic_length
Definition: mqtt.h:41
MqttCallback disconnectedCb
Definition: mqtt.h:102
BOOL ICACHE_FLASH_ATTR MQTT_Publish(MQTT_Client *client, const char *topic, const char *data, int data_length, int qos, int retain)
MQTT publish function.
Definition: mqtt.c:591
void ICACHE_FLASH_ATTR MQTT_Disconnect(MQTT_Client *mqttClient)
Definition: mqtt.c:956
uint16_t data_length
Definition: mqtt.h:42
int pending_msg_type
Definition: mqtt.h:60
mqtt_connect_info_t * connect_info
Definition: mqtt.h:50
ip_addr_t ip
Definition: mqtt.h:98
void(* MqttDataCallback)(uint32_t *args, const char *topic, uint32_t topic_len, const char *data, uint32_t lengh)
Definition: mqtt.h:91
uint16_t data_offset
Definition: mqtt.h:43
mqtt_state_t mqtt_state
Definition: mqtt.h:99
void ICACHE_FLASH_ATTR MQTT_OnDisconnected(MQTT_Client *mqttClient, MqttCallback disconnectedCb)
Definition: mqtt.c:987
uint32_t keepAliveTick
Definition: mqtt.h:107
int auto_reconnect
Definition: mqtt.h:49
struct mqtt_state_t mqtt_state_t