修复界面无聚焦导致的按键无效问题
This commit is contained in:
@ -1065,11 +1065,11 @@ static void uart_rx_demo_thread(void *param)
|
||||
//打印
|
||||
|
||||
if(len!=0){
|
||||
printf("uart2>>>>>>");
|
||||
for(uint8_t i=0;i<len;i++){
|
||||
printf("%c",uartrx[i]);
|
||||
}
|
||||
printf("\r\n");
|
||||
// printf("uart2>>>>>>");
|
||||
// for(uint8_t i=0;i<len;i++){
|
||||
// printf("%c",uartrx[i]);
|
||||
// }
|
||||
// printf("\r\n");
|
||||
|
||||
if((0x01 == len) && (0x00 == uartrx[0])) continue;
|
||||
memcpy((cmdstr+cmdlen), uartrx, len);
|
||||
|
@ -156,361 +156,371 @@ static uint16_t calculate_cumulative_sum(uint8_t *buf)
|
||||
|
||||
static void protocol_uart_rx_thread(void *param)
|
||||
{
|
||||
UartPort_t *uap = xUartOpen(UART_BT_PORT);
|
||||
uint8_t uartrx[BUFFER_LEN];
|
||||
int len;
|
||||
int str_len = 0;
|
||||
int i,j;
|
||||
uint8_t tlv_data_value[128]={0};
|
||||
int data_len =0;
|
||||
uint8_t equipment_data = 0;
|
||||
uint8_t mac_data = 0;
|
||||
uint8_t bt_state = 0;
|
||||
uint8_t flag = 0;
|
||||
while (1)
|
||||
{
|
||||
UartPort_t *uap = xUartOpen(UART_BT_PORT);
|
||||
uint8_t uartrx[BUFFER_LEN];
|
||||
int len;
|
||||
int str_len = 0;
|
||||
int i,j;
|
||||
uint8_t tlv_data_value[128]={0};
|
||||
int data_len =0;
|
||||
uint8_t equipment_data = 0;
|
||||
uint8_t mac_data = 0;
|
||||
uint8_t bt_state = 0;
|
||||
uint8_t flag = 0;
|
||||
|
||||
uint32_t sum = 0;
|
||||
// static uint32_t uartidletick = 0;
|
||||
uint32_t sum = 0;
|
||||
// static uint32_t uartidletick = 0;
|
||||
|
||||
bt_communication_heartbeat = 10;
|
||||
bt_communication_heartbeat = 10;
|
||||
|
||||
if (!uap) {
|
||||
printf("open uart %d fail.\n", UART_BT_PORT);
|
||||
vTaskDelete(NULL);
|
||||
return;
|
||||
}
|
||||
printf("MXC => UART3 115200.\n");
|
||||
TaskHandle_t tx_task_handle;
|
||||
|
||||
vUartInit(uap, 115200, 0);
|
||||
if (!uap) {
|
||||
printf("open uart %d fail.\n", UART_BT_PORT);
|
||||
vTaskDelete(NULL);
|
||||
return;
|
||||
}
|
||||
printf("MXC => UART3 115200.\n");
|
||||
|
||||
if (xTaskCreate(protocol_uart_tx_thread, "uartsend", configMINIMAL_STACK_SIZE, uap,
|
||||
configMAX_PRIORITIES / 3, NULL) != pdPASS) {
|
||||
printf("create uart tx demo task fail.\n");
|
||||
vTaskDelete(NULL);
|
||||
return;
|
||||
}
|
||||
extern uint8_t system_flag;
|
||||
system_flag++;
|
||||
if(system_flag>=2)
|
||||
Send_software_version();
|
||||
vUartInit(uap, 115200, 0);
|
||||
|
||||
for (;;) {
|
||||
len = iUartRead(uap, uartrx, BUFFER_LEN, pdMS_TO_TICKS(10));
|
||||
if (xTaskCreate(protocol_uart_tx_thread, "uartsend", configMINIMAL_STACK_SIZE, uap,
|
||||
configMAX_PRIORITIES / 3, &tx_task_handle) != pdPASS) {
|
||||
printf("create uart tx demo task fail.\n");
|
||||
vTaskDelete(NULL);
|
||||
return;
|
||||
}
|
||||
extern uint8_t system_flag;
|
||||
system_flag++;
|
||||
if(system_flag>=2)
|
||||
Send_software_version();
|
||||
|
||||
// if(len){
|
||||
// printf("uart2>");
|
||||
// for(i=0;i<len;i++){
|
||||
// printf("%02X ",uartrx[i]);
|
||||
// }
|
||||
// printf("\r\n");
|
||||
// }
|
||||
|
||||
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;
|
||||
}else
|
||||
str_len = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (uartrx[i] == 0x11 || uartrx[i] == 0x19){
|
||||
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] == 0x55){
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
data_len = uartrx[i];
|
||||
upgrade_state++;
|
||||
equipment_data = 1;
|
||||
}else if(uartrx[i] == 0x05){
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
data_len = uartrx[i];
|
||||
upgrade_state++;
|
||||
bt_state = 1;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x03){
|
||||
str_len++;
|
||||
for (;;) {
|
||||
len = iUartRead(uap, uartrx, BUFFER_LEN, pdMS_TO_TICKS(10));
|
||||
// if(len){
|
||||
// printf("uart2>");
|
||||
// for(i=0;i<len;i++){
|
||||
// printf("%02X ",uartrx[i]);
|
||||
// }
|
||||
// printf("\r\n");
|
||||
// }
|
||||
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++;
|
||||
}else if(equipment_data && uartrx[i] == 0x01){
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
equipment_data = 0;
|
||||
mac_data = 0;
|
||||
}else
|
||||
str_len = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (uartrx[i] == 0x11 || uartrx[i] == 0x19){
|
||||
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] == 0x55){
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
data_len = uartrx[i];
|
||||
upgrade_state++;
|
||||
equipment_data = 1;
|
||||
}else if(uartrx[i] == 0x05){
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
data_len = uartrx[i];
|
||||
upgrade_state++;
|
||||
bt_state = 1;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x50){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(equipment_data && uartrx[i] == 0x1c){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(mac_data && uartrx[i] == 0x51){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(bt_state && uartrx[i] == 0x54){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x0D ||uartrx[i] == 0x15){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(equipment_data){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(mac_data && uartrx[i] == 0x17){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(bt_state && uartrx[i] == 0x1){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
if(str_len > data_len+1){
|
||||
upgrade_state++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (uartrx[i] == 0x0a){
|
||||
|
||||
sum = calculate_cumulative_sum(tlv_data_value);
|
||||
if(sum != tlv_data_value[str_len-1]){
|
||||
printf("CHECKSUM ERROR ,sum = %x ,tlv_data_value=%x \n",sum,tlv_data_value[str_len-1]);
|
||||
if(flag <5){
|
||||
flag ++;
|
||||
printf("str_len=%d data_len =%d ,",str_len,data_len);
|
||||
for(j=0;j<str_len;j++){
|
||||
printf("%2x ",tlv_data_value[j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}else{
|
||||
uart_state = 3;
|
||||
if(equipment_data){
|
||||
device_data_analysis(tlv_data_value);
|
||||
equipment_data = 0;
|
||||
}else if(mac_data){
|
||||
// printf("tire.\r\n");
|
||||
// printf("\r\n------------------------------.\r\n");
|
||||
// for(j=0;j<str_len;j++){
|
||||
// printf("%02x ",tlv_data_value[j]);
|
||||
// }
|
||||
// tire_pressure_data_analysis(tlv_data_value);
|
||||
mac_data = 0;
|
||||
}else if(bt_state){//存在呼吸 若呼吸不存在
|
||||
bt_communication_heartbeat = 3;
|
||||
// printf("bt_state = %d .\r\n",tlv_data_value[5]);
|
||||
bt_state = 0;
|
||||
case 2:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x03){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(equipment_data && uartrx[i] == 0x01){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else{
|
||||
data_analysis(tlv_data_value);
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
printf("\nuartrx[i] = %x .\n",uartrx[i]);
|
||||
}
|
||||
upgrade_state=0;
|
||||
str_len = 0;
|
||||
data_len = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
#if 1
|
||||
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");
|
||||
Send_ota_state(1);
|
||||
}else{
|
||||
printf("enter ota sj.\n");
|
||||
Set_sys_power_on_self_test(150);
|
||||
Set_sys_upgrade_Flag(1);//进入ota界面
|
||||
Send_ota_state(0);
|
||||
break;
|
||||
case 3:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x50){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(equipment_data && uartrx[i] == 0x1c){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(mac_data && uartrx[i] == 0x51){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(bt_state && uartrx[i] == 0x54){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
if(uartrx[i] == 0x0D ||uartrx[i] == 0x15){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(equipment_data){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(mac_data && uartrx[i] == 0x17){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else if(bt_state && uartrx[i] == 0x1){
|
||||
str_len++;
|
||||
upgrade_state++;
|
||||
}else{
|
||||
upgrade_state = 0;
|
||||
str_len = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
tlv_data_value[str_len] = uartrx[i];
|
||||
str_len++;
|
||||
if(str_len > data_len+1){
|
||||
upgrade_state++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (uartrx[i] == 0x0a){
|
||||
|
||||
if(timeout)
|
||||
timeout=0;
|
||||
sum = calculate_cumulative_sum(tlv_data_value);
|
||||
if(sum != tlv_data_value[str_len-1]){
|
||||
printf("CHECKSUM ERROR ,sum = %x ,tlv_data_value=%x \n",sum,tlv_data_value[str_len-1]);
|
||||
if(flag <5){
|
||||
flag ++;
|
||||
printf("str_len=%d data_len =%d ,",str_len,data_len);
|
||||
for(j=0;j<str_len;j++){
|
||||
printf("%2x ",tlv_data_value[j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}else{
|
||||
uart_state = 3;
|
||||
bt_communication_heartbeat = 3;
|
||||
if(equipment_data){
|
||||
device_data_analysis(tlv_data_value);
|
||||
equipment_data = 0;
|
||||
}else if(mac_data){
|
||||
// printf("tire.\r\n");
|
||||
// printf("\r\n------------------------------.\r\n");
|
||||
// for(j=0;j<str_len;j++){
|
||||
// printf("%02x ",tlv_data_value[j]);
|
||||
// }
|
||||
// tire_pressure_data_analysis(tlv_data_value);
|
||||
mac_data = 0;
|
||||
}else if(bt_state){//存在呼吸 若呼吸不存在
|
||||
bt_communication_heartbeat = 3;
|
||||
// printf("bt_state = %d .\r\n",tlv_data_value[5]);
|
||||
bt_state = 0;
|
||||
}else{
|
||||
data_analysis(tlv_data_value);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
printf("\nuartrx[i] = %x .\n",uartrx[i]);
|
||||
}
|
||||
|
||||
upgrade_state=0;
|
||||
str_len = 0;
|
||||
data_len = 0;
|
||||
break;
|
||||
}
|
||||
uup_rx_state = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#if 1
|
||||
}else{//升级逻辑
|
||||
timeout ++;
|
||||
uart_state = 3;
|
||||
for (i = 0; i < len; i++) {
|
||||
#if 1
|
||||
switch (uup_rx_state) {
|
||||
case 0:
|
||||
if (uartrx[i] == 0x55) {
|
||||
uup_rx_state++;
|
||||
uup_rx_rev_len = 0;
|
||||
uup_rx_ptr = &uup_rx_buf[uup_rx_head][0];
|
||||
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");
|
||||
Send_ota_state(1);
|
||||
}else{
|
||||
printf("enter ota sj.\n");
|
||||
Set_sys_power_on_self_test(150);
|
||||
Set_sys_upgrade_Flag(1);//进入ota界面
|
||||
Send_ota_state(0);
|
||||
|
||||
if(timeout)
|
||||
timeout=0;
|
||||
}
|
||||
|
||||
}
|
||||
uup_rx_state = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (uartrx[i] == 0x81)
|
||||
uup_rx_state++;
|
||||
else
|
||||
uup_rx_state = 0;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 2:
|
||||
if (uartrx[i] == 0xc6)
|
||||
uup_rx_state++;
|
||||
else
|
||||
uup_rx_state = 0;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 3:
|
||||
uup_rx_data_len = uartrx[i];
|
||||
//uup_rx_data_len = (uartrx[i]<<8);
|
||||
uup_rx_state++;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 4:
|
||||
//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
|
||||
printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
|
||||
uup_rx_state = 0;
|
||||
} else {
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 1
|
||||
}else{//升级逻辑
|
||||
timeout ++;
|
||||
uart_state = 3;
|
||||
for (i = 0; i < len; i++) {
|
||||
switch (uup_rx_state) {
|
||||
case 0:
|
||||
if (uartrx[i] == 0x55) {
|
||||
uup_rx_state++;
|
||||
uup_rx_rev_len = 0;
|
||||
uup_rx_ptr = &uup_rx_buf[uup_rx_head][0];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (uartrx[i] == 0x81)
|
||||
uup_rx_state++;
|
||||
else
|
||||
uup_rx_state = 0;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 2:
|
||||
if (uartrx[i] == 0xc6)
|
||||
uup_rx_state++;
|
||||
else
|
||||
uup_rx_state = 0;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 3:
|
||||
uup_rx_data_len = uartrx[i];
|
||||
//uup_rx_data_len = (uartrx[i]<<8);
|
||||
uup_rx_state++;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
break;
|
||||
case 4:
|
||||
//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
|
||||
printf("Invalid uup_rx_data_len %d\n", uup_rx_data_len);
|
||||
uup_rx_state = 0;
|
||||
} else {
|
||||
uup_rx_state++;
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
if (++uup_rx_rev_len == uup_rx_data_len)
|
||||
uup_rx_state++;
|
||||
break;
|
||||
case 6:
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
uup_rx_head = (uup_rx_head + 1) % UUP_RX_FRAME_NUM;
|
||||
uup_rx_state = 0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
if (++uup_rx_rev_len == uup_rx_data_len)
|
||||
uup_rx_state++;
|
||||
break;
|
||||
case 6:
|
||||
*uup_rx_ptr++ = uartrx[i];
|
||||
uup_rx_head = (uup_rx_head + 1) % UUP_RX_FRAME_NUM;
|
||||
uup_rx_state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (uup_rx_tail != uup_rx_head) {
|
||||
unsigned char *buf;
|
||||
unsigned char checksum = 0;
|
||||
|
||||
buf = &uup_rx_buf[uup_rx_tail][0];
|
||||
//len = (buf[2]<<8)+buf[3];
|
||||
len = buf[2];
|
||||
len = buf[3]<<8 | len;
|
||||
for (i = 0; i < len + 4; i++)
|
||||
checksum ^= buf[i];
|
||||
//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);
|
||||
} else {
|
||||
printf("rev frame checksum err.\r\n");
|
||||
}
|
||||
uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM;
|
||||
}
|
||||
|
||||
if (uup_rx_tail != uup_rx_head) {
|
||||
unsigned char *buf;
|
||||
unsigned char checksum = 0;
|
||||
|
||||
buf = &uup_rx_buf[uup_rx_tail][0];
|
||||
//len = (buf[2]<<8)+buf[3];
|
||||
len = buf[2];
|
||||
len = buf[3]<<8 | len;
|
||||
for (i = 0; i < len + 4; i++)
|
||||
checksum ^= buf[i];
|
||||
//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);
|
||||
} else {
|
||||
printf("rev frame checksum err.\r\n");
|
||||
if(timeout >= 3000){//超时退出升级 大约40s
|
||||
printf("exit ota sj.\n");
|
||||
Set_sys_power_on_self_test(100);
|
||||
Set_sys_upgrade_Flag(2);
|
||||
printf("UART3_Type_regression .\n");
|
||||
extern void UART3_Type_regression(void);
|
||||
UART3_Type_regression();
|
||||
timeout = 0;
|
||||
}
|
||||
uup_rx_tail = (uup_rx_tail + 1) % UUP_RX_FRAME_NUM;
|
||||
#endif
|
||||
}
|
||||
|
||||
if(timeout >= 3000){//超时退出升级 大约40s
|
||||
printf("exit ota sj.\n");
|
||||
Set_sys_power_on_self_test(100);
|
||||
Set_sys_upgrade_Flag(2);
|
||||
printf("UART3_Type_regression .\n");
|
||||
extern void UART3_Type_regression(void);
|
||||
UART3_Type_regression();
|
||||
timeout = 0;
|
||||
}
|
||||
#endif
|
||||
//收不到蓝牙心跳信息 复位串口
|
||||
if(uart_flag==1) {
|
||||
break;
|
||||
}
|
||||
|
||||
//收不到蓝牙心跳信息 复位串口
|
||||
if(uart_flag==1){
|
||||
uart_flag = 2;
|
||||
printf("reset uart.\r\n");
|
||||
UART3_Modification_Type();
|
||||
vUartClose(uap);
|
||||
uap = xUartOpen(UART_BT_PORT);
|
||||
UART3_Type_regression();
|
||||
vUartInit(uap,115200,0);
|
||||
bt_communication_heartbeat = 10;
|
||||
|
||||
}
|
||||
|
||||
uart_flag = 2;
|
||||
printf("reset uart.\r\n");
|
||||
|
||||
//关闭发送任务
|
||||
vTaskDelete(tx_task_handle);
|
||||
//关闭Uart
|
||||
vUartClose(uap);
|
||||
//配置为GPIO
|
||||
UART3_Modification_Type();
|
||||
//延时100
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
//配置为Uart
|
||||
UART3_Type_regression();
|
||||
//重置心跳检测
|
||||
bt_communication_heartbeat = 5;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user