pikapython/package/mqtt/_mqtt__MQTT.c

190 lines
5.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "_mqtt__MQTT.h"
#include "mqttclient.h"
void _mqtt__MQTT___init__(PikaObj* self,
char* ip,
int port,
char* clinetID,
char* username,
char* password,
char* version,
char* ca,
int keepalive) {
mqtt_client_t* _client = mqtt_lease();
obj_setPtr(self, "_client", _client);
/* port to str, and cache to object */
char port_str[10] = {0};
__platform_sprintf(port_str, "%d", port);
obj_setStr(self, "port", port_str);
mqtt_set_port(_client, port_str);
if(strlen(ca) > 0)
mqtt_set_ca(_client, ca);
if(strlen(ip) > 0)
mqtt_set_host(_client, ip);
if(strlen(clinetID) > 0)
mqtt_set_client_id(_client, clinetID);
if(strlen(username) > 0)
mqtt_set_user_name(_client, username);
if(strlen(password) > 0)
mqtt_set_password(_client, password);
mqtt_set_clean_session(_client, 1);
}
void _mqtt__MQTT___del__(PikaObj* self) {
mqtt_client_t* _client = obj_getPtr(self, "_client");
if (NULL != _client) {
mqtt_release_free(_client);
}
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_set_client_id
// 功能说明设置mqtt客户端的id
// 输入参数id 字符串格式
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_set_client_id(PikaObj *self, char* id) {
mqtt_client_t* _client = obj_getPtr(self, "_client");
if(id == NULL) {
__platform_printf("input id error\r\n");
return -1;
}
if(strlen(id) <= 0) {
__platform_printf("input id data error\r\n");
return -2;
}
mqtt_set_client_id(_client, id);
return 0;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_set_host
// 功能说明设置mqtt客户端连接主机的ip或者url
// 输入参数:字符串格式
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_set_host(PikaObj *self, char* host_url) {
mqtt_client_t* _client = obj_getPtr(self, "_client");
if(host_url == NULL) {
__platform_printf("input host_url error\r\n");
return -1;
}
if(strlen(host_url) <= 0) {
__platform_printf("input host_url data error\r\n");
return -2;
}
mqtt_set_host(_client, host_url);
return 0;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_set_password
// 功能说明设置mqtt客户端的 密码
// 输入参数:字符串格式
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_set_password(PikaObj *self, char* password){
mqtt_client_t* _client = obj_getPtr(self, "_client");
if(password == NULL) {
__platform_printf("input password error\r\n");
return -1;
}
if(strlen(password) <= 0) {
__platform_printf("input password data error\r\n");
return -2;
}
mqtt_set_password(_client, password);
return 0;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_set_port
// 功能说明设置mqtt客户端连接主机的端口号
// 输入参数:字符串格式
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_set_port(PikaObj *self, int port){
char port_str[10] = {0};
mqtt_client_t* _client = obj_getPtr(self, "_client");
__platform_sprintf(port_str, "%d", port);
obj_setStr(self, "port", port_str);
if(port_str == NULL) {
__platform_printf("input port error\r\n");
return -1;
}
if(strlen(port_str) <= 0) {
__platform_printf("input port data error\r\n");
return -2;
}
mqtt_set_port(_client, port_str);
return 0;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_set_user_name
// 功能说明设置mqtt客户端的用户名
// 输入参数:字符串格式
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_set_user_name(PikaObj *self, char* name){
mqtt_client_t* _client = obj_getPtr(self, "_client");
if(name == NULL) {
__platform_printf("input name error\r\n");
return -1;
}
if(strlen(name) <= 0) {
__platform_printf("input name data error\r\n");
return -2;
}
mqtt_set_user_name(_client, name);
return 0;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_connect
// 功能说明连接mqtt的服务端
// 输入参数:无
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_connect(PikaObj *self){
int ret;
mqtt_client_t* _client = obj_getPtr(self, "_client");
ret = mqtt_connect(_client);
if(ret != 0)
__platform_printf("mqtt connect error :%d\r\n",ret);
return ret;
}
////////////////////////////////////////////////////////////////////
// 函 数 名_mqtt__MQTT_disconnect
// 功能说明:断开 mqtt的连接
// 输入参数:无
// 返 回 值0=成功非0=错误码
///////////////////////////////////////////////////////////////////
int _mqtt__MQTT_disconnect(PikaObj *self) {
int ret;
mqtt_client_t* _client = obj_getPtr(self, "_client");
ret = mqtt_disconnect(_client);
if(ret != 0)
__platform_printf("mqtt disconnect error :%d\r\n",ret);
return ret;
}