开始更改定时器版本架构
This commit is contained in:
parent
c2b6056b66
commit
71c5dbc702
|
|
@ -139,6 +139,11 @@ typedef struct{
|
|||
extern sys_sta_t sys_sta;
|
||||
extern BAT_Message_t BAT_Message;
|
||||
|
||||
|
||||
extern uint16_t g_car_ctrl_timer; // 定时时间(单位由平台定义)
|
||||
extern uint16_t g_car_ctrl_timer; // 剩余时间(单位由平台定义)
|
||||
extern uint16_t g_car_ctrl_interval; // 本地播报间隔(单位由平台定义)
|
||||
|
||||
void control_out_init(void);
|
||||
|
||||
#endif //__CONTROL_OUT_H__
|
||||
|
|
@ -268,8 +268,13 @@ static int jt808_BodyParse(void *Prsmsg_body, PrsResult_t *Result){
|
|||
break;
|
||||
}
|
||||
case ID_Car_Ctrl:{// 车辆控制
|
||||
if(Result->msg_head.msgbody_attr.msgbodylen == 1){ // 车辆控制
|
||||
jt808_Set_CarStatus(((uint8_t *)Prsmsg_body)[0]); // 设置车辆状态
|
||||
if(Result->msg_head.msgbody_attr.msgbodylen >= 5){ // 车辆控制
|
||||
jt808_Set_CarStatus((uint8_t *)Prsmsg_body); // 设置车辆状态
|
||||
Result->Rsp_result = Msg_ok;
|
||||
}else if(Result->msg_head.msgbody_attr.msgbodylen == 1) {
|
||||
JT808_DEBUG("WARN: Received 1-byte car control, consider upgrading platform\n");
|
||||
uint8_t temp[5] = {((uint8_t *)Prsmsg_body)[0], 0, 0, 0, 0};
|
||||
jt808_Set_CarStatus(temp);
|
||||
Result->Rsp_result = Msg_ok;
|
||||
}else{
|
||||
Result->Rsp_result = Msg_invalid;
|
||||
|
|
|
|||
|
|
@ -262,25 +262,32 @@ void update_manager_check_timeout(void) {
|
|||
osMutexRelease(update_mutex);
|
||||
}
|
||||
|
||||
// 控制车辆状态
|
||||
void jt808_Set_CarStatus(uint8_t status){
|
||||
// (void)status;
|
||||
// TODO: 车辆控制状态
|
||||
if(status & 0x80){ // 恢复厂设置
|
||||
// 控制车辆状态,参数为5字节数据:byte0控制位,byte1-2定时时间(大端),byte3-4播报间隔(大端)
|
||||
void jt808_Set_CarStatus(const uint8_t status[5]) {
|
||||
uint8_t ctrl = status[0];
|
||||
uint16_t timer = (status[1] << 8) | status[2];
|
||||
uint16_t interval = (status[3] << 8) | status[4];
|
||||
|
||||
// 保存定时时间和播报间隔到系统状态(需确保sys_sta中有对应成员)
|
||||
sys_sta.timer_value = timer;
|
||||
sys_sta.broadcast_interval = interval;
|
||||
|
||||
// 原有控制逻辑(基于ctrl字节)
|
||||
if(ctrl & 0x80) { // 恢复出厂设置
|
||||
jt808_delete_TermParam(); // 删除终端参数文件
|
||||
jt808_delete_Fence_area(); // 删除围栏区域文件
|
||||
local_tts_text_play("即将重启系统",0,0); // 语音播报
|
||||
osDelay(7000/5);
|
||||
cm_pm_reboot(); // 重启系统
|
||||
local_tts_text_play("即将重启系统", 0, 0);
|
||||
osDelay(7000 / 5);
|
||||
cm_pm_reboot();
|
||||
}
|
||||
if(status & 0x70){ // 重启系统
|
||||
local_tts_text_play("即将重启系统",0,0); // 语音播报
|
||||
osDelay(7000/5);
|
||||
cm_pm_reboot(); // 重启系统
|
||||
if(ctrl & 0x70) { // 重启系统(任意位)
|
||||
local_tts_text_play("即将重启系统", 0, 0);
|
||||
osDelay(7000 / 5);
|
||||
cm_pm_reboot();
|
||||
}
|
||||
sys_sta.O_door_lock = (status & 0x01)? 1 : 0; // 设置电门锁状态
|
||||
sys_sta.PLT_MODE = (status & 0x02)? 1 : 0; // 平台设置的模式 //1:游客模式,0:管理模式
|
||||
// sys_sta.P_Radar_EN = (status & 0x04)? 1 : 0; // 1:雷达使能,0:雷达禁止
|
||||
sys_sta.O_door_lock = (ctrl & 0x01) ? 1 : 0; // 电门锁
|
||||
sys_sta.PLT_MODE = (ctrl & 0x02) ? 1 : 0; // 平台模式
|
||||
// sys_sta.P_Radar_EN = (ctrl & 0x04) ? 1 : 0; // 雷达使能(注释未用)
|
||||
}
|
||||
|
||||
// 获取车辆状态
|
||||
|
|
|
|||
Loading…
Reference in New Issue