lvgl_t113 0.1
t113-s3 86盒的LVGL桌面时钟程序
载入中...
搜索中...
未找到
mqtt_client.c
浏览该文件的文档.
1
26#include <mosquitto.h>
27#include <stdio.h>
28#include <stdlib.h>
29#include <pthread.h>
30#include <unistd.h>
31#include <stdbool.h>
32
33// 定义全局变量
34struct mosquitto *mqtt = NULL;
35bool is_connected = false;
37#define MQTT_USE_ID "703e13100a3d43b6b4abbb628b3c3d89"
38#define MQTT_BROKER_ADDR "119.91.109.180"
39#define MQTT_BROKER_PORT 9501
40
48static void on_connect_callback(struct mosquitto *mqtt, void *obj, int reason_code) {
49 if (reason_code != 0) {
50 fprintf(stderr, "Failed to connect to broker, reason code: %d\n", reason_code);
51 exit(1);
52 }
53 printf("Connected to broker.\n");
54 is_connected = true;
55 mosquitto_subscribe(mqtt, NULL, "switch006", 0);
56}
57
65static void on_message_callback(struct mosquitto *mqtt, void *obj, const struct mosquitto_message *msg) {
66 if (msg != NULL) {
67 printf("Received message on topic '%s': %s\n", msg->topic, (char *)msg->payload);
68 }
69}
70
78static void on_disconnect_callback(struct mosquitto *mqtt, void *obj, int reason_code) {
79 printf("Disconnected from broker, reason code: %d\n", reason_code);
80 is_connected = false;
81}
82
83
89static int mqtt_init() {
90 int ret;
91
92 mosquitto_lib_init();
93 mqtt = mosquitto_new(MQTT_USE_ID, true, NULL);
94 if (!mqtt) {
95 fprintf(stderr, "Failed to create mosquitto instance.\n");
96 return -1;
97 }
98
99 mosquitto_connect_callback_set(mqtt, on_connect_callback);
100 mosquitto_message_callback_set(mqtt, on_message_callback);
101 mosquitto_disconnect_callback_set(mqtt, on_disconnect_callback);
102
103 ret = mosquitto_connect(mqtt, MQTT_BROKER_ADDR, MQTT_BROKER_PORT, 60);
104 if (ret != MOSQ_ERR_SUCCESS) {
105 fprintf(stderr, "Failed to connect to broker, error: %d\n", ret);
106 mosquitto_destroy(mqtt);
107 return -1;
108 }
109
110 return 0;
111}
112
119 */
120static void *mqtt_thread(void *arg) {
121 while (1) {
122 if (mqtt != NULL) {
123 mosquitto_loop(mqtt, 1000, 1);
124 }
125 sleep(1);
126 }
127 return NULL;
128}
129
137 return is_connected;
138}
139
140
147 // 初始化 MQTT 客户端
148 if (mqtt_init() != 0) {
149 fprintf(stderr, "Failed to initialize MQTT client.\n");
150 return -1;
151 }
152
153 // 创建 MQTT 客户端线程
154 if (pthread_create(&mqtt_thread_id, NULL, mqtt_thread, NULL) != 0) {
155 fprintf(stderr, "Failed to create MQTT thread.\n");
156 mosquitto_destroy(mqtt);
157 mosquitto_lib_cleanup();
158 return -1;
159 }
160
161 return 0;
162}
163
168 if (mqtt != NULL) {
169 mosquitto_destroy(mqtt);
170 }
171 mosquitto_lib_cleanup();
172 pthread_cancel(mqtt_thread_id);
173}
pthread_t mqtt_thread_id
struct mosquitto * mqtt
bool mqtt_is_connected()
mqtt连接状态
bool is_connected
static int mqtt_init()
初始化MQTT客户端。
#define MQTT_BROKER_ADDR
void stop_mqtt_client()
停止MQTT客户端。
int start_mqtt_client()
启动MQTT客户端。
static void on_disconnect_callback(struct mosquitto *mqtt, void *obj, int reason_code)
连接短肽回调
static void on_connect_callback(struct mosquitto *mqtt, void *obj, int reason_code)
连接成功回调
#define MQTT_BROKER_PORT
static void on_message_callback(struct mosquitto *mqtt, void *obj, const struct mosquitto_message *msg)
接收消息回调
*static void * mqtt_thread(void *arg)
mqtt线程
#define MQTT_USE_ID