功能完善,正式版本1.0 无ota功能,终端参数读取问题待修复

This commit is contained in:
wjw 2025-07-21 16:17:35 +08:00
parent e439651823
commit c78c0da3b7
11 changed files with 156 additions and 108 deletions

View File

@ -747,7 +747,7 @@ static void attr_broadcast_task(void* arg) {
// 查找最近景点 // 查找最近景点
AttractionNode* nearest = find_nearest_attraction(current_pos); AttractionNode* nearest = find_nearest_attraction(current_pos);
DEBUG("location ok\r\n"); //DEBUG("location ok\r\n");
if (nearest != NULL) { if (nearest != NULL) {
// 计算距离 // 计算距离
double distance = location_service_calculate_distance( double distance = location_service_calculate_distance(
@ -824,7 +824,7 @@ void attr_broadcast_init(void) {
// 初始化状态 // 初始化状态
memset(&broadcast_state, 0, sizeof(broadcast_state)); memset(&broadcast_state, 0, sizeof(broadcast_state));
broadcast_state.distance_threshold = 50.0; // 默认阈值50米 broadcast_state.distance_threshold = 20.0; // 默认阈值50米
osThreadAttr_t attr_broadcast_task_attr = {0}; osThreadAttr_t attr_broadcast_task_attr = {0};
attr_broadcast_task_attr.name = "attr_broadcast_task"; attr_broadcast_task_attr.name = "attr_broadcast_task";

View File

@ -130,7 +130,7 @@ typedef struct{
uint8_t IO_TX_brake :1; // 1:正常 0:刹车 uint8_t IO_TX_brake :1; // 1:正常 0:刹车
uint8_t A_brake :1; // 1:自动刹车,0:手动刹车 uint8_t A_brake :1; // 1:自动刹车,0:手动刹车
uint8_t A_Speed_Cut :1; // 1:自动减速,0:手动减速 uint8_t A_Speed_Cut :1; // 1:自动减速,0:手动减速
uint8_t P_Radar_EN :1; // 2:雷达暂时关闭,1:雷达使能,0:雷达禁止 uint8_t P_Radar_EN :2; // 2:雷达暂时关闭,1:雷达使能,0:雷达禁止
}; };
uint8_t IO_STA; uint8_t IO_STA;
}; };

View File

@ -273,6 +273,8 @@ void control_out_task(void *argument){
DEBUG("\n\nMAG_MODE\r\n\n"); DEBUG("\n\nMAG_MODE\r\n\n");
// local_tts_set(5, 7, CM_LOCAL_TTS_DIGIT_AUTO); // local_tts_set(5, 7, CM_LOCAL_TTS_DIGIT_AUTO);
local_tts_text_play("管理员模式",0,1); local_tts_text_play("管理员模式",0,1);
DEBUG("MAGmMODE=%d, PLTMODE=%d\r\n\n",sys_sta.MAG_MODE,sys_sta.PLT_MODE);
}else{ // 退出管理员模式 }else{ // 退出管理员模式
DEBUG("\n\nPLT_MODE\r\n\n"); DEBUG("\n\nPLT_MODE\r\n\n");
// local_tts_set(10, 7, CM_LOCAL_TTS_DIGIT_AUTO); // local_tts_set(10, 7, CM_LOCAL_TTS_DIGIT_AUTO);

View File

@ -155,7 +155,7 @@ void my_appimg_enter(char *param){
} }
local_tts_init(); local_tts_init();
local_tts_mute(0);// 取消静音 local_tts_mute(0);// 取消静音
local_tts_volume(50); // 设置音量为55 local_tts_volume(100); // 设置音量为55
// local_tts_set(7, 7, CM_LOCAL_TTS_DIGIT_AUTO); // local_tts_set(7, 7, CM_LOCAL_TTS_DIGIT_AUTO);
local_tts_text_play("已开机",0,0); local_tts_text_play("已开机",0,0);

View File

@ -34,6 +34,14 @@ int jt808_save_Fence_area(void);
// 加载围栏区域 // 加载围栏区域
int jt808_load_Fence_area(void); int jt808_load_Fence_area(void);
/**
* @brief
* @retval 1: ()
* 0:
*/
int jt808_is_fence_empty(void);
// 遍历围栏区域,判断指定坐标是否在围栏内 // 遍历围栏区域,判断指定坐标是否在围栏内
// 返回区域ID // 0 未在围栏内 // Area_att == 0x0001 景区围栏Area_att == 0x0002 禁停区围栏 // 返回区域ID // 0 未在围栏内 // Area_att == 0x0001 景区围栏Area_att == 0x0002 禁停区围栏
uint32_t jt808_Polygon_fence_check(uint16_t Area_att, uint32_t lat, uint32_t lng); uint32_t jt808_Polygon_fence_check(uint16_t Area_att, uint32_t lat, uint32_t lng);

View File

@ -101,6 +101,7 @@ typedef struct {// 终端参数项
fence_Polygon_area_t *fence_polygon_area; // 围栏多边形区域 fence_Polygon_area_t *fence_polygon_area; // 围栏多边形区域
Data_SeriaNet_t big_data_up_SeriaNet; // 数据上行透传 Data_SeriaNet_t big_data_up_SeriaNet; // 数据上行透传
}Term_Param_item_t; }Term_Param_item_t;
#pragma pack() #pragma pack()
extern Term_Param_item_t jt808_term_param_item; extern Term_Param_item_t jt808_term_param_item;
@ -141,4 +142,7 @@ void jt808_Autoreport_param_stop(void);
// 初始化终端参数 // 初始化终端参数
void jt808_set_term_param_init(void); void jt808_set_term_param_init(void);
#endif // JT808_SET_TERM_PARAM_H_ #endif // JT808_SET_TERM_PARAM_H_

View File

@ -379,3 +379,26 @@ ERR_Loal:
JT808_DEBUG("load fence area failed\r\n"); JT808_DEBUG("load fence area failed\r\n");
return -3; return -3;
} }
/**
* @brief
* @retval 1: ()
* 0:
*/
int jt808_is_fence_empty(void)
{
int isEmpty = 1; // 默认假设为空
osMutexAcquire(Polygon_fence_mutex, osWaitForever);
// 检查链表头指针是否为NULL
if(jt808_term_param_item.fence_polygon_area != NULL) {
isEmpty = 0; // 链表非空
}
osMutexRelease(Polygon_fence_mutex);
return isEmpty;
}

View File

@ -245,16 +245,34 @@ static int jt808_BodyParse(void *Prsmsg_body, PrsResult_t *Result){
case ID_Delete_Polygon_area:{// 删除多边形区域 case ID_Delete_Polygon_area:{// 删除多边形区域
int ret = 0; int ret = 0;
uint8_t Area_ID_Num = ((uint8_t *)Prsmsg_body)[0]; // 区域ID个数 uint8_t Area_ID_Num = ((uint8_t *)Prsmsg_body)[0]; // 区域ID个数
Prsmsg_body = (void *)((uint8_t *)Prsmsg_body + 1); // 跳过1字节 //Prsmsg_body = (void *)((uint8_t *)Prsmsg_body + 1); // 跳过1字节
uint8_t *p_id = (uint8_t *)Prsmsg_body + 1; // 指向第一个ID
Result->Rsp_result = Msg_ok; Result->Rsp_result = Msg_ok;
JT808_DEBUG("Area_ID_Num=%d\r\n",Area_ID_Num);
// 区域数为0删除所有区域
if (Area_ID_Num == 0) {
if (jt808_remove_fence_Polygon_area(0) != 0) {
Result->Rsp_result = Msg_err;
}
}
else {
for(int i = 0; i < Area_ID_Num; i++){ for(int i = 0; i < Area_ID_Num; i++){
ret = jt808_remove_fence_Polygon_area(((uint8_t *)Prsmsg_body)[i]<<24 | ((uint8_t *)Prsmsg_body)[i+1]<<16 | ((uint8_t *)Prsmsg_body)[i+2]<<8 | ((uint8_t *)Prsmsg_body)[i+3]);
uint32_t area_id = (p_id[0] << 24) | (p_id[1] << 16) | (p_id[2] << 8) | p_id[3];
ret = jt808_remove_fence_Polygon_area(area_id);
if(ret != 0){ if(ret != 0){
Result->Rsp_result = Msg_err; Result->Rsp_result = Msg_err;
break; break;
} }
p_id += 4;
} }
}
Result->Rsp_flow_num = Result->msg_head.msg_flow_num; Result->Rsp_flow_num = Result->msg_head.msg_flow_num;
Result->Rsp_msg_id = Result->msg_head.msg_id; Result->Rsp_msg_id = Result->msg_head.msg_id;
jt808_pkg_send(ID_Term_GenResp, 0);// 发送终端通用应答 jt808_pkg_send(ID_Term_GenResp, 0);// 发送终端通用应答

View File

@ -17,77 +17,36 @@
#define LOCAL_FENCE_COUNT (sizeof(local_fences) / sizeof(LocalFenceConfig_t)) #define LOCAL_FENCE_COUNT (sizeof(local_fences) / sizeof(LocalFenceConfig_t))
#define __DMB() __asm__ volatile("dmb sy" ::: "memory") // GCC
Term_Param_item_t jt808_term_param_item; // 终端参数项 Term_Param_item_t jt808_term_param_item; // 终端参数项
osMutexId_t term_param_mutex = NULL; // 终端参数项互斥锁 osMutexId_t term_param_mutex = NULL; // 终端参数项互斥锁
osMutexId_t Polygon_fence_mutex = NULL; // 多边形围栏互斥锁 osMutexId_t Polygon_fence_mutex = NULL; // 多边形围栏互斥锁
static const LocalFenceConfig_t local_fences[] = { // 安全获取RadarEN值
{ // 第一个围栏 (8边形禁停区) uint8_t jt808_get_radar_en(void) {
.area_id = 1, // 内存屏障确保读取最新值
.area_att = 0x0001, // 禁停区围栏 __DMB();
.points_num = 8, uint8_t value = jt808_term_param_item.set_term_param.RadarEN;
.points = (AreaPoint_t[]){ // 使用复合字面量 __DMB();
{.lat = 31338039, .lng = 121342339}, // 31.338039, 121.342339 return value;
{.lat = 31345049, .lng = 121357544}, // 31.345049, 121.357544
{.lat = 31342006, .lng = 121359044}, // 31.342006, 121.359044
{.lat = 31351253, .lng = 121378608}, // 31.351253, 121.378608
{.lat = 31347419, .lng = 121389395}, // 31.347419, 121.389395
{.lat = 31339808, .lng = 121373808}, // 31.339808, 121.373808
{.lat = 31333732, .lng = 121354182}, // 31.333732, 121.354182
{.lat = 31333178, .lng = 121345380} // 31.333178, 121.345380
}
},
{ // 第二个围栏 (4边形景区)
.area_id = 2,
.area_att = 0x0002, // 景区围栏
.points_num = 4,
.points = (AreaPoint_t[]){
{.lat = 31344904, .lng = 121366191}, // 31.344904, 121.366191
{.lat = 31345361, .lng = 121367180}, // 31.345361, 121.367180
{.lat = 31344801, .lng = 121367561}, // 31.344801, 121.367561
{.lat = 31344336, .lng = 121366509} // 31.344336, 121.366509
}
},
{ // 第三个围栏 (4边形禁停区)
.area_id = 3,
.area_att = 0x0002, // 禁停区围栏
.points_num = 4,
.points = (AreaPoint_t[]){
{.lat = 31339885, .lng = 121358303}, // 31.339885, 121.358303
{.lat = 31340580, .lng = 121359765}, // 31.340580, 121.359765
{.lat = 31340179, .lng = 121359985}, // 31.340179, 121.359985
{.lat = 31339484, .lng = 121358856} // 31.339484, 121.358856
}
}
};
void load_local_fence_data(void) {
JT808_DEBUG("Loading local fence data...\n");
// 清除所有现有围栏
jt808_remove_fence_Polygon_area(0);
// 加载预置围栏
for (int i = 0; i < LOCAL_FENCE_COUNT; i++) {
const LocalFenceConfig_t *config = &local_fences[i];
// 跳过无效配置
if (config->points_num < 3) continue;
jt808_add_tail_fence_Polygon_area(
config->area_id,
config->area_att,
config->points_num,
config->points
);
} }
// 安全设置RadarEN值
void jt808_set_radar_en(uint8_t value) {
// 验证值范围
if (value > 2) {
JT808_DEBUG("Invalid RadarEN value: %d", value);
return;
} }
// 内存屏障
__DMB();
jt808_term_param_item.set_term_param.RadarEN = value;
__DMB();
JT808_DEBUG("Set RadarEN to %d", value);
}
// 控制车辆状态 // 控制车辆状态
void jt808_Set_CarStatus(uint8_t status){ void jt808_Set_CarStatus(uint8_t status){
@ -320,21 +279,31 @@ int jt808_setTermParam(set_TermParamID_t param_id, void *param, uint8_t param_le
break; break;
} }
case ID_RadarEN:{// TODO: 雷达使能位 case ID_RadarEN:{// TODO: 雷达使能位
uint8_t radar_en = param_val32 & 0xFF; // JT808_DEBUG("RadarEN=%d", radar_en);
JT808_DEBUG("RadarEN=%d", radar_en);
// 更新运行时状态包括值2 jt808_term_param_item.set_term_param.RadarEN = param_val32 & 0xFF;
osMutexAcquire(radar_mutex, osWaitForever);
sys_sta.P_Radar_EN = radar_en;
osMutexRelease(radar_mutex);
// 只保存0或1到持久化参数 if(2 == jt808_term_param_item.set_term_param.RadarEN)
if(radar_en != 2) { {
jt808_term_param_item.set_term_param.RadarEN = radar_en;
} else { JT808_DEBUG("radar ok\r\n");
// 值2不保存但可以记录日志 sys_sta.P_Radar_EN=2;
JT808_DEBUG("Skip saving temporary RadarEN=2 state");
} }
else if(1 == jt808_term_param_item.set_term_param.RadarEN)
{
sys_sta.P_Radar_EN=1;
}
else if(0 == jt808_term_param_item.set_term_param.RadarEN)
{
JT808_DEBUG("radar ok\r\n");
sys_sta.P_Radar_EN=0;
}
break; break;
} }
default:{ default:{
@ -507,14 +476,20 @@ void jt808_LocReport_param_update(void){
// 更新当前所在位置区域ID // 更新当前所在位置区域ID
uint32_t lat = nmea_ndeg2degree(gps_data_msg.info.lat) * 1e6; uint32_t lat = nmea_ndeg2degree(gps_data_msg.info.lat) * 1e6;
uint32_t lng = nmea_ndeg2degree(gps_data_msg.info.lon) * 1e6; uint32_t lng = nmea_ndeg2degree(gps_data_msg.info.lon) * 1e6;
uint8_t flag = 0; //0围栏非空 1空围栏
// lat = 44939236; // lat = 44939236;
// lng = 121369446; // lng = 121369446;
// lat = 34939236; // lat = 34939236;
// lng = 121369446; // lng = 121369446;
flag=jt808_is_fence_empty();
JT808_DEBUG("list not null\r\n");
Rsp_Bigscenic_Fence_Polygon_area_ID = Swap32(jt808_Polygon_fence_check(0x0001, lat, lng)); Rsp_Bigscenic_Fence_Polygon_area_ID = Swap32(jt808_Polygon_fence_check(0x0001, lat, lng));
Rsp_Bigban_Fence_Polygon_area_ID = Swap32(jt808_Polygon_fence_check(0x0002, lat, lng)); Rsp_Bigban_Fence_Polygon_area_ID = Swap32(jt808_Polygon_fence_check(0x0002, lat, lng));
if((1 == sys_sta.O_door_lock) || (0 == sys_sta.MAG_MODE )){ // 系统运行中 if((1 == sys_sta.O_door_lock) && (1 == sys_sta.PLT_MODE ) && (1 == sys_sta.MAG_MODE)){ // 系统运行中
Rsp_locked_condition = 0; // 复位锁车状态 Rsp_locked_condition = 0; // 复位锁车状态
if(Rsp_Bigscenic_Fence_Polygon_area_ID == 0){ // 在景区围栏 if(Rsp_Bigscenic_Fence_Polygon_area_ID == 0){ // 在景区围栏
@ -528,16 +503,18 @@ void jt808_LocReport_param_update(void){
} }
if(Rsp_Bigban_Fence_Polygon_area_ID != 0){ if(Rsp_Bigban_Fence_Polygon_area_ID != 0){
delay_off_count++; delay_off_count++;
if(delay_off_count >= jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF){ // 30S if((delay_off_count >= jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF) && (0 == flag)){ // 30S
delay_off_count = 0; delay_off_count = 0;
// sys_sta.O_door_lock = 0; // 锁车 sys_sta.O_door_lock = 0; // 锁车
// Rsp_locked_condition = 1; // 锁车状态 Rsp_locked_condition = 1; // 锁车状态
// local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0); local_tts_text_play("已锁车,请联系管理员解除禁止入内限制!",0,0);
jt808_pkg_send(ID_LocReport,10000/5); // 发送位置信息上报包
} }
ban_Fence_Polygon_count++; ban_Fence_Polygon_count++;
if(ban_Fence_Polygon_count >= 10){ // 7S if((ban_Fence_Polygon_count >= 10) && (0 == flag)){ // 7S
ban_Fence_Polygon_count = 0; ban_Fence_Polygon_count = 0;
// local_tts_text_play("您已进入禁区,请尽快离开!",0,0); local_tts_text_play("您已进入禁区,请尽快离开!",0,0);
jt808_pkg_send(ID_LocReport,10000/5); // 发送位置信息上报包
} }
}else{ }else{
delay_off_count = 0; delay_off_count = 0;
@ -548,6 +525,12 @@ void jt808_LocReport_param_update(void){
ban_Fence_Polygon_count = 0; ban_Fence_Polygon_count = 0;
delay_off_count = 0; delay_off_count = 0;
} }
JT808_DEBUG("list null\r\n");
} }
osMutexRelease(term_param_mutex); osMutexRelease(term_param_mutex);
} }
@ -612,7 +595,7 @@ void Autoreport_param_Task(void *arg){
jt808_LocReport_param_update(); // 更新位置信息参数 jt808_LocReport_param_update(); // 更新位置信息参数
// jt808_term_param_item.big_loc_report.basic_info.alarm_flag.gnss_fault = 0 == gps_data_msg.info.sig ? 1 : 0; // 0:无故障1:有故障 // jt808_term_param_item.big_loc_report.basic_info.alarm_flag.gnss_fault = 0 == gps_data_msg.info.sig ? 1 : 0; // 0:无故障1:有故障
if(0 == (count_Sec % jt808_term_param_item.set_term_param.HeartBeatInterval)){ if((0 == (count_Sec % jt808_term_param_item.set_term_param.HeartBeatInterval))){
if((gps_data_msg.info.fix == 1)||(gps_data_msg.info.sig == 0)){ // 不可用// 未定位时发送心跳包 if((gps_data_msg.info.fix == 1)||(gps_data_msg.info.sig == 0)){ // 不可用// 未定位时发送心跳包
jt808_pkg_send(ID_Term_HB,0); // 发送心跳包 // 不接收应答 jt808_pkg_send(ID_Term_HB,0); // 发送心跳包 // 不接收应答
// jt808_pkg_send(ID_LocReport,0); // jt808_pkg_send(ID_LocReport,0);
@ -620,7 +603,10 @@ void Autoreport_param_Task(void *arg){
JT808_DEBUG("Bat_Percent:%d,Bat_Voltage:%d,Bat_STA:%X\r\n",BAT_Message.Bat_Percent,BAT_Message.Bat_Voltage,BAT_Message.Bat_STA); JT808_DEBUG("Bat_Percent:%d,Bat_Voltage:%d,Bat_STA:%X\r\n",BAT_Message.Bat_Percent,BAT_Message.Bat_Voltage,BAT_Message.Bat_STA);
}else{ }else{
jt808_pkg_send(ID_LocReport,10000/5); // 发送位置信息上报包 jt808_pkg_send(ID_LocReport,10000/5); // 发送位置信息上报包
JT808_DEBUG("auto report\r\n");
} }
} }
count_Sec++; count_Sec++;
osDelay(1000/5); // 1S osDelay(1000/5); // 1S
@ -670,7 +656,7 @@ void jt808_set_term_param_init(void){
// memcpy(jt808_term_param_item.big_term_attr_resp.term_ICCID+4, jt808_term_param_item.phone_BCDnum, 6); // 终端手机号码 但是你照这个来云端收到的iccid全是因为BCDnum参数本身没有初始化 // memcpy(jt808_term_param_item.big_term_attr_resp.term_ICCID+4, jt808_term_param_item.phone_BCDnum, 6); // 终端手机号码 但是你照这个来云端收到的iccid全是因为BCDnum参数本身没有初始化
char str_hw_ver[] = "1.0.0"; // 硬件版本 char str_hw_ver[] = "1.0.0"; // 硬件版本
char str_fw_ver[] = "1.0.1"; // 固件版本 原本为1.0.0 char str_fw_ver[] = "1.0.4"; // 固件版本 原本为1.0.0
jt808_term_param_item.big_term_attr_resp.hw_ver_len = strlen(str_hw_ver); // 硬件版本长度 jt808_term_param_item.big_term_attr_resp.hw_ver_len = strlen(str_hw_ver); // 硬件版本长度
jt808_term_param_item.big_term_attr_resp.fw_ver_len = strlen(str_fw_ver); // 固件版本长度 jt808_term_param_item.big_term_attr_resp.fw_ver_len = strlen(str_fw_ver); // 固件版本长度
memcpy(jt808_term_param_item.big_term_attr_resp.str_hw_ver, str_hw_ver, strlen(str_hw_ver)); // 硬件版本 memcpy(jt808_term_param_item.big_term_attr_resp.str_hw_ver, str_hw_ver, strlen(str_hw_ver)); // 硬件版本
@ -696,7 +682,7 @@ void jt808_set_term_param_init(void){
}else{ }else{
jt808_term_param_item.set_term_param.HeartBeatInterval = 30; // 心跳包间隔(秒) jt808_term_param_item.set_term_param.HeartBeatInterval = 30; // 心跳包间隔(秒)
#if 1 #if 1
char ServerAddr[] ="47.99.118.34"; // 测试服务器地址 char ServerAddr[] ="106.15.224.140"; // 三一服务器地址
uint32_t ServerPort = 5000; // 服务器端口 uint32_t ServerPort = 5000; // 服务器端口
#else #else
char ServerAddr[] ="106.14.30.23"; // 生产服务器地址 char ServerAddr[] ="106.14.30.23"; // 生产服务器地址
@ -715,12 +701,12 @@ void jt808_set_term_param_init(void){
jt808_term_param_item.set_term_param.RadarEN =1; // 雷达使能位, 0 代表关闭, 1 代表开启 jt808_term_param_item.set_term_param.RadarEN =1; // 雷达使能位, 0 代表关闭, 1 代表开启
jt808_term_param_item.set_term_param.ManagerACC =100; // 管理员模式油门0~100% jt808_term_param_item.set_term_param.ManagerACC =100; // 管理员模式油门0~100%
jt808_term_param_item.set_term_param.TouristACC =50; // 游客模式油门0~100% jt808_term_param_item.set_term_param.TouristACC =45; // 游客模式油门0~100%
jt808_term_param_item.set_term_param.SpeedCutACC =20; // 自动减速油门0~100% jt808_term_param_item.set_term_param.SpeedCutACC =1; // 自动减速油门0~100%
jt808_term_param_item.set_term_param.BrakeLimit =1200; //前进刹车距离 jt808_term_param_item.set_term_param.BrakeLimit =2000; //前进刹车距离
jt808_term_param_item.set_term_param.SpeedCutLimit =2000; // 前进自动减速刹车距离 jt808_term_param_item.set_term_param.SpeedCutLimit =2000; // 前进自动减速刹车距离
jt808_term_param_item.set_term_param.BrakeLimit_B =1200; // 后退刹车距离 jt808_term_param_item.set_term_param.BrakeLimit_B =1000; // 后退刹车距离
jt808_term_param_item.set_term_param.SpeedCutLimit_B =2000; // 后退自动减速刹车距离 jt808_term_param_item.set_term_param.SpeedCutLimit_B =1600; // 后退自动减速刹车距离
jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF =30; // 禁止围栏延时锁车时间 jt808_term_param_item.set_term_param.Ban_Fence_Polygon_Delay_OFF =30; // 禁止围栏延时锁车时间
jt808_save_TermParam(); // 保存终端参数 jt808_save_TermParam(); // 保存终端参数
} }
@ -854,3 +840,5 @@ void jt808_set_term_param_free(void){
} }
PrsResult.term_param_item = NULL; PrsResult.term_param_item = NULL;
} }

View File

@ -475,7 +475,7 @@ void local_tts_init(void){
osThreadAttr_t local_tts_play_thread_attr = { osThreadAttr_t local_tts_play_thread_attr = {
.name = "local_tts_play_thread", .name = "local_tts_play_thread",
.stack_size = 4096*4, .stack_size = 4096*4,
.priority = osPriorityNormal .priority = osPriorityAboveNormal
}; };
osThreadNew((osThreadFunc_t)local_tts_play_task, NULL, &local_tts_play_thread_attr); osThreadNew((osThreadFunc_t)local_tts_play_task, NULL, &local_tts_play_thread_attr);
osThreadNew((osThreadFunc_t)__local_tts_play_task, NULL, &local_tts_play_thread_attr); osThreadNew((osThreadFunc_t)__local_tts_play_task, NULL, &local_tts_play_thread_attr);

View File

@ -133,7 +133,7 @@ static void RADAR_TaskHandle(void *param){
uint16_t time_count =0; uint16_t time_count =0;
while(1){ while(1){
// sys_sta.P_Radar_EN=jt808_term_param_item.set_term_param.RadarEN;
if(0==sys_sta.P_Radar_EN) if(0==sys_sta.P_Radar_EN)
{ {
@ -167,10 +167,12 @@ static void RADAR_TaskHandle(void *param){
// DEBUG("SendCMD:ID=%#02x", (0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front); // DEBUG("SendCMD:ID=%#02x", (0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front);
radar_Sendcmd((0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front, RADAR_MODE_Real); radar_Sendcmd((0 == sys_sta.IO_RX_back)?RADAR_ID_Back:RADAR_ID_Front, RADAR_MODE_Real);
DEBUG("radar 1\r\n"); // 任务结束
}else{ }else{
sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_Speed_Cut =0; // 清空自动减速状态
sys_sta.A_brake =0; // 清空自动刹车状态 sys_sta.A_brake =0; // 清空自动刹车状态
DEBUG("radar 1\r\n"); // 任务结束
} }
@ -180,21 +182,24 @@ static void RADAR_TaskHandle(void *param){
else if (2==sys_sta.P_Radar_EN) else if (2==sys_sta.P_Radar_EN)
{ {
time_count++; time_count++;
sys_sta.A_Speed_Cut =0; // 清空自动减速状态 sys_sta.A_Speed_Cut =0; // 清空自动减速状态
sys_sta.A_brake =0; // 清空自动刹车状态 sys_sta.A_brake =0; // 清空自动刹车状态
if(time_count>=1000) if(time_count>=100)
{ {
sys_sta.P_Radar_EN=1; sys_sta.P_Radar_EN=1;
time_count=0; time_count=0;
}
} }
DEBUG("radar done\r\n"); // 任务结束
DEBUG("radar 2\r\n"); // 任务结束
}
osMutexRelease(radar_mutex); osMutexRelease(radar_mutex);
osDelay(140/5); // 140ms osDelay(140/5); // 140ms