网络自适应
This commit is contained in:
1 parent
a589e89e33
commit
0f40dd8b17
68 files changed
+7062
-2678
No files matched your search
+87
-46
@@ -20,8 +20,14 @@
|
||||
#include "jsonpacket.h"
|
||||
#include "jsonunpack.h"
|
||||
#include <stdlib.h>
|
||||
#include "user_config.h"
|
||||
|
||||
|
||||
#if !defined(LOG_TAG)
|
||||
#define LOG_TAG "network"
|
||||
#endif
|
||||
#include <elog.h>
|
||||
|
||||
ALIGN (RT_ALIGN_SIZE)
|
||||
static char thread_stack[4096];
|
||||
static struct rt_thread netapp_thread;
|
||||
@@ -35,14 +41,14 @@ extern MqttDrv_t gMqttDrv;
|
||||
static rt_timer_t timer;
|
||||
|
||||
|
||||
static uint32_t g_net_5min_timer[SLUICE_COUTN] = {0};
|
||||
static uint32_t g_net_1min_timer[SLUICE_COUTN] = {0};
|
||||
static uint32_t g_net_5min_timer[SUBTOPIC_COUNT] = {0};
|
||||
static uint32_t g_net_1min_timer[SUBTOPIC_COUNT] = {0};
|
||||
|
||||
|
||||
static void timerouter (void * parameter)
|
||||
{
|
||||
TypeIndexMail_t mail;
|
||||
for (int i = 0; i < SLUICE_COUTN; i++)
|
||||
for (int i = 0; i < SUBTOPIC_COUNT; i++)
|
||||
{
|
||||
if (g_net_1min_timer[i] == 1)
|
||||
{
|
||||
@@ -71,7 +77,7 @@ const static char upinfo[][10] = {"heart", "regist", "stand", "sluice", "upack",
|
||||
|
||||
static void thread_entry (void * argument)
|
||||
{
|
||||
rt_kprintf ("%s was start!\r\n", __FILE__);
|
||||
log_i ("network was start!");
|
||||
TypeIndexMail_t mail;
|
||||
timer = rt_timer_create ("timer", timerouter, RT_NULL, 1000, RT_TIMER_FLAG_PERIODIC);
|
||||
// 读取网络驱动类型
|
||||
@@ -89,18 +95,17 @@ static void thread_entry (void * argument)
|
||||
//site_type
|
||||
char * p = ef_get_env ("site_type") ;
|
||||
int site_type = cSiteType2Index(p);
|
||||
rt_kprintf ("site_type:%d\r\n", site_type);
|
||||
log_i ("site_type:%d", site_type);
|
||||
|
||||
//CommTMail_t mail;
|
||||
// 注册网络驱动
|
||||
// 注册网络驱动
|
||||
while (1)
|
||||
{
|
||||
|
||||
INIT:
|
||||
if (RT_EOK == rt_event_recv (gTrigEvents, EVENT_TRIG_COMM_RST, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_NO, RT_NULL))
|
||||
{
|
||||
rt_kprintf ("net work lost\r\n");
|
||||
log_i ("net work lost");
|
||||
mail.Type = MAIL_VIEW_NET_STE;
|
||||
mail.index = DIS_STE_ERROR;
|
||||
rt_mb_send (gViewMail, * ( (uint32_t*) &mail));
|
||||
@@ -115,12 +120,12 @@ INIT:
|
||||
// 订阅成功
|
||||
if (RT_EOK == rt_event_recv (gTrigEvents, EVENT_TRIG_MQTT_SUB, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_NO, RT_NULL))
|
||||
{
|
||||
rt_kprintf ("netWork Sub Success\r\n");
|
||||
// 发送注册报
|
||||
mail.Type = MAIL_COMM_REGIST;
|
||||
mail.index = 1;
|
||||
rt_mb_send (gTCommMail, * ( (uint32_t *) &mail));
|
||||
for (int i = 0; i < SLUICE_COUTN; i++)
|
||||
log_i ("sub Success");
|
||||
// // 发送注册报
|
||||
// mail.Type = MAIL_COMM_REGIST;
|
||||
// mail.index = 1;
|
||||
// rt_mb_send (gTCommMail, * ( (uint32_t *) &mail));
|
||||
for (int i = 0; i < SUBTOPIC_COUNT; i++)
|
||||
{
|
||||
rt_timer_start (timer);
|
||||
g_net_1min_timer[i] = i * 10 + 5;
|
||||
@@ -132,7 +137,7 @@ INIT:
|
||||
}
|
||||
if (rt_mb_recv (gTCommMail, (rt_ubase_t *) &mail, RT_WAITING_NO) == RT_EOK)
|
||||
{
|
||||
rt_kprintf ("recv send mail: type:%s,index:%d\n", upinfo[mail.Type], mail.index);
|
||||
log_i ("send packet: type:%s,index:%d", upinfo[mail.Type], mail.index);
|
||||
if (g_ifupdate != 1)
|
||||
{
|
||||
switch (mail.Type)
|
||||
@@ -152,8 +157,8 @@ INIT:
|
||||
case MAIL_COMM_REGIST: // 注册报
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonRegistDataPacket ((uint8_t *) gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
// gMqttDrv.tx_size = JsonRegistDataPacket ((uint8_t *) gMqttDrv.txbuff);
|
||||
// gMqttDrv.tx_index = mail.index; // 通道号
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketUpRegist (data);
|
||||
@@ -163,11 +168,13 @@ INIT:
|
||||
MQTT_SendData () ;
|
||||
break;
|
||||
case MAIL_COMM_SLUICE: // 闸门状态自报
|
||||
#ifndef USER_JSON_PACKET // 使用Json格式数据包
|
||||
tx_size = PacketSluiceUp (mail.index - 1, data);
|
||||
gMqttDrv.tx_size = PacketHeader (0x4E, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
MQTT_SendData () ;
|
||||
break;
|
||||
#endif
|
||||
case MAIL_COMM_STAND: // 5分钟标准包上报
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
@@ -198,27 +205,17 @@ INIT:
|
||||
|
||||
MQTT_SendData () ;
|
||||
break;
|
||||
case MAIL_COMM_SLACK: // 提闸的应答
|
||||
tx_size = PacketSluiceAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0x4E, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
MQTT_SendData();
|
||||
break;
|
||||
case MAIL_COMM_UPACK: // 升级的应答
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonAckSuccPacket ((uint8_t *) gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketAnsAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0xE0, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#endif
|
||||
// case MAIL_COMM_SLACK: // 提闸的应答
|
||||
// tx_size = PacketSluiceAck (data);
|
||||
// gMqttDrv.tx_size = PacketHeader (0x4E, data, tx_size, gMqttDrv.txbuff);
|
||||
// gMqttDrv.tx_index = mail.index;
|
||||
// MQTT_SendData();
|
||||
// break;
|
||||
|
||||
|
||||
|
||||
MQTT_SendData();
|
||||
break;
|
||||
// MQTT_SendData();
|
||||
// break;
|
||||
case MAIL_COMM_READPARA:
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonConfigReadDataPacket ((uint8_t *) gMqttDrv.txbuff);
|
||||
@@ -231,6 +228,54 @@ INIT:
|
||||
#endif
|
||||
MQTT_SendData();
|
||||
break;
|
||||
case MAIL_COMM_UPACK: // 升级的应答
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonAckDownload ((uint8_t *) gMqttDrv.txbuff,DownUpdate);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketAnsAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0xE0, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#endif
|
||||
break;
|
||||
case MAIL_COMM_SLACK: // 升级的应答
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonAckDownload ((uint8_t *) gMqttDrv.txbuff,DownRun);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketAnsAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0xE0, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#endif
|
||||
break;
|
||||
case MAIL_COMM_WRACK: // 升级的应答
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonAckDownload ((uint8_t *) gMqttDrv.txbuff,DownConfig);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketAnsAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0xE0, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#endif
|
||||
break;
|
||||
case MAIL_COMM_FACACK: // 升级的应答
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
gMqttDrv.tx_size = JsonAckDownload ((uint8_t *) gMqttDrv.txbuff,DownFact);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#else
|
||||
// 心跳数据
|
||||
tx_size = PacketAnsAck (data);
|
||||
gMqttDrv.tx_size = PacketHeader (0xE0, data, tx_size, gMqttDrv.txbuff);
|
||||
gMqttDrv.tx_index = mail.index;
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -242,17 +287,12 @@ INIT:
|
||||
{
|
||||
|
||||
#ifdef USER_JSON_PACKET // 使用Json格式数据包
|
||||
// 这里-1的作用是将通道0 作为升级通道
|
||||
JsonUnPacket(gMqttDrv.rx_index - 1,gMqttDrv.rxbuff); // 第n个通道过来的数据
|
||||
// 解析数据
|
||||
#else
|
||||
|
||||
rxdata_decode_size = hexstr_to_hexbyte (gMqttDrv.rxbuff, rxdata_decode, gMqttDrv.rx_size);
|
||||
rt_kprintf ("<<<<<<<<<<<<rx_size:%d\r\n", rxdata_decode_size);
|
||||
for (int i = 0; i < rxdata_decode_size; i++)
|
||||
{
|
||||
rt_kprintf ("%02X ", rxdata_decode[i]);
|
||||
}
|
||||
rt_kprintf ("\r\n");
|
||||
elog_hexdump("recv",16,rxdata_decode,rxdata_decode_size);
|
||||
switch ( (int) rxdata_decode[10])
|
||||
{
|
||||
case 0x4E: // 控制闸门操作
|
||||
@@ -260,14 +300,14 @@ INIT:
|
||||
// 远程提闸
|
||||
datak = rxdata_decode[18];
|
||||
datak = (datak << 8) + rxdata_decode[19];
|
||||
rt_kprintf ("open:%u mm/10\r\n", datak);
|
||||
log_i ("chann: %d,open:%u mm\r\n",gMqttDrv.rx_index, datak/10);
|
||||
|
||||
//SluiceData[gMqttDrv.rx_index].opt = 1; // 执行操作闸门
|
||||
SluiceData[gMqttDrv.rx_index - 1].sopen = datak / 10;
|
||||
SluiceData[0].sopen = datak / 10;
|
||||
mail.Type = MAIL_SLUICE_OPT;
|
||||
mail.index = gMqttDrv.rx_index - 1;
|
||||
mail.index = gMqttDrv.rx_index-1; // 获取是从哪个通道来的数据
|
||||
rt_mb_send (gSluiceMail, * ( (uint32_t*) &mail));
|
||||
|
||||
log_i ("index:%u\r\n", mail.index);
|
||||
// 回复应答
|
||||
mail.Type = MAIL_COMM_SLACK;
|
||||
mail.index = gMqttDrv.rx_index;
|
||||
@@ -313,6 +353,7 @@ INIT:
|
||||
// 网络连接丢失
|
||||
rt_thread_mdelay (10);
|
||||
}
|
||||
//NETWORKEXIT:
|
||||
|
||||
}
|
||||
|
||||
|
||||
+10
-6
@@ -19,6 +19,10 @@ static char thread_stack[4096];
|
||||
static struct rt_thread probus_thread;
|
||||
|
||||
|
||||
#if !defined(LOG_TAG)
|
||||
#define LOG_TAG "pbus"
|
||||
#endif
|
||||
#include <elog.h>
|
||||
|
||||
|
||||
//uint16_t REG_DATA[REG_MAX] = {0x00};
|
||||
@@ -85,7 +89,7 @@ static void thread_entry (void * argument)
|
||||
int k = 0;
|
||||
uint8_t txbuff[128] = {0};
|
||||
int tx_size = 0;
|
||||
rt_kprintf ("%s was start!\r\n", __FILE__);
|
||||
log_i ("probus was start!");
|
||||
|
||||
g_ETH2Drv.rxdone = eth2_data_rxdone;
|
||||
g_ETH2Drv.BaudRate = 115200;
|
||||
@@ -103,15 +107,15 @@ static void thread_entry (void * argument)
|
||||
//reg_data.bload = SluiceData[0].rload;
|
||||
if (RT_EOK == rt_event_recv (gUartEvents, EVENT_UART_ETH2_RX, RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_NO, RT_NULL))
|
||||
{
|
||||
for (int i = 0; i < g_ETH2Drv.rx_size; i++)
|
||||
{
|
||||
rt_kprintf ("%02x", g_ETH2Drv.rx_buffer[i]);
|
||||
}
|
||||
// for (int i = 0; i < g_ETH2Drv.rx_size; i++)
|
||||
// {
|
||||
// rt_kprintf ("%02x", g_ETH2Drv.rx_buffer[i]);
|
||||
// }
|
||||
if (g_ETH2Drv.rx_size > 4)
|
||||
{
|
||||
k = ModbusSlaveHandle (&modbus_slave, (uint8_t *) g_ETH2Drv.rx_buffer, g_ETH2Drv.rx_size);
|
||||
//k = 2;
|
||||
rt_kprintf ("k:%d\r\n", k);
|
||||
//rt_kprintf ("k:%d\r\n", k);
|
||||
if (k == 0)
|
||||
{
|
||||
switch (modbus_slave.func)
|
||||
|
||||
Reference in new issue
Block a user