add initTT() function
add isEthUP() function update isTCPok() and pwTT_thread_entry()
This commit is contained in:
parent
7b2310c1e0
commit
1891a2b388
@ -202,31 +202,57 @@ void chkAndSendFile()
|
||||
|
||||
//tcp连接保活
|
||||
//实际场景不存在中间断掉的可能
|
||||
void iniCnt()
|
||||
void initTT_thread_entry()
|
||||
{
|
||||
rt_hw_stm32_eth_init(); //激活网口
|
||||
rt_thread_mdelay(5000);
|
||||
|
||||
while (1 && !isTCPok()) //判断TCP连接是否正常,异常自动重连
|
||||
while (1)
|
||||
{
|
||||
// while (!isTCPok())
|
||||
{
|
||||
LOG_W("TT server is not ready.");
|
||||
tcpInit();
|
||||
LOG_D("s=%d",isTCPok());
|
||||
// rt_thread_mdelay(5000);
|
||||
if (!isTTon()) {
|
||||
break;
|
||||
}
|
||||
if (!isEthUP())
|
||||
{ //只初始化一次
|
||||
LOG_D("init eth...");
|
||||
if (rt_hw_stm32_eth_init() == RT_EOK)
|
||||
{
|
||||
LOG_D("eth inited DONE.");
|
||||
}; //激活网口
|
||||
}
|
||||
else if (!isTCPok()) //判断TCP连接是否正常,异常自动重连
|
||||
{
|
||||
LOG_D("TT server is ready.");
|
||||
tcpRecMQ();
|
||||
recTT();
|
||||
rt_thread_mdelay(1000);
|
||||
// LOG_W("TT server is not ready,--%d",isTCPok());
|
||||
tcpInit();
|
||||
// rt_thread_mdelay(1000);
|
||||
if (isTCPok())
|
||||
{
|
||||
LOG_D("TT server is ready.");
|
||||
tcpRecMQ(); //开启tcp接收线程
|
||||
recTT();
|
||||
}
|
||||
}
|
||||
|
||||
rt_thread_mdelay(3000); //chk with 3 second interval
|
||||
// LOG_D("rechk-%d",isTCPok());
|
||||
}
|
||||
}
|
||||
void deiniCnt()
|
||||
void initTT()
|
||||
{
|
||||
/* 创建 serial 线程 */
|
||||
rt_thread_t thread = rt_thread_create("initTT", initTT_thread_entry, RT_NULL, 1024 * 1.5, 24, 10);
|
||||
/* 创建成功则启动线程 */
|
||||
if (thread != RT_NULL)
|
||||
{
|
||||
rt_thread_startup(thread);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_E("thread 'initTT' create failure.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void deInitTT()
|
||||
{
|
||||
tcpClose();
|
||||
rt_hw_stm32_eth_deinit(); //qu激活网口
|
||||
}
|
||||
|
||||
@ -234,6 +260,6 @@ void deiniCnt()
|
||||
#ifdef FUNC_DEMO //测试时导出命令到控制台
|
||||
MSH_CMD_EXPORT(chkAndSendFile, chkAndSendFile);
|
||||
MSH_CMD_EXPORT(upSendFile, upSendFile);
|
||||
MSH_CMD_EXPORT(iniCnt,初始化tcp连接);
|
||||
MSH_CMD_EXPORT(deiniCnt,初始化tcp连接);
|
||||
MSH_CMD_EXPORT(initTT,初始化tcp连接);
|
||||
MSH_CMD_EXPORT(deInitTT,初始化tcp连接);
|
||||
#endif
|
||||
|
@ -786,7 +786,10 @@ void parseTTData(uint8_t *din, size_t len)
|
||||
//按帧头分割
|
||||
int cnt=(i+1<n)?index[i+1]-index[i]:len-index[i];
|
||||
memcpy(ndin,din+index[i],cnt);
|
||||
LOG_HEX("frame",16,ndin,cnt);
|
||||
if (n>1) {
|
||||
LOG_HEX("frame",16,ndin,cnt);
|
||||
}
|
||||
|
||||
|
||||
//判断是否为ACK
|
||||
if ((ndin[10]<<8) | ndin[11] == 0x03) {//数据长度只有3
|
||||
@ -994,11 +997,34 @@ void parseRS232(uint8_t *din, size_t len)
|
||||
}
|
||||
|
||||
|
||||
//#include <rtthread.h>
|
||||
//#include <rthw.h>
|
||||
|
||||
#include <netdev_ipaddr.h>
|
||||
#include <netdev.h>
|
||||
/**
|
||||
* check eth
|
||||
* @return 1-UP,0-DOWN
|
||||
*/
|
||||
int isEthUP()
|
||||
{
|
||||
//static void netdev_list_if(void) in netdev.c
|
||||
|
||||
// struct netdev *netdev = RT_NULL;
|
||||
// netdev = netdev_get_by_name(argv[1]);
|
||||
// if (netdev == RT_NULL)
|
||||
// {
|
||||
// LOG_D("none");
|
||||
// }
|
||||
// else {
|
||||
// LOG_D("--%d",netdev->flags);
|
||||
// }
|
||||
extern struct netdev *netdev_default;
|
||||
int rst = (netdev_default->flags & 0x01U) ? 1:0;
|
||||
// LOG_D("eth is %s.",rst?"up":"down");
|
||||
|
||||
|
||||
|
||||
return rst;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1013,6 +1039,7 @@ MSH_CMD_EXPORT(d_packLocMsg,dpackLocMsg);
|
||||
MSH_CMD_EXPORT(packAndSendLoc,packAndSendLoc);
|
||||
MSH_CMD_EXPORT(d_cacheData,d_cacheData);
|
||||
MSH_CMD_EXPORT(d_getFileSize,d_getFileSize);
|
||||
MSH_CMD_EXPORT(isEthUP,isEthUP);
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -18,6 +18,11 @@
|
||||
//#include <cfg.h>
|
||||
|
||||
|
||||
///* 中断回调函数 */
|
||||
//void pwTT_irq_callback(void *args)
|
||||
//{
|
||||
// LOG_D("key irq callback");
|
||||
//}
|
||||
|
||||
|
||||
|
||||
@ -34,14 +39,22 @@ int main(void)
|
||||
rt_pin_mode(ETH_RESET_PIN, PIN_MODE_OUTPUT);
|
||||
|
||||
rt_pin_mode(TT_EN, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(TT_EN, PIN_HIGH);
|
||||
// rt_pin_attach_irq(TT_EN, PIN_IRQ_MODE_FALLING, pwTT_irq_callback, RT_NULL); // 下降沿触发
|
||||
// rt_pin_irq_enable(TT_EN, PIN_IRQ_ENABLE); // 使能中断
|
||||
|
||||
rt_pin_mode(TR485_RE, PIN_MODE_OUTPUT);
|
||||
rt_pin_write(TR485_RE, PIN_LOW);
|
||||
// rt_pin_write(ETH_RESET_PIN, PIN_LOW);//关闭ETH
|
||||
// rt_pin_write(TT_EN, PIN_HIGH);//关闭TT
|
||||
|
||||
|
||||
//sysSemInit
|
||||
sysSemInit();
|
||||
if (isInWindowZone()) {//开机检查是否在开窗区间内,是则给TT开机
|
||||
|
||||
pwTT_thread_entry("1");
|
||||
// initTT();
|
||||
}
|
||||
|
||||
|
||||
@ -60,16 +73,6 @@ int main(void)
|
||||
rt_pin_write(LED_HEART_DEBUG, PIN_LOW);
|
||||
rt_thread_mdelay(1000);
|
||||
|
||||
|
||||
// rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
|
||||
/* 从消息队列中读取消息*/
|
||||
// rt_err_t result = rt_mq_recv(&update_cfg, &msg, sizeof(msg), RT_WAITING_NO);
|
||||
// if (result == RT_EOK)
|
||||
// {
|
||||
// LOG_I("updatecfg:%10s -->%s", msg.key, msg.value);
|
||||
// }
|
||||
// rt_thread_mdelay(1000);
|
||||
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
@ -77,6 +80,21 @@ int main(void)
|
||||
//fastlz_test -c demo.bin f.bin
|
||||
|
||||
|
||||
//
|
||||
//RT_WEAK void initTT()
|
||||
//{
|
||||
//
|
||||
//}
|
||||
//
|
||||
//RT_WEAK void deInitTT()
|
||||
//{
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INIT_APP_EXPORT(main);
|
||||
extern int rt_hw_stm32_eth_init(void);
|
||||
MSH_CMD_EXPORT(rt_hw_stm32_eth_init, 初始化网络。);
|
||||
@ -87,7 +105,7 @@ void show_version(void)
|
||||
uint8_t t[10];
|
||||
size_t len=time2Byte(t);
|
||||
bytes2str(t, len, 10, "", str);
|
||||
rt_kprintf("SW Version: %s, build-%s\n","1.45",bytes2str(t, len, 10, "", str));
|
||||
rt_kprintf("SW Version: %s, build-%s\n","1.46",bytes2str(t, len, 10, "", str));
|
||||
}
|
||||
|
||||
MSH_CMD_EXPORT(show_version,显示版本号);
|
||||
|
@ -417,14 +417,6 @@ void sDemo()
|
||||
|
||||
MSH_CMD_EXPORT(sDemo,喂文件数据);
|
||||
|
||||
/**
|
||||
* 关闭网口,去初始化,释放内存
|
||||
*/
|
||||
RT_WEAK void rt_hw_stm32_eth_deinit()
|
||||
{
|
||||
|
||||
}
|
||||
MSH_CMD_EXPORT(rt_hw_stm32_eth_deinit, 去初始化网络。);
|
||||
|
||||
|
||||
|
||||
@ -432,16 +424,13 @@ void TTisReady(void)
|
||||
{
|
||||
rt_sem_release(TTReady);
|
||||
}
|
||||
void sysInit()
|
||||
{
|
||||
|
||||
// pwTT_thread_entry("1");//开机
|
||||
TTReady = rt_sem_create("TTisReady", 0, RT_IPC_FLAG_PRIO);
|
||||
cfgUpdate = rt_sem_create("cfgUpdate", 0, RT_IPC_FLAG_PRIO);
|
||||
rt_sem_release(cfgUpdate);//上电更新值
|
||||
// rt_hw_stm32_eth_init();//激活网口
|
||||
LOG_D("sysInit");
|
||||
}
|
||||
MSH_CMD_EXPORT(sysInit,semInit);
|
||||
INIT_APP_EXPORT(sysInit);
|
||||
void sysSemInit()
|
||||
{
|
||||
TTReady = rt_sem_create("TTisReady", 0, RT_IPC_FLAG_PRIO);
|
||||
cfgUpdate = rt_sem_create("cfgUpdate", 0, RT_IPC_FLAG_PRIO);
|
||||
rt_sem_release(cfgUpdate); //上电更新值
|
||||
LOG_D("sysSemInit DONE.");
|
||||
}
|
||||
MSH_CMD_EXPORT(sysSemInit,semInit);
|
||||
//INIT_APP_EXPORT(sysInit);
|
||||
INIT_APP_EXPORT(updatecfg);
|
||||
|
@ -33,11 +33,14 @@ void tcpClose(void)
|
||||
/* 关闭这个连接 */
|
||||
if (sock) {
|
||||
closesocket(sock);
|
||||
|
||||
}
|
||||
flag=0;
|
||||
|
||||
}
|
||||
int isTCPok(void)
|
||||
int isTCPok(void)
|
||||
{
|
||||
// return sock;
|
||||
return flag;
|
||||
}
|
||||
|
||||
@ -155,6 +158,9 @@ void tcpRecMQ_thread_entry(void)
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (!isTCPok()) {
|
||||
break;
|
||||
}
|
||||
rt_memset(&msg, 0, sizeof(msg));
|
||||
/* 从sock连接中接收最大BUFSZ字节数据 */
|
||||
msg.size = recv(sock, msg.data, BUFSZ, 0);
|
||||
@ -184,6 +190,7 @@ void tcpRecMQ_thread_entry(void)
|
||||
msg.size=0;//收到数据长度为0表示tcp断开
|
||||
rt_mq_send(&TTrx_mq, &msg, sizeof(msg));
|
||||
LOG_E("tcp error, close.");
|
||||
tcpClose();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -469,26 +469,36 @@ MSH_CMD_EXPORT(pmsg, 打包文件。);
|
||||
void pwTT_thread_entry(void *parameter)
|
||||
{
|
||||
// LOG_I("--%s--",parameter);
|
||||
int f = rt_pin_read(TT_EN);
|
||||
int flag = f;
|
||||
if (strcmp(parameter,"NULL")==0)//无参数,状态翻转
|
||||
{
|
||||
// LOG_I("null");
|
||||
int f = rt_pin_read(TT_EN);
|
||||
rt_pin_write(TT_EN, !f);
|
||||
// int f = rt_pin_read(TT_EN);
|
||||
// rt_pin_write(TT_EN, !f);
|
||||
flag = !f;
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_bool_t flag = !(rt_bool_t) atoi(parameter);
|
||||
if ((rt_bool_t)rt_pin_read(TT_EN) != flag) {//目标状态与当前状态一致才响应
|
||||
rt_pin_write(TT_EN, flag);//
|
||||
}
|
||||
|
||||
flag = !(rt_bool_t) atoi(parameter);
|
||||
}
|
||||
// if ((rt_bool_t)rt_pin_read(TT_EN) != flag)
|
||||
//目标状态与当前状态一致才响应
|
||||
// LOG_D("new sta");
|
||||
rt_pin_write(TT_EN, flag);//
|
||||
|
||||
if (!flag) {
|
||||
initTT();
|
||||
}
|
||||
else {
|
||||
deInitTT();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (rt_pin_read(TT_EN))//检查设置后状态
|
||||
{
|
||||
//#ifdef NO_RELAY
|
||||
LOG_I("set TT %s", "OFF");//高电平关断
|
||||
//#endif
|
||||
add_val("swCnt");//更新统计值
|
||||
}
|
||||
else
|
||||
@ -537,6 +547,9 @@ void recTT_thread_entry()
|
||||
static TTRx_MSG msg;
|
||||
while (1)
|
||||
{
|
||||
if (!isTCPok()) {
|
||||
break;
|
||||
}
|
||||
|
||||
rt_memset(&msg, 0, sizeof(msg));
|
||||
if (rt_mq_recv(&TTrx_mq, &msg, sizeof(msg), RT_WAITING_FOREVER) == RT_EOK)
|
||||
@ -548,17 +561,9 @@ void recTT_thread_entry()
|
||||
}
|
||||
LOG_I("%d Bytes received from TT",msg.size);
|
||||
LOG_HEX("TTrec", 16, msg.data, msg.size);
|
||||
//此处处理接收到数据
|
||||
// rt_uint8_t rec_good[] = { 0x88, 0xAA, 0xBB, 0x88, 0x41,0x43,0x4B }; //前四字节=帧头、后三字节=ACK
|
||||
// if (rt_memcmp(msg.data, rec_good, 4) == 0 && rt_memcmp(msg.data+msg.size-3, rec_good+4, 3) == 0)
|
||||
// {
|
||||
// LOG_I("ack is good.");
|
||||
// }
|
||||
// else
|
||||
{
|
||||
LOG_D("try to parse data.");
|
||||
parseTTData(msg.data,msg.size);
|
||||
}
|
||||
//此处调用处理函数
|
||||
// LOG_D("try to parse data.");
|
||||
parseTTData(msg.data,msg.size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -693,7 +693,7 @@ void rt_hw_stm32_eth_deinit()
|
||||
rt_free(DMATxDscrTab);
|
||||
}
|
||||
}
|
||||
//MSH_CMD_EXPORT(rt_hw_stm32_eth_deinit, 去初始化网络。);
|
||||
MSH_CMD_EXPORT(rt_hw_stm32_eth_deinit, 去初始化网络。);
|
||||
|
||||
|
||||
//INIT_DEVICE_EXPORT(rt_hw_stm32_eth_init);
|
||||
|
Loading…
Reference in New Issue
Block a user