mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
Merge branch 'mqttdev'
This commit is contained in:
commit
cf3311b130
@ -56,7 +56,12 @@ print('listSubscribeTopic out', out)
|
|||||||
ret = client.setDisconnectHandler(reconnect_mq);
|
ret = client.setDisconnectHandler(reconnect_mq);
|
||||||
print("setDisconnectHandler:%d" % ret)
|
print("setDisconnectHandler:%d" % ret)
|
||||||
|
|
||||||
# ret = client.setWill(1,'topic_will',1,'lost mqtt connect')
|
# ret = client.setWill('topic_will','lost mqtt connect')
|
||||||
|
# print("setWill:%d" % ret)
|
||||||
|
# client.publish('topic_will', 'hello pikascript', 1)
|
||||||
|
# T.sleep_s(5)
|
||||||
|
# print("sleep_s:5s")
|
||||||
|
|
||||||
T.sleep_s(30)
|
T.sleep_s(30)
|
||||||
# exit()
|
# exit()
|
||||||
ret = client.disconnect()
|
ret = client.disconnect()
|
||||||
|
@ -160,7 +160,7 @@ int _mqtt__MQTT_disconnect(PikaObj* self) {
|
|||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
||||||
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
||||||
int i = 0;
|
// int i = 0;
|
||||||
mqtt_list_t *curr, *next;
|
mqtt_list_t *curr, *next;
|
||||||
message_handlers_t* msg_handler;
|
message_handlers_t* msg_handler;
|
||||||
PikaObj* list = NULL;
|
PikaObj* list = NULL;
|
||||||
@ -187,7 +187,7 @@ PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
|||||||
if (NULL != msg_handler->topic_filter) {
|
if (NULL != msg_handler->topic_filter) {
|
||||||
MQTT_LOG_I("%s:%d %s()...[%d] subscribe topic: %s", __FILE__,
|
MQTT_LOG_I("%s:%d %s()...[%d] subscribe topic: %s", __FILE__,
|
||||||
__LINE__, __FUNCTION__, ++i, msg_handler->topic_filter);
|
__LINE__, __FUNCTION__, ++i, msg_handler->topic_filter);
|
||||||
__platform_printf("[%d]subscribe topic: %s\n",++i, msg_handler->topic_filter);
|
// __platform_printf("[%d]subscribe topic: %s\n",++i, msg_handler->topic_filter);
|
||||||
/* 用 arg_new<type> 的 api 创建 arg */
|
/* 用 arg_new<type> 的 api 创建 arg */
|
||||||
Arg* str_arg1 = arg_newStr((char*)msg_handler->topic_filter);
|
Arg* str_arg1 = arg_newStr((char*)msg_handler->topic_filter);
|
||||||
/* 添加到 list 对象 */
|
/* 添加到 list 对象 */
|
||||||
@ -482,7 +482,6 @@ int _mqtt__MQTT_setWill(PikaObj* self,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __platform_printf("input retain :%d\r\n", (uint8_t)retain);
|
|
||||||
|
|
||||||
// 必须转换成python环境的变量,否则函数退出后,topic里的是个空指针
|
// 必须转换成python环境的变量,否则函数退出后,topic里的是个空指针
|
||||||
memset(topic_str, 0, sizeof(topic_str));
|
memset(topic_str, 0, sizeof(topic_str));
|
||||||
@ -490,6 +489,11 @@ int _mqtt__MQTT_setWill(PikaObj* self,
|
|||||||
obj_setStr(self, topic_str, topic);
|
obj_setStr(self, topic_str, topic);
|
||||||
obj_setStr(self, "Will_payload", payload);
|
obj_setStr(self, "Will_payload", payload);
|
||||||
|
|
||||||
|
// __platform_printf("obj_getStr(self, topic_str) :%s\r\n", obj_getStr(self, topic_str));
|
||||||
|
// __platform_printf("iqos :%d\r\n", qos);
|
||||||
|
// __platform_printf("retain :%d\r\n", retain);
|
||||||
|
// __platform_printf("obj_getStr(self, \"Will_payload\") :%s\r\n", obj_getStr(self, "Will_payload"));
|
||||||
|
|
||||||
ret = mqtt_set_will_options(_client, obj_getStr(self, topic_str), qos,
|
ret = mqtt_set_will_options(_client, obj_getStr(self, topic_str), qos,
|
||||||
(uint8_t)retain,
|
(uint8_t)retain,
|
||||||
obj_getStr(self, "Will_payload"));
|
obj_getStr(self, "Will_payload"));
|
||||||
@ -689,12 +693,13 @@ int _mqtt__MQTT_getQos(PikaObj* self, int signal) {
|
|||||||
// 返 回 值:0=成功;非0=错误码
|
// 返 回 值:0=成功;非0=错误码
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
void Reconnect_Handler(void *client, void *reconnect_date) {
|
void Reconnect_Handler(void *client, void *reconnect_date) {
|
||||||
PikaObj* self = ((mqtt_client_t*)client)->user_data;
|
// PikaObj* self = ((mqtt_client_t*)client)->user_data;
|
||||||
__platform_printf("Reconnect_Handler\r\n");
|
// __platform_printf("Reconnect_Handler\r\n");
|
||||||
|
|
||||||
//发送事件信号
|
if(((mqtt_client_t*)client)->mqtt_client_state != CLIENT_STATE_CONNECTED) {
|
||||||
pks_eventListener_sendSignal(g_mqtt_event_listener,MQTT_RECONNECTION_EVENT_ID,
|
//发送事件信号
|
||||||
112233);
|
pks_eventListener_sendSignal(g_mqtt_event_listener,MQTT_RECONNECTION_EVENT_ID,1);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -707,7 +712,7 @@ void Reconnect_Handler(void *client, void *reconnect_date) {
|
|||||||
int _mqtt__MQTT_setDisconnectHandler(PikaObj* self, Arg* cb) {
|
int _mqtt__MQTT_setDisconnectHandler(PikaObj* self, Arg* cb) {
|
||||||
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
||||||
|
|
||||||
__platform_printf("_mqtt__MQTT_setDisconnectHandler\r\n");
|
// __platform_printf("_mqtt__MQTT_setDisconnectHandler\r\n");
|
||||||
|
|
||||||
//注册到c库中
|
//注册到c库中
|
||||||
mqtt_set_reconnect_handler(_client,Reconnect_Handler);
|
mqtt_set_reconnect_handler(_client,Reconnect_Handler);
|
||||||
|
@ -15,13 +15,13 @@ class MQTT(_mqtt._MQTT):
|
|||||||
username, password, version,
|
username, password, version,
|
||||||
ca, keepalive)
|
ca, keepalive)
|
||||||
|
|
||||||
def subscribe(self, topic, cb, qos=0):
|
def subscribe(self, topic, cb, qos=1):
|
||||||
return super().subscribe(topic, cb, qos)
|
return super().subscribe(topic, cb, qos)
|
||||||
|
|
||||||
def publish(self, topic, payload, qos=0):
|
def publish(self, topic, payload, qos=1):
|
||||||
return super().publish(topic, payload, qos)
|
return super().publish(topic, payload, qos)
|
||||||
|
|
||||||
def setWill(self, topic, payload, qos=0, retain=0):
|
def setWill(self, topic, payload, qos=1, retain=0):
|
||||||
return super().setWill(topic, payload, qos, retain)
|
return super().setWill(topic, payload, qos, retain)
|
||||||
|
|
||||||
def unsubscribe(self, topic=''):
|
def unsubscribe(self, topic=''):
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
// #define MQTT_LOG_IS_SALOF
|
// #define MQTT_LOG_IS_SALOF
|
||||||
|
|
||||||
#define MQTT_LOG_LEVEL MQTT_LOG_WARN_LEVEL //MQTT_LOG_WARN_LEVEL MQTT_LOG_DEBUG_LEVEL
|
#define MQTT_LOG_LEVEL MQTT_LOG_ERR_LEVEL //MQTT_LOG_WARN_LEVEL MQTT_LOG_DEBUG_LEVEL
|
||||||
|
|
||||||
#ifdef MQTT_LOG_IS_SALOF
|
#ifdef MQTT_LOG_IS_SALOF
|
||||||
#define SALOF_USING_LOG (1U)
|
#define SALOF_USING_LOG (1U)
|
||||||
|
@ -630,9 +630,10 @@ static int mqtt_try_resubscribe(mqtt_client_t* c) {
|
|||||||
/* resubscribe topic */
|
/* resubscribe topic */
|
||||||
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos,
|
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos,
|
||||||
msg_handler->handler)) ==
|
msg_handler->handler)) ==
|
||||||
MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR)
|
MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR) {
|
||||||
MQTT_LOG_W("%s:%d %s()... mqtt ack handler num too much ...",
|
MQTT_LOG_W("%s:%d %s()... mqtt ack handler num too much ...",
|
||||||
__FILE__, __LINE__, __FUNCTION__);
|
__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_ERROR(rc);
|
RETURN_ERROR(rc);
|
||||||
@ -995,7 +996,7 @@ static int mqtt_yield(mqtt_client_t* c, int timeout_ms) {
|
|||||||
mqtt_ack_list_scan(c, 1);
|
mqtt_ack_list_scan(c, 1);
|
||||||
|
|
||||||
} else if (MQTT_NOT_CONNECT_ERROR == rc) {
|
} else if (MQTT_NOT_CONNECT_ERROR == rc) {
|
||||||
MQTT_LOG_E("%s:%d %s()... mqtt not connect", __FILE__, __LINE__,
|
MQTT_LOG_W("%s:%d %s()... mqtt not connect", __FILE__, __LINE__,
|
||||||
__FUNCTION__);
|
__FUNCTION__);
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
@ -1563,7 +1564,7 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int mqtt_list_subscribe_topic(mqtt_client_t* c) {
|
int mqtt_list_subscribe_topic(mqtt_client_t* c) {
|
||||||
int i = 0;
|
// int i = 0;
|
||||||
mqtt_list_t *curr, *next;
|
mqtt_list_t *curr, *next;
|
||||||
message_handlers_t* msg_handler;
|
message_handlers_t* msg_handler;
|
||||||
|
|
||||||
|
@ -15,13 +15,13 @@ class MQTT(_mqtt._MQTT):
|
|||||||
username, password, version,
|
username, password, version,
|
||||||
ca, keepalive)
|
ca, keepalive)
|
||||||
|
|
||||||
def subscribe(self, topic, cb, qos=0):
|
def subscribe(self, topic, cb, qos=1):
|
||||||
return super().subscribe(topic, cb, qos)
|
return super().subscribe(topic, cb, qos)
|
||||||
|
|
||||||
def publish(self, topic, payload, qos=0):
|
def publish(self, topic, payload, qos=1):
|
||||||
return super().publish(topic, payload, qos)
|
return super().publish(topic, payload, qos)
|
||||||
|
|
||||||
def setWill(self, topic, payload, qos=0, retain=0):
|
def setWill(self, topic, payload, qos=1, retain=0):
|
||||||
return super().setWill(topic, payload, qos, retain)
|
return super().setWill(topic, payload, qos, retain)
|
||||||
|
|
||||||
def unsubscribe(self, topic=''):
|
def unsubscribe(self, topic=''):
|
||||||
|
@ -160,7 +160,7 @@ int _mqtt__MQTT_disconnect(PikaObj* self) {
|
|||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
||||||
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
||||||
int i = 0;
|
// int i = 0;
|
||||||
mqtt_list_t *curr, *next;
|
mqtt_list_t *curr, *next;
|
||||||
message_handlers_t* msg_handler;
|
message_handlers_t* msg_handler;
|
||||||
PikaObj* list = NULL;
|
PikaObj* list = NULL;
|
||||||
@ -187,7 +187,7 @@ PikaObj* _mqtt__MQTT_listSubscribeTopic(PikaObj* self) {
|
|||||||
if (NULL != msg_handler->topic_filter) {
|
if (NULL != msg_handler->topic_filter) {
|
||||||
MQTT_LOG_I("%s:%d %s()...[%d] subscribe topic: %s", __FILE__,
|
MQTT_LOG_I("%s:%d %s()...[%d] subscribe topic: %s", __FILE__,
|
||||||
__LINE__, __FUNCTION__, ++i, msg_handler->topic_filter);
|
__LINE__, __FUNCTION__, ++i, msg_handler->topic_filter);
|
||||||
__platform_printf("[%d]subscribe topic: %s\n",++i, msg_handler->topic_filter);
|
// __platform_printf("[%d]subscribe topic: %s\n",++i, msg_handler->topic_filter);
|
||||||
/* 用 arg_new<type> 的 api 创建 arg */
|
/* 用 arg_new<type> 的 api 创建 arg */
|
||||||
Arg* str_arg1 = arg_newStr((char*)msg_handler->topic_filter);
|
Arg* str_arg1 = arg_newStr((char*)msg_handler->topic_filter);
|
||||||
/* 添加到 list 对象 */
|
/* 添加到 list 对象 */
|
||||||
@ -482,7 +482,6 @@ int _mqtt__MQTT_setWill(PikaObj* self,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __platform_printf("input retain :%d\r\n", (uint8_t)retain);
|
|
||||||
|
|
||||||
// 必须转换成python环境的变量,否则函数退出后,topic里的是个空指针
|
// 必须转换成python环境的变量,否则函数退出后,topic里的是个空指针
|
||||||
memset(topic_str, 0, sizeof(topic_str));
|
memset(topic_str, 0, sizeof(topic_str));
|
||||||
@ -490,6 +489,11 @@ int _mqtt__MQTT_setWill(PikaObj* self,
|
|||||||
obj_setStr(self, topic_str, topic);
|
obj_setStr(self, topic_str, topic);
|
||||||
obj_setStr(self, "Will_payload", payload);
|
obj_setStr(self, "Will_payload", payload);
|
||||||
|
|
||||||
|
// __platform_printf("obj_getStr(self, topic_str) :%s\r\n", obj_getStr(self, topic_str));
|
||||||
|
// __platform_printf("iqos :%d\r\n", qos);
|
||||||
|
// __platform_printf("retain :%d\r\n", retain);
|
||||||
|
// __platform_printf("obj_getStr(self, \"Will_payload\") :%s\r\n", obj_getStr(self, "Will_payload"));
|
||||||
|
|
||||||
ret = mqtt_set_will_options(_client, obj_getStr(self, topic_str), qos,
|
ret = mqtt_set_will_options(_client, obj_getStr(self, topic_str), qos,
|
||||||
(uint8_t)retain,
|
(uint8_t)retain,
|
||||||
obj_getStr(self, "Will_payload"));
|
obj_getStr(self, "Will_payload"));
|
||||||
@ -689,12 +693,13 @@ int _mqtt__MQTT_getQos(PikaObj* self, int signal) {
|
|||||||
// 返 回 值:0=成功;非0=错误码
|
// 返 回 值:0=成功;非0=错误码
|
||||||
///////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////
|
||||||
void Reconnect_Handler(void *client, void *reconnect_date) {
|
void Reconnect_Handler(void *client, void *reconnect_date) {
|
||||||
PikaObj* self = ((mqtt_client_t*)client)->user_data;
|
// PikaObj* self = ((mqtt_client_t*)client)->user_data;
|
||||||
__platform_printf("Reconnect_Handler\r\n");
|
// __platform_printf("Reconnect_Handler\r\n");
|
||||||
|
|
||||||
//发送事件信号
|
if(((mqtt_client_t*)client)->mqtt_client_state != CLIENT_STATE_CONNECTED) {
|
||||||
pks_eventListener_sendSignal(g_mqtt_event_listener,MQTT_RECONNECTION_EVENT_ID,
|
//发送事件信号
|
||||||
112233);
|
pks_eventListener_sendSignal(g_mqtt_event_listener,MQTT_RECONNECTION_EVENT_ID,1);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -707,7 +712,7 @@ void Reconnect_Handler(void *client, void *reconnect_date) {
|
|||||||
int _mqtt__MQTT_setDisconnectHandler(PikaObj* self, Arg* cb) {
|
int _mqtt__MQTT_setDisconnectHandler(PikaObj* self, Arg* cb) {
|
||||||
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
mqtt_client_t* _client = obj_getPtr(self, "_client");
|
||||||
|
|
||||||
__platform_printf("_mqtt__MQTT_setDisconnectHandler\r\n");
|
// __platform_printf("_mqtt__MQTT_setDisconnectHandler\r\n");
|
||||||
|
|
||||||
//注册到c库中
|
//注册到c库中
|
||||||
mqtt_set_reconnect_handler(_client,Reconnect_Handler);
|
mqtt_set_reconnect_handler(_client,Reconnect_Handler);
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
// #define MQTT_LOG_IS_SALOF
|
// #define MQTT_LOG_IS_SALOF
|
||||||
|
|
||||||
#define MQTT_LOG_LEVEL MQTT_LOG_WARN_LEVEL //MQTT_LOG_WARN_LEVEL MQTT_LOG_DEBUG_LEVEL
|
#define MQTT_LOG_LEVEL MQTT_LOG_ERR_LEVEL //MQTT_LOG_WARN_LEVEL MQTT_LOG_DEBUG_LEVEL
|
||||||
|
|
||||||
#ifdef MQTT_LOG_IS_SALOF
|
#ifdef MQTT_LOG_IS_SALOF
|
||||||
#define SALOF_USING_LOG (1U)
|
#define SALOF_USING_LOG (1U)
|
||||||
|
@ -630,9 +630,10 @@ static int mqtt_try_resubscribe(mqtt_client_t* c) {
|
|||||||
/* resubscribe topic */
|
/* resubscribe topic */
|
||||||
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos,
|
if ((rc = mqtt_subscribe(c, msg_handler->topic_filter, msg_handler->qos,
|
||||||
msg_handler->handler)) ==
|
msg_handler->handler)) ==
|
||||||
MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR)
|
MQTT_ACK_HANDLER_NUM_TOO_MUCH_ERROR) {
|
||||||
MQTT_LOG_W("%s:%d %s()... mqtt ack handler num too much ...",
|
MQTT_LOG_W("%s:%d %s()... mqtt ack handler num too much ...",
|
||||||
__FILE__, __LINE__, __FUNCTION__);
|
__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_ERROR(rc);
|
RETURN_ERROR(rc);
|
||||||
@ -995,7 +996,7 @@ static int mqtt_yield(mqtt_client_t* c, int timeout_ms) {
|
|||||||
mqtt_ack_list_scan(c, 1);
|
mqtt_ack_list_scan(c, 1);
|
||||||
|
|
||||||
} else if (MQTT_NOT_CONNECT_ERROR == rc) {
|
} else if (MQTT_NOT_CONNECT_ERROR == rc) {
|
||||||
MQTT_LOG_E("%s:%d %s()... mqtt not connect", __FILE__, __LINE__,
|
MQTT_LOG_W("%s:%d %s()... mqtt not connect", __FILE__, __LINE__,
|
||||||
__FUNCTION__);
|
__FUNCTION__);
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
@ -1563,7 +1564,7 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int mqtt_list_subscribe_topic(mqtt_client_t* c) {
|
int mqtt_list_subscribe_topic(mqtt_client_t* c) {
|
||||||
int i = 0;
|
// int i = 0;
|
||||||
mqtt_list_t *curr, *next;
|
mqtt_list_t *curr, *next;
|
||||||
message_handlers_t* msg_handler;
|
message_handlers_t* msg_handler;
|
||||||
|
|
||||||
|
@ -56,7 +56,12 @@ print('listSubscribeTopic out', out)
|
|||||||
ret = client.setDisconnectHandler(reconnect_mq);
|
ret = client.setDisconnectHandler(reconnect_mq);
|
||||||
print("setDisconnectHandler:%d" % ret)
|
print("setDisconnectHandler:%d" % ret)
|
||||||
|
|
||||||
# ret = client.setWill(1,'topic_will',1,'lost mqtt connect')
|
# ret = client.setWill('topic_will','lost mqtt connect')
|
||||||
|
# print("setWill:%d" % ret)
|
||||||
|
# client.publish('topic_will', 'hello pikascript', 1)
|
||||||
|
# T.sleep_s(5)
|
||||||
|
# print("sleep_s:5s")
|
||||||
|
|
||||||
T.sleep_s(30)
|
T.sleep_s(30)
|
||||||
# exit()
|
# exit()
|
||||||
ret = client.disconnect()
|
ret = client.disconnect()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user