更新开窗标志,完善相关逻辑

更新FRAME_DATA_LEN_MAX的值
This commit is contained in:
CSSC-WORK\murmur 2023-08-21 17:18:07 +08:00
parent cd37b8f3f9
commit f4170d06e6
10 changed files with 77 additions and 49 deletions

View File

@ -66,6 +66,7 @@ void poTT_callback(rt_alarm_t alarm, time_t timestamp)
{
LOG_D("power UP TT.");
initTT();
setWindowMode();
}
void pdTT_callback(rt_alarm_t alarm, time_t timestamp)
{

View File

@ -282,6 +282,9 @@ void getAndSendFile()
}
}
//发送完毕
// rt_sem_take(sem, timeout)
resetTM();
}
static void chkAndSendFile_thread_entry()
@ -294,6 +297,7 @@ static void chkAndSendFile_thread_entry()
RT_WAITING_FOREVER, RT_NULL) == RT_EOK) //条件1满足
{
LOG_I("等待TT就绪");
LOG_I("当前规则为:连续%d个采集周期TT信号质量不低于%d",scfg.minTTPeriCnt,scfg.minTTsinal);
initTT();
}
@ -348,7 +352,8 @@ void chkAndSendFile()
INIT_APP_EXPORT(chkAndSendFile);
static rt_timer_t tmrToPNTT=RT_NULL;
static int isInWindow=0;//winow 关闭时复位
static uint8_t isWindowMode=0;//自动或手动引起TT开机
/**
* TT
*/
@ -360,8 +365,15 @@ void stopTM()
rt_timer_stop(tmrToPNTT);
rt_timer_stop(tmrToPNTT);
}
void setWindowMode(void)
{
isWindowMode = 1;
stopTM();
}
/**
* TT
* TT无接收数据则启动关机倒计时
*/
void resetTM()
{
@ -369,7 +381,7 @@ void resetTM()
if (tmrToPNTT == RT_NULL) {
return;
}
if (isInWindow) {
if (isWindowMode) {
stopTM();
return;
}
@ -380,13 +392,16 @@ void resetTM()
rt_timer_start(tmrToPNTT);
LOG_D("%d minutes from now to power down TT.",scfg.timeout);
}
void d_getRemain()
void d_remain()
{
LOG_D("=%d=",rt_tick_from_millisecond(10*60*1000));
if (tmrToPNTT == RT_NULL) {
LOG_I("tmrToPNTT is NULL");
return;
}
rt_tick_t arg1,arg2;
arg1=rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_GET_TIME, (void*)&arg1);
arg2=rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_GET_REMAIN_TIME, (void*)&arg2);
LOG_D("tm=%d-%d",arg1,arg2);
rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_GET_TIME, (void*)&arg1);
rt_timer_control(tmrToPNTT, RT_TIMER_CTRL_GET_REMAIN_TIME, (void*)&arg2);
LOG_D("%d / %d min",arg2/60000,arg1/60000);
}
/* 定时器超时函数 */
@ -404,7 +419,7 @@ static void timeoutFunc(void *parameter)
void initTT_thread_entry()
{
pwTT_thread_entry("1");
rt_thread_mdelay(15000);//wait TT to boot up
// rt_thread_mdelay(15000);//wait TT to boot up
while (1)
{
if (!isTTon()) {
@ -420,15 +435,20 @@ void initTT_thread_entry()
if (!isEthUP())
{ //只初始化一次
LOG_D("init eth...");
rt_pin_write(ETH_RESET_PIN, PIN_HIGH);
if (rt_hw_stm32_eth_init() == RT_EOK)
{
LOG_D("eth inited DONE.");
// lwip_sys_init();
}; //激活网口
}
else if (!isTCPok()) //判断TCP连接是否正常异常自动重连
{
// LOG_W("TT server is not ready,--%d",isTCPok());
tcpInit();
// tcpInit();
if (tcpInit() != RT_EOK) {
cmd_free();
}
// rt_thread_mdelay(1000);
if (isTCPok())
{
@ -459,6 +479,7 @@ void deInitTT_thread_entry()
rt_hw_stm32_eth_deinit(); //qu激活网口
// rt_thread_mdelay(3000);
pwTT_thread_entry("0");
stopTM();
// if (0&& tmrToPNTT)
// {
// rt_timer_delete(tmrToPNTT); //关闭倒计时
@ -527,7 +548,8 @@ MSH_CMD_EXPORT(fileIsReady,fileIsReady);
MSH_CMD_EXPORT(chkAndSendFile, chkAndSendFile);
//MSH_CMD_EXPORT(upSendFile, upSendFile);
MSH_CMD_EXPORT(initTT,TT);
MSH_CMD_EXPORT(deInitTT,TT);
MSH_CMD_EXPORT(d_getRemain,d_getRemain);
MSH_CMD_EXPORT(deInitTT,TT);
MSH_CMD_EXPORT(d_remain,);
MSH_CMD_EXPORT(resetTM,resetTM);
MSH_CMD_EXPORT(d_upSendFile,d_upSendFile);
#endif

View File

@ -21,7 +21,7 @@
#define KEY_LEN 32//密钥长度
#endif
size_t aes_128_cbc_pkcs7(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
size_t aes_256_cbc_pkcs7(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
{
// AES-256
// 工作模式 CBC ,填充模式 PKCS7不同语言要保持一致。
@ -61,7 +61,7 @@ size_t aes_128_cbc_pkcs7(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
}
size_t aes_128_cbc_pkcs7_de(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
size_t aes_256_cbc_pkcs7_de(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
{
// AES-256
// 工作模式 CBC ,填充模式 PKCS7不同语言要保持一致。
@ -115,8 +115,7 @@ size_t aes_128_cbc_pkcs7_de(rt_uint8_t *data, size_t len, rt_uint8_t *dout)
*/
size_t decryp_data(const uint8_t *din, size_t len, uint8_t *dout)
{
size_t nlen = aes_128_cbc_pkcs7_de(din, len, dout);
return nlen;
return aes_256_cbc_pkcs7_de(din, len, dout);
}
/**
@ -128,8 +127,7 @@ size_t decryp_data(const uint8_t *din, size_t len, uint8_t *dout)
*/
size_t cryp_data(const uint8_t *din, int len, uint8_t *dout)
{
size_t nlen = aes_128_cbc_pkcs7(din, len, dout);
return nlen;
return aes_256_cbc_pkcs7(din, len, dout);
}
void aes_string_test(int argc, char **argv)
{
@ -188,7 +186,7 @@ void aes_file(const char *fin, const char *fout)
read(fd_in, buffer, file_size);
size_t len = aes_128_cbc_pkcs7(buffer, file_size, outbuffer);
size_t len = aes_256_cbc_pkcs7(buffer, file_size, outbuffer);
write(fd_out, outbuffer, len);
LOG_I("AESed to %s done. File size from %d bytes to %d.\n", fout,file_size, len);

View File

@ -346,7 +346,9 @@ void openWindow(int t)
{
//开启TT
pwTT_thread_entry("1");//开机
// pwTT_thread_entry("1");//开机
initTT();
setWindowMode();
if (!t) {
LOG_D("手动开窗完成,需手动关窗。");
return;
@ -355,8 +357,8 @@ void openWindow(int t)
//设置定时器,定时器到则关窗
/* 创建定时器,单次定时器 */
rt_timer_t timer1;
timer1 = rt_timer_create("window", pwTT_thread_entry,
0, rt_tick_from_millisecond(t*60*1000),
timer1 = rt_timer_create("window", deInitTT(),
RT_NULL, rt_tick_from_millisecond(t*60*1000),
RT_TIMER_FLAG_ONE_SHOT);
/* 启动定时器 */
if (timer1 != RT_NULL)
@ -372,6 +374,7 @@ void openWindow(int t)
void closeWindow()
{
// pwTT_thread_entry("0");//关 机
deInitTT();
LOG_D("手动关窗完成。");
}
@ -1253,21 +1256,11 @@ void parseRS232(uint8_t *din, size_t len)
*/
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);
// }
//netdev.c
extern struct netdev *netdev_default;
int rst = (netdev_default->flags & 0x01U) ? 1:0;
int rst = (netdev_default->flags & 0x01U) ? 1:0; //0x01 = NETDEV_FLAG_UP
// LOG_D("eth is %s.",rst?"up":"down");
// rst &= (netdev_default->flags & 0x04U) ? 1:0;//0x04 NETDEV_FLAG_LINK_UP
return rst;
}

View File

@ -179,12 +179,12 @@ static void rulecheck(void)
{
//默认为 TT连续5个周期为激活状态且信号强度不低于5。
//满足加1不满足清零
static rt_uint16_t okCnt=0;
static size_t okCnt=0;
if (!okCnt) {
LOG_D("当前规则为:连续%d个采集周期TT信号质量不低于%d",scfg.minTTPeriCnt,scfg.minTTsinal);
// LOG_D("当前规则为:连续%d个采集周期TT信号质量不低于%d",scfg.minTTPeriCnt,scfg.minTTsinal);
}
int xh=atoi(TTinfo->xh);
if (xh == 99) {
if (xh > 90) {
xh=0;
}
if (atoi(TTinfo->jh) && !(xh < scfg.minTTsinal) ) {//
@ -193,13 +193,13 @@ static void rulecheck(void)
}
else {
okCnt = 0;
// LOG_W("不符合。");
LOG_W("不符合。");
return;
}
if (okCnt >= scfg.minTTPeriCnt) {
//TT具备发送条件
TTIsReady();
// LOG_I("符合规则TT具备发送状态。");
LOG_I("符合规则TT具备发送状态。");
okCnt = scfg.minTTPeriCnt -1;
}
// if (okCnt > minTTPeriCnt) {
@ -222,7 +222,7 @@ static void tt_parse(rt_uint8_t *data)
root = cJSON_Parse((const char *) data);
if (!root)
{
rt_kprintf("No memory for cJSON root!\n");
LOG_W("JSON string is not ok, or No memory for cJSON root!");
return;
}
object = cJSON_GetObjectItem(root, "data");
@ -314,8 +314,7 @@ static int webclient_get_data(const char *url)
LOG_D("webclient GET request response data :");
LOG_D("%s", buffer);
if (buffer)
if (buffer && length && buffer[length-1] == 0x7d) //0x7d='}'
{
tt_parse(buffer);
web_free(buffer);
@ -414,8 +413,8 @@ uint8_t getXh(void)
void repGetTT_thread_entry(void* parameter)
{
while(!isTCPok())//第一次运行时未上电则等待
{}
// while(!isTCPok())//第一次运行时未上电则等待
// {}
while(isTCPok())//中间未上电则退出
{
for (size_t var = 0; var < (sizeof(infoH) / sizeof(infoH[0])); var++) //轮询每个参数
@ -430,6 +429,7 @@ void repGetTT_thread_entry(void* parameter)
}
if (webclient_get_data(url) != RT_EOK)
{
LOG_E("---------");
web_free(url);
strcpy(TTinfo->sim,"-");
strcpy(TTinfo->xh,"-");
@ -460,6 +460,8 @@ void repGetTT_thread_entry(void* parameter)
*/
void repGetTT(void)
{
while(!isTCPok())//第一次运行时未上电则等待
{}
memset(rstInfo,0x3f,RST_LEN);//初始化
/* 创建 serial 线程 */
rt_thread_t thread = rt_thread_create("repGetTT", repGetTT_thread_entry, RT_NULL, 1024 * 3, 27, 10);

View File

@ -37,6 +37,7 @@ int main(void)
rt_pin_mode(LED_HEART, PIN_MODE_OUTPUT);
rt_pin_mode(LED_HEART_DEBUG, PIN_MODE_OUTPUT);
rt_pin_mode(ETH_RESET_PIN, PIN_MODE_OUTPUT);
rt_pin_write(ETH_RESET_PIN, PIN_LOW);
rt_pin_mode(TT_EN, PIN_MODE_OUTPUT);
rt_pin_write(TT_EN, PIN_LOW);
@ -50,6 +51,7 @@ int main(void)
// sysEventInit();
if (isInWindowZone()) {//开机检查是否在开窗区间内是则给TT开机
initTT();
setWindowMode();
// pwTT_thread_entry("1");
}

View File

@ -178,7 +178,7 @@ void tcpRecMQ_thread_entry(void)
{
// LOG_D("%d Bytes received.",msg.size);
// LOG_HEX("tcpTT", 16, msg.data, msg.size);
resetTM();
// resetTM();
int result = rt_mq_send(&TTrx_mq, &msg, sizeof(msg));
if (result == -RT_EFULL)
{

View File

@ -327,12 +327,13 @@ rt_uint8_t pack_File(const char *fin, rt_uint8_t flag, const rt_uint8_t (*dout)[
//crypt before pack
uint8_t tmp[200];
uint8_t len = cryptSingleMsg(buffer, block_size, tmp);
// LOG_HEX("crypt msg",16,tmp,len);
uint8_t col = packMsg(&cfg, tmp, len, dout[index]);
// uint8_t col = packMsg(&cfg, buffer, block_size, dout[index]);
arrLen[index] = col;
// LOG_D("index/row bef-aft");
// LOG_D("%5d/%3d %3d-%3d",index+1,row,block_size,col);
// LOG_D("%5d/%3d %3d-%3d",index+1,row,len,col);
// LOG_HEX("per msg",27,dout[index],col);
}

View File

@ -19,7 +19,7 @@
//#include "posix/string.h"
#include <dfs_file.h>
#define FRAME_DATA_LEN_MAX (180-16)
#define FRAME_DATA_LEN_MAX (180-10-20)
#define STR_LEN_MAX 30
/*

View File

@ -635,9 +635,11 @@ int rt_hw_stm32_eth_init(void)
if (tid != RT_NULL)
{
rt_thread_startup(tid);
// LOG_I("√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√");
}
else
{
// LOG_E("----------------------------------");
state = -RT_ERROR;
}
__exit:
@ -675,9 +677,10 @@ void rt_hw_stm32_eth_deinit()
// HAL_ETH_DeInit(&EthHandle);
rt_timer_delete(stm32_eth_device.poll_link_timer);
eth_device_deinit(&(stm32_eth_device.parent));
rt_pin_write(ETH_RESET_PIN, PIN_LOW);
if (Rx_Buff)
{
rt_free(Rx_Buff);
}
@ -695,9 +698,15 @@ void rt_hw_stm32_eth_deinit()
{
rt_free(DMATxDscrTab);
}
HAL_ETH_DeInit(&EthHandle);
__HAL_RCC_ETH_CLK_DISABLE() ;
}
MSH_CMD_EXPORT(rt_hw_stm32_eth_deinit, );
void setLinkUp()
{
/* send link up. */
eth_device_linkchange(&stm32_eth_device.parent, RT_TRUE);
}
//INIT_DEVICE_EXPORT(rt_hw_stm32_eth_init);
//MSH_CMD_EXPORT(rt_hw_stm32_eth_init, 初始化网络。);