forked from xuos/xiuos
feat support 4G MQTT function in webserver for xishutong-arm32, using mqttx test
This commit is contained in:
parent
9199d2655f
commit
c7309c478b
|
@ -125,7 +125,7 @@ int rs485_uart_fd = -1;
|
||||||
/*define net 4G info*/
|
/*define net 4G info*/
|
||||||
static struct net_4g_info {
|
static struct net_4g_info {
|
||||||
char map_ip[20];
|
char map_ip[20];
|
||||||
char connect_ip[20];
|
char connect_ip[40];
|
||||||
char operator[20];
|
char operator[20];
|
||||||
char signal_strength[20];
|
char signal_strength[20];
|
||||||
char connect_port[20];
|
char connect_port[20];
|
||||||
|
@ -137,10 +137,10 @@ static struct net_4g_info {
|
||||||
struct Adapter* adapter;
|
struct Adapter* adapter;
|
||||||
|
|
||||||
static struct net_4g_mqtt_info {
|
static struct net_4g_mqtt_info {
|
||||||
char topic[20];
|
char topic[40];
|
||||||
char username[20];
|
char username[40];
|
||||||
char password[20];
|
char password[40];
|
||||||
int client_id;
|
char client_id[40];
|
||||||
int connect_status;
|
int connect_status;
|
||||||
} net_4g_mqtt_info;
|
} net_4g_mqtt_info;
|
||||||
#endif
|
#endif
|
||||||
|
@ -294,8 +294,6 @@ static void Rs485Configure(int baud_rate, int data_bit, int stop_bit, int parity
|
||||||
static void Net4gGetInfo(char *ip, char *operator, char *signal_strength)
|
static void Net4gGetInfo(char *ip, char *operator, char *signal_strength)
|
||||||
{
|
{
|
||||||
if (net_4g_info.net_4g_init_flag) {
|
if (net_4g_info.net_4g_init_flag) {
|
||||||
AdapterDeviceNetstat(adapter);
|
|
||||||
|
|
||||||
strcpy(ip, adapter->network_info.ip_address);
|
strcpy(ip, adapter->network_info.ip_address);
|
||||||
sprintf(signal_strength, "%d", adapter->network_info.signal_strength);
|
sprintf(signal_strength, "%d", adapter->network_info.signal_strength);
|
||||||
|
|
||||||
|
@ -327,9 +325,15 @@ static void Net4gConnect(void)
|
||||||
ec200a_baud_rate = 115200;
|
ec200a_baud_rate = 115200;
|
||||||
AdapterDeviceOpen(adapter);
|
AdapterDeviceOpen(adapter);
|
||||||
AdapterDeviceControl(adapter, OPE_INT, &ec200a_baud_rate);
|
AdapterDeviceControl(adapter, OPE_INT, &ec200a_baud_rate);
|
||||||
|
AdapterDeviceNetstat(adapter);
|
||||||
net_4g_info.net_4g_init_flag = 1;
|
net_4g_info.net_4g_init_flag = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (1 == net_4g_mqtt_info.connect_status) {
|
||||||
|
AdapterDeviceMqttDisconnect(adapter);
|
||||||
|
net_4g_mqtt_info.connect_status = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (0 == net_4g_info.connect_status) {
|
if (0 == net_4g_info.connect_status) {
|
||||||
ret = AdapterDeviceConnect(adapter, CLIENT, net_4g_info.connect_ip, net_4g_info.connect_port, IPV4);
|
ret = AdapterDeviceConnect(adapter, CLIENT, net_4g_info.connect_ip, net_4g_info.connect_port, IPV4);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -358,34 +362,47 @@ static void Net4gDisconnect(void)
|
||||||
static void NetMqttConnect(void)
|
static void NetMqttConnect(void)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int ec200a_baud_rate;
|
int ec200a_baud_rate = 0;
|
||||||
uint8_t client_id[64];
|
|
||||||
|
//for test
|
||||||
const char *send_msg = "Adapter_4G MQTT Test";
|
const char *send_msg = "Adapter_4G MQTT Test";
|
||||||
|
char recv_msg[256] = {0};
|
||||||
|
int send_cnt = 1;
|
||||||
|
|
||||||
if (0 == net_4g_info.net_4g_init_flag) {
|
if (0 == net_4g_info.net_4g_init_flag) {
|
||||||
adapter->socket.socket_id = 0;
|
adapter->socket.socket_id = 0;
|
||||||
ec200a_baud_rate = 115200;
|
ec200a_baud_rate = 115200;
|
||||||
AdapterDeviceOpen(adapter);
|
AdapterDeviceOpen(adapter);
|
||||||
AdapterDeviceControl(adapter, OPE_INT, &ec200a_baud_rate);
|
AdapterDeviceControl(adapter, OPE_INT, &ec200a_baud_rate);
|
||||||
|
AdapterDeviceNetstat(adapter);
|
||||||
net_4g_info.net_4g_init_flag = 1;
|
net_4g_info.net_4g_init_flag = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (1 == net_4g_info.connect_status) {
|
if (1 == net_4g_info.connect_status) {
|
||||||
uint8_t priv_net_group = IP_PROTOCOL;
|
uint8_t priv_net_group = IP_PROTOCOL;
|
||||||
AdapterDeviceDisconnect(adapter, &priv_net_group);
|
AdapterDeviceDisconnect(adapter, &priv_net_group);
|
||||||
|
net_4g_info.connect_status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(client_id, "%d", net_4g_mqtt_info.client_id);
|
if (0 == net_4g_mqtt_info.connect_status) {
|
||||||
|
ret = AdapterDeviceMqttConnect(adapter, net_4g_info.connect_ip, net_4g_info.connect_port,
|
||||||
|
net_4g_mqtt_info.client_id, net_4g_mqtt_info.username, net_4g_mqtt_info.password);
|
||||||
|
if (ret < 0) {
|
||||||
|
net_4g_mqtt_info.connect_status = 0;
|
||||||
|
printf("webserver %s fail\n", __func__);
|
||||||
|
} else {
|
||||||
|
net_4g_mqtt_info.connect_status = 1;
|
||||||
|
|
||||||
ret = AdapterDeviceMqttConnect(adapter, net_4g_info.connect_ip, net_4g_info.connect_port,
|
//for test
|
||||||
client_id, net_4g_mqtt_info.username, net_4g_mqtt_info.password);
|
while (send_cnt < 11) {
|
||||||
if (ret < 0) {
|
AdapterDeviceMqttSend(adapter, net_4g_mqtt_info.topic, send_msg, strlen(send_msg));
|
||||||
net_4g_mqtt_info.connect_status = 0;
|
AdapterDeviceMqttRecv(adapter, net_4g_mqtt_info.topic, recv_msg, sizeof(recv_msg));
|
||||||
printf("webserver %s fail\n", __func__);
|
printf("[%d]4G mqtt test recv msg %s\n", send_cnt, recv_msg);
|
||||||
} else {
|
send_cnt++;
|
||||||
net_4g_mqtt_info.connect_status = 1;
|
}
|
||||||
AdapterDeviceMqttSend(adapter, net_4g_mqtt_info.topic, send_msg, strlen(send_msg));
|
|
||||||
printf("webserver %s success\n", __func__);
|
printf("webserver %s success\n", __func__);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,12 +688,16 @@ static void fn(struct mg_connection* c, int ev, void* ev_data, void* fn_data)
|
||||||
Net4gGetInfo(net_4g_info.map_ip, net_4g_info.operator, net_4g_info.signal_strength);
|
Net4gGetInfo(net_4g_info.map_ip, net_4g_info.operator, net_4g_info.signal_strength);
|
||||||
|
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||||
"{%m:%m, %m:%m, %m:%m}\n",
|
"{%m:%m, %m:%m, %m:%m, %m:%m, %m:%m, %m:%d}\n",
|
||||||
MG_ESC("mapIp"), MG_ESC(net_4g_info.map_ip),
|
MG_ESC("mapIp"), MG_ESC(net_4g_info.map_ip),
|
||||||
MG_ESC("operator"), MG_ESC(net_4g_info.operator),
|
MG_ESC("operator"), MG_ESC(net_4g_info.operator),
|
||||||
MG_ESC("signalIntensity"), MG_ESC(net_4g_info.signal_strength));
|
MG_ESC("signalIntensity"), MG_ESC(net_4g_info.signal_strength),
|
||||||
|
MG_ESC("publicIp"), MG_ESC(net_4g_info.connect_ip),
|
||||||
|
MG_ESC("publicPort"), MG_ESC(net_4g_info.connect_port),
|
||||||
|
MG_ESC("status"), net_4g_info.connect_status);
|
||||||
} else if (mg_http_match_uri(hm, "/net/set4gInfo")) {
|
} else if (mg_http_match_uri(hm, "/net/set4gInfo")) {
|
||||||
struct mg_str json = hm->body;
|
struct mg_str json = hm->body;
|
||||||
|
printf("json: %s\n", json.ptr);
|
||||||
update_config_array(json, "$.publicIp", net_4g_info.connect_ip);
|
update_config_array(json, "$.publicIp", net_4g_info.connect_ip);
|
||||||
update_config_array(json, "$.publicPort", net_4g_info.connect_port);
|
update_config_array(json, "$.publicPort", net_4g_info.connect_port);
|
||||||
|
|
||||||
|
@ -691,18 +712,20 @@ static void fn(struct mg_connection* c, int ev, void* ev_data, void* fn_data)
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n", "{\"status\":\"success\"}\r\n");
|
mg_http_reply(c, 200, "Content-Type: application/json\r\n", "{\"status\":\"success\"}\r\n");
|
||||||
} else if (mg_http_match_uri(hm, "/net/getMQTTInfo")) {
|
} else if (mg_http_match_uri(hm, "/net/getMQTTInfo")) {
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||||
"{%m:%m, %m:%m, %m:%m, %m:%d, %m:%d}\n",
|
"{%m:%m, %m:%m, %m:%m, %m:%m, %m:%d}\n",
|
||||||
MG_ESC("topic"), MG_ESC(net_4g_mqtt_info.topic),
|
MG_ESC("topic"), MG_ESC(net_4g_mqtt_info.topic),
|
||||||
MG_ESC("username"), MG_ESC(net_4g_mqtt_info.username),
|
MG_ESC("username"), MG_ESC(net_4g_mqtt_info.username),
|
||||||
MG_ESC("password"), MG_ESC(net_4g_mqtt_info.password),
|
MG_ESC("password"), MG_ESC(net_4g_mqtt_info.password),
|
||||||
MG_ESC("client_id"), net_4g_mqtt_info.client_id,
|
MG_ESC("clientId"), MG_ESC(net_4g_mqtt_info.client_id),
|
||||||
MG_ESC("status"), net_4g_mqtt_info.connect_status);
|
MG_ESC("status"), net_4g_mqtt_info.connect_status);
|
||||||
} else if (mg_http_match_uri(hm, "/net/setMQTTInfo")) {
|
} else if (mg_http_match_uri(hm, "/net/setMQTTInfo")) {
|
||||||
struct mg_str json = hm->body;
|
struct mg_str json = hm->body;
|
||||||
|
printf("json: %s\n", json.ptr);
|
||||||
update_config_array(json, "$.topic", net_4g_mqtt_info.topic);
|
update_config_array(json, "$.topic", net_4g_mqtt_info.topic);
|
||||||
update_config_array(json, "$.username", net_4g_mqtt_info.username);
|
update_config_array(json, "$.username", net_4g_mqtt_info.username);
|
||||||
update_config_array(json, "$.password", net_4g_mqtt_info.password);
|
update_config_array(json, "$.password", net_4g_mqtt_info.password);
|
||||||
net_4g_mqtt_info.client_id = mg_json_get_long(json, "$.client_id", 0);
|
update_config_array(json, "$.clientId", net_4g_mqtt_info.client_id);
|
||||||
|
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n", "{\"status\":\"success\"}\r\n");
|
mg_http_reply(c, 200, "Content-Type: application/json\r\n", "{\"status\":\"success\"}\r\n");
|
||||||
} else if (mg_http_match_uri(hm, "/net/connectMQTT")) {
|
} else if (mg_http_match_uri(hm, "/net/connectMQTT")) {
|
||||||
//enable 4G MQTT connect function
|
//enable 4G MQTT connect function
|
||||||
|
@ -849,6 +872,8 @@ static void* do_webserver(void* args)
|
||||||
|
|
||||||
//4g init param
|
//4g init param
|
||||||
net_4g_info.net_4g_init_flag = 0;
|
net_4g_info.net_4g_init_flag = 0;
|
||||||
|
net_4g_info.connect_status = 0;
|
||||||
|
net_4g_mqtt_info.connect_status = 0;
|
||||||
|
|
||||||
//lora init param
|
//lora init param
|
||||||
net_lora_info.bw = 2;//bw 0:125 kHz 1:250 kHz 2:500 kHz,
|
net_lora_info.bw = 2;//bw 0:125 kHz 1:250 kHz 2:500 kHz,
|
||||||
|
|
|
@ -143,16 +143,17 @@ int Adapter4GTest(void)
|
||||||
|
|
||||||
AdapterDeviceNetstat(adapter);
|
AdapterDeviceNetstat(adapter);
|
||||||
|
|
||||||
AdapterDeviceConnect(adapter, CLIENT, server_addr, server_port, IPV4);
|
/*4G TCP Connect Test*/
|
||||||
|
// AdapterDeviceConnect(adapter, CLIENT, server_addr, server_port, IPV4);
|
||||||
|
|
||||||
while (1) {
|
// while (1) {
|
||||||
AdapterDeviceSend(adapter, send_msg, strlen(send_msg));
|
// AdapterDeviceSend(adapter, send_msg, strlen(send_msg));
|
||||||
AdapterDeviceRecv(adapter, recv_msg, 256);
|
// AdapterDeviceRecv(adapter, recv_msg, 256);
|
||||||
printf("4G recv msg %s\n", recv_msg);
|
// printf("4G recv msg %s\n", recv_msg);
|
||||||
memset(recv_msg, 0, 256);
|
// memset(recv_msg, 0, 256);
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*4G MQTT Connect Test*/
|
||||||
AdapterDeviceMqttConnect(adapter, server_addr, server_port, client_id, username, password);
|
AdapterDeviceMqttConnect(adapter, server_addr, server_port, client_id, username, password);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -161,7 +162,6 @@ int Adapter4GTest(void)
|
||||||
printf("4G mqtt recv msg %s\n", recv_msg);
|
printf("4G mqtt recv msg %s\n", recv_msg);
|
||||||
memset(recv_msg, 0, 256);
|
memset(recv_msg, 0, 256);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue