A27R版本修改

This commit is contained in:
2025-05-17 14:22:08 +08:00
parent 0fd28aa974
commit 3b3c63f1f3
388 changed files with 319982 additions and 30872 deletions

View File

@ -92,7 +92,7 @@ int carlink_cp_init();
**********************/
#ifdef VG_DRIVER
#pragma data_alignment=1024
#define VG_HEAP_SIZE 0xc00000
#define VG_HEAP_SIZE 0xd00000
__no_init static uint8_t vgHeap[VG_HEAP_SIZE];
#endif

View File

@ -18,13 +18,14 @@
// #define MAX_ENTRIES 500 // 假设最大条目数为500
#define MAX_ENTRIES 3000 // 假设最大条目数为500
uint8_t time_flag = 0;
uint8_t wifi_time_flag = 0;
char bt121_name[50];
char bt121_name1[50];
char bt121_name[CALL_NAME_MAX];
char bt121_name1[CALL_NAME_MAX];
// 定义电话本条目结构体
typedef struct {
char name[50];
char phone[20];
char name[CALL_NAME_MAX];
char phone[PHONE_MAX];
} PhoneBookEntry;
PhoneBookEntry phoneBook[MAX_ENTRIES]; // 存储电话本信息的数组
@ -47,6 +48,26 @@ char* findNameByPhoneNumber(const char* phoneNumber) {
if (strcmp(phoneBook[i].phone, phoneNumber) == 0) {
printf("find> i=%d,name=%s.\r\n",i,phoneBook[i].name);
return phoneBook[i].name;
}
// 检查phoneBook中的号码是否有+86前缀如果有则去掉后比较
if (strlen(phoneBook[i].phone) > 3 &&
strncmp(phoneBook[i].phone, "+86", 3) == 0) {
const char* phoneWithoutPrefix = phoneBook[i].phone + 3;
if (strcmp(phoneWithoutPrefix, phoneNumber) == 0) {
printf("find> i=%d,name=%s.\r\n",i,phoneBook[i].name);
return phoneBook[i].name;
}
}
// 检查输入的号码是否有+86前缀如果有则去掉后比较
if (strlen(phoneNumber) > 3 &&
strncmp(phoneNumber, "+86", 3) == 0) {
const char* inputWithoutPrefix = phoneNumber + 3;
if (strcmp(phoneBook[i].phone, inputWithoutPrefix) == 0) {
printf("find> i=%d,name=%s.\r\n",i,phoneBook[i].name);
return phoneBook[i].name;
}
}
}
printf("unfind .\r\n");
@ -67,12 +88,10 @@ void BW_121_Switch(uint8_t type){
switch(type){
case 0:
printf("send close bt.\r\n");
console_send_atcmd("AT+BTEN=0\r\n", strlen("AT+BTEN=0\r\n"));//关蓝牙
bt121_state = 1;
break;
case 1:
printf("send open bt.\r\n");
console_send_atcmd("AT+BTEN=1\r\n", strlen("AT+BTEN=1\r\n"));//开蓝牙
bt121_state = 2;
break;
@ -245,12 +264,13 @@ void bw121call_number_data_event_handler(char* cAtCmd){
static uint8_t flag = 0;
void parseBtATCommand(char* cAtCmd,int cATLen) {
// printf("###");
// printf("BW121>");
// for(uint16_t i =0;i<cATLen;i++){
// printf("%c",cAtCmd[i]);
// }
// printf("\r\n");
if(strlen(cAtCmd) >= 2 && !memcmp(cAtCmd,"OK",2))//蓝牙连接设备信息 远端设备信息 蓝牙连接
if(strlen(cAtCmd) > 2 && !memcmp(cAtCmd,"OK",2))//蓝牙连接设备信息 远端设备信息 蓝牙连接
{
switch(bt121_state){
case 1:
@ -262,26 +282,42 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
default:break;
}
}else if(strlen(cAtCmd) > 8 && !memcmp(cAtCmd,"+A2DPDEV",8))//蓝牙连接设备信息 远端设备信息 蓝牙连接
{
}else if(strlen(cAtCmd) > 7 && !memcmp(cAtCmd,"+HFPDEV",7)){//设备状态
Set_sys_bt_connect_state(1);
vTaskDelay(500);
//查询电话本信息
printf("select phonebook.\r\n");
console_send_atcmd("AT+PBDOWN=1\r\n", strlen("AT+PBDOWN=1\r\n"));
//获取时间 当前只有苹果小米可用
console_send_atcmd("AT+HFPTIME\r\n", strlen("AT+HFPTIME\r\n"));
// bt_connect_flag = 1;
// vTaskDelay(500);
// if(!broadcastStatus){
// //查询电话本信息
// printf("select phonebook.\r\n");
// console_send_atcmd("AT+PBDOWN=1\r\n", strlen("AT+PBDOWN=1\r\n"));
// }
// }else if(strlen(cAtCmd) > 8 && !memcmp(cAtCmd,"+A2DPDEV",8))//蓝牙连接设备信息 远端设备信息 蓝牙连接 //屏蔽音频后无效
// {
// Set_sys_bt_connect_state(1);
// vTaskDelay(500);
// //查询电话本信息
// printf("select phonebook.\r\n");
// console_send_atcmd("AT+PBDOWN=1\r\n", strlen("AT+PBDOWN=1\r\n"));
}else if(strlen(cAtCmd) > 8 && !memcmp(cAtCmd,"+DEVSTAT",8)){//设备状态
uint32_t num = 0;
num = cAtCmd[9] - '0';//状态 0 off 1 on
printf("bt>state = %d",num);
switch(num){
case 0:
Set_sys_bt_on_off(0);
break;
case 1:
Set_sys_bt_on_off(1);
break;
}
printf(".ok\r\n");
// 提取数值部分
char *valueStr = strchr(cAtCmd, '='); // 查找 '=' 字符
if (valueStr != NULL) {
valueStr++; // 移动到 '=' 后面的字符
num = (uint32_t)atoi(valueStr); // 将字符串转换为整数
}
// 判断蓝牙开关状态和广播状态
uint8_t bluetoothStatus = (num & 0x01); // bit0
uint8_t broadcastStatus = (num & 0x02) >> 1; // bit1 //1为可发现 0为不可发现
Set_sys_bt_on_off(bluetoothStatus);
// printf("broadcastStatus = %d,",broadcastStatus);
if(!broadcastStatus) Set_sys_bt_connect_state(0);
// Set_sys_bt_connect_state(broadcastStatus?0:1);
// printf("bt_state=%d,",Get_sys_bt_connect_state());
}else if(strlen(cAtCmd) > 8 && !memcmp(cAtCmd,"+HFPSTAT",8)){//来电 或 蓝牙断开
if(strlen(cAtCmd) == 10){
@ -307,6 +343,15 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
Set_sys_bt_connect_state(0);
}else if(strlen(cAtCmd) > 5 && !memcmp(cAtCmd,"+NAME",5)){//远距离断开 设备丢失
sscanf(cAtCmd, "+NAME=%s", bt121_name1);
// 获取字符串长度
size_t len = strlen(bt121_name1);
// 判断字符串长度是否大于等于2并检查最后两位是否为 "01"
if (len >= 2 && bt121_name1[len - 2] == '0' && bt121_name1[len - 1] == '1') {
// 修改字符串,删除最后两位
bt121_name1[len - 2] = '\0'; // 将倒数第二个字符设置为字符串结束符
}
}else if(strlen(cAtCmd) > 7 && !memcmp(cAtCmd,"+LEADDR",7)){//远距离断开 设备丢失
char last_four[5];
strncpy(last_four, cAtCmd + strlen(cAtCmd) - 4, 4);
@ -335,6 +380,7 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
check_buffer[4] = minute;
check_buffer[5] = second;
send_wifi_set_time(check_buffer);
wifi_time_flag = 1;
#endif
printf(">>bt time %s.\r\n",cAtCmd);
}else if(strlen(cAtCmd) > 7 && !memcmp(cAtCmd,"+PBSTAT",7)){//下载状态
@ -353,8 +399,8 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
return;
// 解析字符串并提取姓名和电话号码
uint8_t count = 0;
char call_num[20];
char call_name[50];
char call_num[PHONE_MAX];
char call_name[CALL_NAME_MAX];
memset(call_name, 0, sizeof(call_name));
memset(call_num, 0, sizeof(call_num));
uint16_t y = 0;
@ -373,7 +419,7 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
y++;
}
// printf("ID:%d,name:%s,call:%s.\r\n",numEntries,call_name,call_num);
// printf("ID:%d,name:<%s>,call:<%s>\r\n",numEntries,call_name,call_num);
if(strlen(call_name) && strlen(call_num)){
strcpy(phoneBook[numEntries].name, call_name);
strcpy(phoneBook[numEntries].phone, call_num);
@ -381,5 +427,7 @@ void parseBtATCommand(char* cAtCmd,int cATLen) {
}
}else if(strlen(cAtCmd) > 10 && !memcmp(cAtCmd,"+HFPAUDIO=1",10)){//AVRCP状态 1是配对状态 蓝牙断开
console_send_atcmd("AT+HFPADTS=1\r\n", strlen("AT+HFPADTS=1\r\n"));//查询profile使能
}
}

View File

@ -6,30 +6,19 @@
#include "universal.h"
extern void SaveDataToFlash(SfudData_t user_data);
// extern void SaveDataToFlash(SfudData_t user_data);
uint8_t power_on_flag = 0;
uint32_t tire_pressure_flag = 0;
uint32_t tire_front_time = 0;
uint32_t tire_rear_time = 0;
extern uint8_t tire_power;
static date_time_t dt;
extern uint8_t save_flag;
//保存里程信息
static void Save_tire_data(void){
void tire_data_synchronous(void){
Pressure_t ago_pressure = Get_sys_front_pressure();
Pressure_t after_pressure = Get_sys_rear_pressure();
DEBUG_PRINT("****************\r\n");
DEBUG_PRINT("mac: %02X%02X%02X%02X%02X%02X , %02X%02X%02X%02X%02X%02X \r\n",
ago_pressure.mac_address[0],ago_pressure.mac_address[1],ago_pressure.mac_address[2],
ago_pressure.mac_address[3],ago_pressure.mac_address[4],ago_pressure.mac_address[5],
after_pressure.mac_address[0],after_pressure.mac_address[1],after_pressure.mac_address[2],
after_pressure.mac_address[3],after_pressure.mac_address[4],after_pressure.mac_address[5]);
DEBUG_PRINT("****************\r\n");
DEBUG_PRINT("mac: %02X%02X%02X%02X%02X%02X , %02X%02X%02X%02X%02X%02X \r\n",
custom_data.user_data.f_mac_address[0],custom_data.user_data.f_mac_address[1],custom_data.user_data.f_mac_address[2],
custom_data.user_data.f_mac_address[3],custom_data.user_data.f_mac_address[4],custom_data.user_data.f_mac_address[5],
custom_data.user_data.r_mac_address[0],custom_data.user_data.r_mac_address[1],custom_data.user_data.r_mac_address[2],
custom_data.user_data.r_mac_address[3],custom_data.user_data.r_mac_address[4],custom_data.user_data.r_mac_address[5]);
DEBUG_PRINT("****************\r\n");
strcpy(custom_data.user_data.f_mac_address,ago_pressure.mac_address);
custom_data.user_data.f_mac_address[6]=ago_pressure.temp&0xFF;
custom_data.user_data.f_mac_address[7]=ago_pressure.psi>>8&0xFF;
@ -38,13 +27,26 @@ static void Save_tire_data(void){
custom_data.user_data.r_mac_address[6]=after_pressure.temp&0xFF;
custom_data.user_data.r_mac_address[7]=after_pressure.psi>>8&0xFF;
custom_data.user_data.r_mac_address[8]=after_pressure.psi&0xFF;
}
//保存里程信息
void Save_tire_data(void){
tire_data_synchronous();
Set_sys_pressure_signal(0);
//保存flash
SaveDataToFlash(custom_data.user_data);//保存数据
save_flag = 1;
// //保存flash
// SaveDataToFlash(custom_data.user_data);//保存数据
}
//数据刷新函数
void pressure_buffer_event_handing(Pressure_t pressure,char buffer[],uint8_t type,uint8_t pairing_status){
// printf("enter data>");
// for(uint8_t i=0;i<11;i++){
// printf("%02x ",buffer[i]);
// }
// printf("\r\n");
uint8_t len = strlen(buffer);
// uint8_t buffer_state=0;
// uint8_t buffer_check=0;
@ -68,7 +70,7 @@ void pressure_buffer_event_handing(Pressure_t pressure,char buffer[],uint8_t typ
//DEBUG_PRINT("%x, ",data);
pressure.blow_by_state = JUDGE_BIN_1(data);
pressure.voltage_state = JUDGE_BIN_2(data);
//pressure.temp_state = JUDGE_BIN_3(data);
pressure.temp_state = JUDGE_BIN_3(data);
//V
data = *(sign++);//电压 0x1e=>30=>3.0V
@ -76,11 +78,15 @@ void pressure_buffer_event_handing(Pressure_t pressure,char buffer[],uint8_t typ
//DEBUG_PRINT("%x, ",data);
//T
data = *(sign++);//温度 0x14=>20=>20°C
pressure.temp = data;
if(data>=70 && data<128){
pressure.temp_state = 1;
}else
pressure.temp_state = 0;
pressure.temp = data;
// if(pressure.temp<=127){
// if(pressure.temp>=70)
// pressure.temp_state = 1;
// else
// pressure.temp_state = 0;
// }else
// pressure.temp_state = 0;
//DEBUG_PRINT("%x, ",data);
//P
sum = 0;
@ -99,7 +105,7 @@ void pressure_buffer_event_handing(Pressure_t pressure,char buffer[],uint8_t typ
date_time_t dt;
date_time_init(&dt);
uint16_t check_buffer[6];
uint32_t check_buffer[6];
check_buffer[0] = dt.year;
check_buffer[1] = dt.month;
check_buffer[2] = dt.day;
@ -115,21 +121,17 @@ void pressure_buffer_event_handing(Pressure_t pressure,char buffer[],uint8_t typ
pressure.blow_by_state,pressure.voltage_state,pressure.temp_state,pressure.temp,pressure.psi);
switch(type){
case 1:
if((sum - tire_front_time)>3600){
pressure.lose_flag = 1;
}
Set_sys_front_pressure(pressure);
break;
case 2:
if((sum - tire_rear_time)>3600){
pressure.lose_flag = 1;
}
Set_sys_rear_pressure(pressure);
break;
default:break;
}
if(pairing_status){//若配对模式
Save_tire_data();
Send_tire_pressure_information();
Set_sys_tire_pressure_mesg(10);
}
@ -158,48 +160,51 @@ void tire_pressure_data_analysis(uint8_t *buf){
Pressure_t ago_pressure = Get_sys_front_pressure();
Pressure_t after_pressure = Get_sys_rear_pressure();
data = *(buf++);
if(data!=0xAA)
return;
(buf++);
(buf++);
(buf++);
(buf++);
(buf++);
data = *(buf++);
if(data!=0x1b)
return;
// data = *(buf++);
// if(data!=0xAA)
// return;
data = *(buf++);
if(data!=0x03)
return;
// data = *(buf++);
// if(data!=0x1b)
// return;
data = *(buf++);
if(data!=0x51)
return;
// data = *(buf++);
// if(data!=0x03)
// return;
data = *(buf++);
if(data!=0x17)
return;
// data = *(buf++);
// if(data!=0x51)
// return;
// data = *(buf++);
// if(data!=0x17)
// return;
data_flag = *(buf++);
if(!data_flag && !power_on_flag){
return;
}else{
date_time_t dt;
date_time_init(&dt);
uint16_t check_buffer[6];
check_buffer[0] = dt.year;
check_buffer[1] = dt.month;
check_buffer[2] = dt.day;
check_buffer[3] = dt.hour;
check_buffer[4] = dt.minute;
check_buffer[5] = dt.second;
uint32_t sum = fml_time_to_stamp(check_buffer);
switch(data_flag){
case 1:tire_front_time =sum;break;
case 2:tire_rear_time =sum;break;
case 3:tire_front_time =sum;tire_rear_time =sum;break;
default:break;
}
date_time_init(&dt);
uint32_t check_buffer[6];
check_buffer[0] = dt.year;
check_buffer[1] = dt.month;
check_buffer[2] = dt.day;
check_buffer[3] = dt.hour;
check_buffer[4] = dt.minute;
check_buffer[5] = dt.second;
uint32_t sum = fml_time_to_stamp(check_buffer);
switch(data_flag){
case 1:tire_front_time =sum; break;
case 2:tire_rear_time =sum; break;
case 3:tire_front_time =sum;tire_rear_time =sum; break;
default:break;
}
for(uint8_t i=0;i<11;i++){
trip_buffer1[i] = *(buf++);
if(i<6)
@ -211,6 +216,7 @@ void tire_pressure_data_analysis(uint8_t *buf){
if(i<6)
mac2[i]=trip_buffer2[i];
}
//tk_snDEBUG_PRINT(mac1, sizeof(mac1), "%02X%02X%02X%02X%02X%02X",trip_buffer1[0],trip_buffer1[1],trip_buffer1[2],trip_buffer1[3],trip_buffer1[4],trip_buffer1[5]);
//tk_snDEBUG_PRINT(mac2, sizeof(mac2), "%02X%02X%02X%02X%02X%02X",trip_buffer2[0],trip_buffer2[1],trip_buffer2[2],trip_buffer2[3],trip_buffer2[4],trip_buffer2[5]);
@ -223,12 +229,28 @@ void tire_pressure_data_analysis(uint8_t *buf){
}
DEBUG_PRINT("\r\n");
DEBUG_PRINT("***************************\r\n");
if(tire_power){
tire_power = 0;
if(!Get_sys_pressure_signal())
data_flag = 3;
// printf("data_flag = %d\r\n",data_flag);
}else if(!data_flag && !Get_sys_pressure_signal()){
//判断本地是否有mac地址
if(mac_address_normal(ago_pressure.mac_address, 6) != 0 && (compare_arrays(ago_pressure.mac_address,mac1,6)==0)){
Send_tire_pressure_information();
}else if(mac_address_normal(after_pressure.mac_address, 6) != 0 && (compare_arrays(after_pressure.mac_address,mac2,6)==0)){
Send_tire_pressure_information();
}
return;
}
switch(Get_sys_pressure_signal()){
case 0://正常情况下需要刷新数据
DEBUG_PRINT("0>>>> data_flag = %d \n",data_flag);
uint8_t tire_error = 0;
// DEBUG_PRINT("0>>>> data_flag = %d \n",data_flag);
//if(strcmp(ago_pressure.mac_address,mac1)==0){//若和前胎压地址相同,则将数据丢给前胎压
if(compare_arrays(ago_pressure.mac_address,mac1,6)==1 && (data_flag == 1 || data_flag == 3) || power_on_flag){//若和前胎压地址相同,则将数据丢给前胎压
if(compare_arrays(ago_pressure.mac_address,mac1,6)==1 && ((data_flag == 1 || data_flag == 3) || power_on_flag)){//若和前胎压地址相同,则将数据丢给前胎压
pressure_buffer_event_handing(ago_pressure,trip_buffer1,1,0);
strcpy(custom_data.user_data.f_mac_address,ago_pressure.mac_address);
custom_data.user_data.f_mac_address[6]=ago_pressure.temp&0xFF;
@ -243,6 +265,15 @@ void tire_pressure_data_analysis(uint8_t *buf){
custom_data.user_data.r_mac_address[7]=after_pressure.psi>>8&0xFF;
custom_data.user_data.r_mac_address[8]=after_pressure.psi&0xFF;
}
// if((compare_arrays(ago_pressure.mac_address,mac1,6)==0) || (compare_arrays(after_pressure.mac_address,mac2,6)==0))//若不同
// Send_tire_pressure_information();
if(mac_address_normal(ago_pressure.mac_address, 6) != 0 && (compare_arrays(ago_pressure.mac_address,mac1,6)==0)){
Send_tire_pressure_information();
}else if(mac_address_normal(after_pressure.mac_address, 6) != 0 && (compare_arrays(after_pressure.mac_address,mac2,6)==0)){
Send_tire_pressure_information();
}
if(power_on_flag){
DEBUG_PRINT("power_on_flag = %d, tire_pressure ,ago_pressure.psi = %d , after_pressure.psi =%d .\r\n",power_on_flag,ago_pressure.psi,after_pressure.psi);
power_on_flag--;
@ -250,13 +281,13 @@ void tire_pressure_data_analysis(uint8_t *buf){
break;
case 1://学习前胎压 前胎压不能于后胎压相同 前胎压mac清零
DEBUG_PRINT("1>>>> data_flag = %d \n",data_flag);
// DEBUG_PRINT("1>>>> data_flag = %d \n",data_flag);
if(data_flag==1){//只做mac1的判断
DEBUG_PRINT("mac1-------------------.\r\n");
//判断mac是否正常
if(mac_address_normal(mac1,6) == 1){//正常进
DEBUG_PRINT("mac1 ok-------------------.\r\n");
// DEBUG_PRINT("mac1 ok-------------------.\r\n");
//判断是否等于后胎压mac地址
if(compare_arrays(after_pressure.mac_address,mac1,6)==1){//若等于,那么刷新后胎压
pressure_buffer_event_handing(after_pressure,trip_buffer1,2,0);
@ -280,7 +311,7 @@ void tire_pressure_data_analysis(uint8_t *buf){
}
}else if(data_flag==2){//只做mac2的判断
DEBUG_PRINT("mac2 -------------------.\r\n");
// DEBUG_PRINT("mac2 -------------------.\r\n");
//判断mac是否正常
if(mac_address_normal(mac2,6) == 1){//正常进
DEBUG_PRINT("mac2 ok-------------------.\r\n");
@ -304,20 +335,20 @@ void tire_pressure_data_analysis(uint8_t *buf){
}
}
}else{
}else if(data_flag==3){
//先判断mac1是否正常 再判断mac2
if(mac_address_normal(mac1,6) == 1){//正常进
DEBUG_PRINT("mac1 -------------------.\r\n");
// DEBUG_PRINT("mac1 -------------------.\r\n");
//判断是否等于后胎压mac地址
if(compare_arrays(after_pressure.mac_address,mac1,6)==1){//若等于,那么刷新后胎压
DEBUG_PRINT("mac1 after -------------------.\r\n");
// DEBUG_PRINT("mac1 after -------------------.\r\n");
pressure_buffer_event_handing(after_pressure,trip_buffer1,2,0);
//后胎压刷新完毕
//1.判断mac2 1.是否正常 是转2 否退出
//2.是否等于后胎压 是则刷后胎压 否转3
//3.学习前胎压
if(mac_address_normal(mac2,6) == 1){//判断mac2是否正常
DEBUG_PRINT("mac2 -------------------.\r\n");
// DEBUG_PRINT("mac2 -------------------.\r\n");
if(compare_arrays(after_pressure.mac_address,mac2,6)==1){//若等于,那么刷新后胎压
pressure_buffer_event_handing(after_pressure,trip_buffer2,2,0);
}else{//反之学习前胎压
@ -338,11 +369,11 @@ void tire_pressure_data_analysis(uint8_t *buf){
}
}else{
DEBUG_PRINT("mac2 error-------------------.\r\n");
// DEBUG_PRINT("mac2 error-------------------.\r\n");
}
}else{//若不等于 那么就学习前胎压
DEBUG_PRINT("mac2 ago-------------------.\r\n");
// DEBUG_PRINT("mac2 ago-------------------.\r\n");
//S
data = trip_buffer1[6];
@ -398,13 +429,13 @@ void tire_pressure_data_analysis(uint8_t *buf){
break;
case 2://学习后胎压
DEBUG_PRINT("2>>>> data_flag =%d\n",data_flag);
// DEBUG_PRINT("2>>>> data_flag =%d\n",data_flag);
if(data_flag==1){//只做mac1的判断
DEBUG_PRINT("mac1-------------------.\r\n");
//判断mac是否正常
if(mac_address_normal(mac1,6) == 1){//正常进
DEBUG_PRINT("mac1 ok-------------------.\r\n");
// DEBUG_PRINT("mac1 ok-------------------.\r\n");
//判断是否等于前胎压mac地址
if(compare_arrays(ago_pressure.mac_address,mac1,6)==1){//若等于,那么刷新前胎压
pressure_buffer_event_handing(ago_pressure,trip_buffer1,1,0);
@ -430,7 +461,7 @@ void tire_pressure_data_analysis(uint8_t *buf){
DEBUG_PRINT("mac2 -------------------.\r\n");
//判断mac是否正常
if(mac_address_normal(mac2,6) == 1){//正常进
DEBUG_PRINT("mac2 ok-------------------.\r\n");
// DEBUG_PRINT("mac2 ok-------------------.\r\n");
//判断是否等于前胎压mac地址
if(compare_arrays(ago_pressure.mac_address,mac2,6)==1){//若等于,那么刷新前胎压
pressure_buffer_event_handing(ago_pressure,trip_buffer2,1,0);
@ -450,7 +481,7 @@ void tire_pressure_data_analysis(uint8_t *buf){
}
}
}else{
}else if(data_flag==3){
//先判断mac1是否正常 再判断mac2
if(mac_address_normal(mac1,6) == 1){//正常进
DEBUG_PRINT("mac1 -------------------.\r\n");

View File

@ -14,6 +14,7 @@
extern double total_mile;
uint8_t data_error_flag = 0;
extern uint8_t wifi_time_flag;
#define KEY_DATA_PRESS 0x01 // 短按
#define KEY_DATA_LONG_PRESS 0x02 // 长按
@ -25,6 +26,8 @@ enum
};
uint8_t save_data = 0;
uint8_t tire_power = 0;
uint8_t bt_reset_flag = 0;
#define ADC_VPLTAGE_MIN 1666
#define ADC_VPLTAGE_MAX 2486
@ -74,7 +77,7 @@ double adc_voltage_calculation(void){
//MOTO通讯 设备信息+时间戳解析协议
void device_data_analysis(uint8_t *buf){
printf("device information............................................\r\n");
// printf("device information............................................\r\n");
uint8_t data;
uint8_t sum1,sum2,sum3,sum4;
uint32_t save_total_mile,save_trip_mile;
@ -168,23 +171,26 @@ void device_data_analysis(uint8_t *buf){
data = *(buf++);//0x04
//DEBUG_PRINT("0x04 -- %02x .\n",data);
//DEBUG_PRINT("time stamp >> ");
uint16_t time_transfer[6];
if(!wifi_time_flag){
uint16_t time_transfer[6];
sum1 = *(buf++);
sum2 = *(buf++);
sum3 = *(buf++);
sum4 = *(buf++);
sum1 = *(buf++);
sum2 = *(buf++);
sum3 = *(buf++);
sum4 = *(buf++);
//sum = sum1 | sum2<<8 | sum3<<16 | sum4<<24;
sum = sum1<<24 | sum2<<16 | sum3<<8 | sum4;
DEBUG_PRINT("time > %08x \n",sum);
tire_rear_time = sum;
tire_front_time = sum;
// if(sum<1706198400)
// sum = 1706198400;
fml_stamp_to_time(sum,time_transfer);
//sum = sum1 | sum2<<8 | sum3<<16 | sum4<<24;
sum = sum1<<24 | sum2<<16 | sum3<<8 | sum4;
printf("bt time > %08x \n",sum);
tire_rear_time = sum;
tire_front_time = sum;
// if(sum<1706198400)
// sum = 1706198400;
fml_stamp_to_time(sum,time_transfer);
Uart_set_time(time_transfer);//去设置时间并不再发送询问时间指令
Uart_set_time(time_transfer);//去设置时间并不再发送询问时间指令
}else
wifi_time_flag--;
//Set_sys_ttrb_time(10);
data = *(buf++);//0x05
@ -491,6 +497,11 @@ void data_analysis(uint8_t *buf){
if(JUDGE_BIN_4(data)){//收到胎压信息,不再发送
DEBUG_PRINT("Received tire pressure command, no longer sending.\n");
Set_sys_tire_pressure_mesg(10);
tire_power = 1;
}
if(JUDGE_BIN_5(data) && JUDGE_BIN_6(data)){
DEBUG_PRINT("bt reset.\n");
bt_reset_flag = 2;
}
#ifdef DATA_CAN
switch(result){