功能完善,正式版本1.0 无ota功能,终端参数读取问题待修复
This commit is contained in:
parent
e439651823
commit
c78c0da3b7
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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_
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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);// 发送终端通用应答
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
|
jt808_term_param_item.set_term_param.RadarEN = param_val32 & 0xFF;
|
||||||
|
|
||||||
|
if(2 == jt808_term_param_item.set_term_param.RadarEN)
|
||||||
|
{
|
||||||
|
|
||||||
|
JT808_DEBUG("radar ok\r\n");
|
||||||
|
sys_sta.P_Radar_EN=2;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 更新运行时状态(包括值2)
|
|
||||||
osMutexAcquire(radar_mutex, osWaitForever);
|
|
||||||
sys_sta.P_Radar_EN = radar_en;
|
|
||||||
osMutexRelease(radar_mutex);
|
|
||||||
|
|
||||||
// 只保存0或1到持久化参数
|
|
||||||
if(radar_en != 2) {
|
|
||||||
jt808_term_param_item.set_term_param.RadarEN = radar_en;
|
|
||||||
} else {
|
|
||||||
// 值2不保存,但可以记录日志
|
|
||||||
JT808_DEBUG("Skip saving temporary RadarEN=2 state");
|
|
||||||
}
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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 2\r\n"); // 任务结束
|
||||||
|
|
||||||
}
|
}
|
||||||
DEBUG("radar done\r\n"); // 任务结束
|
|
||||||
|
|
||||||
osMutexRelease(radar_mutex);
|
osMutexRelease(radar_mutex);
|
||||||
osDelay(140/5); // 140ms
|
osDelay(140/5); // 140ms
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue