This commit is contained in:
stark1898y 2025-01-24 17:32:54 +08:00
parent 383301cede
commit 10623a5dd8
3 changed files with 26 additions and 14 deletions

View File

@ -773,7 +773,7 @@
"address": "0x08000000",
"target_path": "obj\\JT-DT-YD4N02A_RTT_MRS-4G.hex",
"clkSpeed": "High",
"debug_interface_mode": "1-wire serial",
"debug_interface_mode": "",
"erase": true,
"program": true,
"verify": true,

View File

@ -65,11 +65,12 @@ rt_sem_t nt26k_recv_msg_sem; // 用于接收信号
rt_sem_t nt26k_disconnect_sem;
static rt_timer_t nt26k_timer; // 上报心跳
static rt_timer_t nt26k_upload_timer; // 更新本地时间定时器
static rt_timer_t nt26k_power_error_timer; // 上电失败情况下启动定时器
static rt_timer_t nt26k_error_timer; // 上电失败情况下启动定时器
rt_uint8_t device_power_down_flag;
rt_uint8_t nt26k_power_down_flag;
rt_uint8_t nt26k_connect_sever_flag;
rt_uint8_t nt26k_send_error_flag;
rt_uint8_t nt26k_conncet_tcp_flag;
rt_uint8_t nt26k_disconnect_pdp_flag; // PDP断开连接标志
rt_uint8_t nt26k_disconnect_retry_flag = 0; // 用于判断是否已经启动了重连,如果启动,不需要每次都进入
@ -198,14 +199,20 @@ static void Nt26k_Ht_Timer_Cb(void *parameter)
// 定时器回调函数,当1分钟内没有数据交互时关闭tcp连接
static void Nt26k_Error_Timer_Cb(void *parameter)
{
if((nt26k_send_error_flag == 1) && power_on_send_flag == 1)
{
nt26k_send_error_flag = 0;
Nt26k_Send_Event(nt26k_event_index.current_event);
}
if (power_on_send_flag) // 上电成功时,停止定时器
{
rt_timer_stop(nt26k_power_error_timer);
rt_timer_stop(nt26k_error_timer);
}
else
{
Nt26k_Send_Event(kNt26kPowerOnEvent);
}
}
int _Pack_Send(struct Nt26k_Ops *ops, char *buf)
@ -827,6 +834,11 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
{
// 收不到说明在平台未注册,此时nt26k_connect_sever_flag 为0但nt26k_conncet_tcp_flag = 1此时不发起重连等待事件触发就行
nt26k_connect_sever_flag = 0;
if(rt_strcmp(event->event_name, "上电心跳事件") != RT_EOK)//不是上电事件下的失败
{
nt26k_send_error_flag = 1;
rt_timer_start(nt26k_error_timer);
}
ret = RT_ERROR;
}
}
@ -1293,7 +1305,7 @@ static void Nt26k_Send_Thread_Entry(void *param)
if (result)
{
power_on_send_flag = 0;
rt_timer_start(nt26k_power_error_timer); // 启动重连定时器, 3min一次直到发送成功
rt_timer_start(nt26k_error_timer); // 启动重连定时器, 3min一次直到发送成功
LOG_E("nt26k send data failed result = [%d]\n", result);
}
else
@ -1560,7 +1572,7 @@ int BSP_Nt26k_Thread_Init(void)
rt_err_t ret;
Nt26k_Event_Init();
rt_uint32_t iot_upload_time = (uint16_t)Flash_Get_SysCfg(kIotUploadCycleId);
rt_uint32_t iot_upload_time = (uint32_t)Flash_Get_SysCfg(kIotUploadCycleId);
rt_uint32_t timeout = 0;
if (iot_upload_time > 24 * 60 * 60 * RT_TICK_PER_SECOND)
@ -1606,7 +1618,7 @@ int BSP_Nt26k_Thread_Init(void)
rt_kprintf("创建定时器失败\n");
return -1;
}
nt26k_power_error_timer = rt_timer_create("nt26k_error_timer",
nt26k_error_timer = rt_timer_create("nt26k_error_timer",
Nt26k_Error_Timer_Cb,
RT_NULL,
3 * 60 * RT_TICK_PER_SECOND, // 3分钟

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com
* @Date : 2024-07-19 13:49:43
* @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-01-23 16:55:55
* @LastEditTime : 2025-01-24 17:32:48
* @FilePath : \JT-DT-YD4N02A_4G_RTT_MRS\rt-thread\rtconfig.h
* @Description :
*
@ -15,8 +15,8 @@
/*使用动态日志及密码功能时,需开启宏 FINSH_USING_AUTH ULOG_USING_FILTER ENABLE_LOG_ALL ULOG_OUTPUT_LVL = 7 以及设置ulog.c 1522行 输出等级为0*/
/**/
#define FINSH_USING_AUTH //开启终端密码登录功能
#define ULOG_USING_FILTER //开启动态修改日志等级 默认修改在ulog.c 1522行
// #define FINSH_USING_AUTH //开启终端密码登录功能
// #define ULOG_USING_FILTER //开启动态修改日志等级 默认修改在ulog.c 1522行
#define ENABLE_LOG_ALL
#define TEST_ENABLE //打开所有的终端测试程序
@ -24,8 +24,8 @@
#define IOT_MODULE_SWITCH 1 //开启物联网功能
// #ifdef FINSH_USING_AUTH
// #define AT_USING_CLI
// #define AT_PRINT_RAW_CMD
#define AT_USING_CLI
#define AT_PRINT_RAW_CMD
// #endif
/* RT-Thread Kernel */