A59 -V1.1版本提交

This commit is contained in:
2024-10-10 17:41:53 +08:00
parent 16b6433a98
commit 5f032cd320
903 changed files with 171909 additions and 22876 deletions

View File

@ -69,25 +69,25 @@ static void protocol_uart_tx_thread(void *param)
for (;;)
{
if(uart_tx_flag){
if (uart_time_request[0] != 0 && uart_time_request[0] == 0xAA)
if (uart_time_request[0] != 0 && (uart_time_request[0] == 0xAA || uart_time_request[0] == 0x27))
{
//printf("UART3 tx-->>> ");
// printf("UART3 tx-->>> ");
for (uint8_t i = 0; i < 9; i++)
{
//printf("%02x ", uart_time_request[i]);
// printf("%02x ", uart_time_request[i]);
uarttx[i] = uart_time_request[i];
}
if(uart_time_request[1]==0x10){
for (uint8_t i = 9; i < 19; i++)
{
//printf("%02x ", uart_time_request[i]);
// printf("%02x ", uart_time_request[i]);
uarttx[i] = uart_time_request[i];
}
//printf("\r\n");
// printf("\r\n");
iUartWrite(uap, uarttx, 19, pdMS_TO_TICKS(100)); // 发送数据
uart_time_request[0] = 0;
}else{
//printf("\r\n");
// printf("\r\n");
iUartWrite(uap, uarttx, 9, pdMS_TO_TICKS(100)); // 发送数据
uart_time_request[0] = 0;
}
@ -126,7 +126,10 @@ static uint16_t calculate_cumulative_sum(uint8_t *buf)
return sum;
}
extern uint8_t uart3_flag;
uint8_t device_flag = 0;
uint8_t data_analysis_flag = 0;
uint8_t data_count_flag = 0;
uint8_t uart3_flag = 0;
static void protocol_uart_rx_thread(void *param)
{
UartPort_t *uap = xUartOpen(UART_BT_PORT);
@ -139,7 +142,7 @@ static void protocol_uart_rx_thread(void *param)
int i;
uint8_t tlv_data_value[128] = {0};
unsigned char ota_request[8] = {0x7e,0x00,0x05,0x02,0x03,0x01,0x00,0x01};
// unsigned char ota_request[8] = {0x7e,0x00,0x05,0x02,0x03,0x01,0x00,0x01};
uint32_t sum = 0;
uint8_t equipment_data = 0;
uint8_t mac_data = 0;
@ -164,142 +167,152 @@ static void protocol_uart_rx_thread(void *param)
for (;;)
{
len = iUartRead(uap, uartrx, BUFFER_LEN, pdMS_TO_TICKS(10));
if(uart3_flag){
if(len==0)
uart3_flag = 0;
else
printf("len!=0.\r\n");
}else if(Get_sys_power_on_self_test() != 150){
for(i=0;i<len;i++){
switch (upgrade_state) {
case 0:
if (uartrx[i] == 0xAA){
upgrade_state++;
tlv_data_value[str_len] = uartrx[i];
str_len++;
equipment_data = 0;
mac_data = 0;
}
break;
case 1:
if (uartrx[i] == 0x18){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
}else if(uartrx[i] == 0x1b){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
mac_data = 1;
}else if(uartrx[i] == 0x47){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
equipment_data = 1;
}else
upgrade_state = 0;
break;
case 2:
tlv_data_value[str_len] = uartrx[i];
str_len++;
if(str_len > data_len+1){
if(Get_sys_power_on_self_test() != 150 ){
if(device_flag)
data_count_flag++;
for(i=0;i<len;i++){
switch (upgrade_state) {
case 0:
if (uartrx[i] == 0xAA){
upgrade_state++;
tlv_data_value[str_len] = uartrx[i];
str_len++;
equipment_data = 0;
mac_data = 0;
}
break;
case 3:
if (uartrx[i] == 0x0a){
sum = calculate_cumulative_sum(tlv_data_value);
if(sum != tlv_data_value[str_len-1]){
//printf("error.\r\n");
case 1:
if (uartrx[i] == 0x18){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
}else if(uartrx[i] == 0x1b){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
mac_data = 1;
}else if(uartrx[i] == 0x47){
tlv_data_value[str_len] = uartrx[i];
str_len++;
data_len = uartrx[i];
upgrade_state++;
equipment_data = 1;
}else
upgrade_state = 0;
break;
case 2:
tlv_data_value[str_len] = uartrx[i];
str_len++;
if(str_len > data_len+1){
upgrade_state++;
}
break;
case 3:
if (uartrx[i] == 0x0a){
sum = calculate_cumulative_sum(tlv_data_value);
if(sum != tlv_data_value[str_len-1]){
printf("error.\r\n");
}else{
if(equipment_data){
device_data_analysis(tlv_data_value);
equipment_data = 0;
if(!data_analysis_flag)
device_flag = 1;
}else if(mac_data){
tire_pressure_data_analysis(tlv_data_value);
mac_data = 0;
}else{
data_analysis(tlv_data_value);
if(!data_analysis_flag)
data_analysis_flag = 1;
}
}
}else{
if(equipment_data){
device_data_analysis(tlv_data_value);
equipment_data = 0;
}else if(mac_data){
tire_pressure_data_analysis(tlv_data_value);
mac_data = 0;
}else
data_analysis(tlv_data_value);
printf("\nuartrx[i] = %x .\n",uartrx[i]);
}
// }else{
//DEBUG_PRINT("\nuartrx[i] = %x .\n",uartrx[i]);
upgrade_state=0;
str_len = 0;
data_len = 0;
break;
}
upgrade_state=0;
str_len = 0;
data_len = 0;
break;
}
/*
switch (uup_rx_state) {
case 0:
if (uartrx[i] == 0x7e)
uup_rx_state++;
break;
case 1:
if (uartrx[i] == 0x05)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 2:
if (uartrx[i] == 0x02)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 3:
if (uartrx[i] == 0x03)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 4:
if (uartrx[i] == 0x01)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 5:
if (uartrx[i] == Get_sys_softwar_host())
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 6:
if (uartrx[i] == Get_sys_softwar_order()){
if(Get_sys_veer_velocity()){
//DEBUG_PRINT("error ota sj. Speed present\n");
ota_request[1] = 0x01;
ota_request[6] = Get_sys_softwar_host();
ota_request[7] = Get_sys_softwar_order();
TXCMD_Other_Set(ota_request,8);
}else{
//DEBUG_PRINT("enter ota sj.\n");
Set_sys_power_on_self_test(150);
// extern uint8_t now_theme_state;
// now_theme_state = 5;
Set_sys_upgrade_Flag(1);//进入ota界面
ota_request[6] = Get_sys_softwar_host();
ota_request[7] = Get_sys_softwar_order();
vTaskDelay(100);
TXCMD_Other_Set(ota_request,8);
if(timeout)
timeout=0;
switch (uup_rx_state) {
case 0:
if (uartrx[i] == 0x7e)
uup_rx_state++;
break;
case 1:
if (uartrx[i] == 0x05)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 2:
if (uartrx[i] == 0x02)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 3:
if (uartrx[i] == 0x03)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 4:
if (uartrx[i] == 0x01)
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 5:
if (uartrx[i] == Get_sys_softwar_host())
uup_rx_state++;
else
uup_rx_state = 0;
break;
case 6:
if (uartrx[i] == Get_sys_softwar_order()){
if(Get_sys_veer_velocity()){
printf("error ota sj. Speed present\n");
// ota_request[1] = 0x01;
// ota_request[6] = Get_sys_softwar_host();
// ota_request[7] = Get_sys_softwar_order();
// TXCMD_Other_Set(ota_request,8);
Send_ota_state(1);
}else{
printf("enter ota sj.\n");
Set_sys_power_on_self_test(150);
Set_sys_upgrade_Flag(1);//进入ota界面
// ota_request[6] = Get_sys_softwar_host();
// ota_request[7] = Get_sys_softwar_order();
Send_ota_state(0);
if(timeout)
timeout=0;
}
}
uup_rx_state = 0;
break;
}
uup_rx_state = 0;
break;
}
}
}
if((!data_analysis_flag) && data_count_flag == 50){
data_count_flag = 0;
if(uart3_flag){
printf("uart3 open .\r\n");
UART3_Type_regression();
uart3_flag = 0;
}else{
printf("uart3 close .\r\n");
UART3_Modification_Type();
uart3_flag = 1;
}
}
}else{//升级逻辑
timeout ++;
for (i = 0; i < len; i++) {
@ -335,7 +348,7 @@ static void protocol_uart_rx_thread(void *param)
//uup_rx_data_len |= uartrx[i];
uup_rx_data_len = (uartrx[i]<<8) | uup_rx_data_len;
if((uup_rx_data_len > UUP_PACKET_A27_SIZE + 2)) { //4096 + 2
//DEBUG_PRINT("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
uup_rx_state = 0;
} else {
uup_rx_state++;
@ -365,27 +378,25 @@ static void protocol_uart_rx_thread(void *param)
len = buf[3]<<8 | len;
for (i = 0; i < len + 4; i++)
checksum ^= buf[i];
////DEBUG_PRINT("checksum = 0x%x , buf[len + 4] = 0x%x\n",checksum,buf[len + 4]);
//printf("checksum = 0x%x , buf[len + 4] = 0x%x\n",checksum,buf[len + 4]);
if (checksum == buf[len + 4]) {
timeout =0;
// uup_ota_update(uap, buf + 4, len);
//DEBUG_PRINT("rev frame checksum err.\n");
uup_ota_update(uap, buf + 4, len);
} else {
printf("rev frame checksum err.\r\n");
}
uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM;
}
if(timeout >= 3000){//超时退出升级 大约40s
//DEBUG_PRINT("exit ota sj.\n");
printf("exit ota sj.\n");
Set_sys_power_on_self_test(100);
Set_sys_upgrade_Flag(2);
//DEBUG_PRINT("UART3_Type_regression .\n");
printf("UART3_Type_regression .\n");
extern void UART3_Type_regression(void);
UART3_Type_regression();
timeout = 0;
}
*/
}
}
}