WXK
2024-10-16 08b03003355d51abd21fdf97dd4a4f0225092dc6
APL/APL.c
@@ -197,46 +197,49 @@
//        l_bIsVibration = HIDO_TRUE;
        nomove_time=0;
    }
    if(GPIO_Pin == GPIO_PIN_9)
    {
               HAL_ResumeTick();
//    if(GPIO_Pin == GPIO_PIN_9)//按钮关机
//    {
//               HAL_ResumeTick();
            SystemClock_Config();
            MX_Init();
            Uart_ReInit(UART_ID_DBG);
            Uart_ReInit(UART_ID_LORA);
            Uart_ReInit(UART_ID_GPS);
//            SystemClock_Config();
//            MX_Init();
//            Uart_ReInit(UART_ID_DBG);
//            Uart_ReInit(UART_ID_LORA);
//            Uart_ReInit(UART_ID_GPS);
//
      PowerDownDetect();
    }
//
//      PowerDownDetect();
//    }
    
}
extern uint8_t lora_rxbuf[256];
extern uint8_t lora_rxbufnum;
extern void Set4LEDColor_Off(void);
uint8_t lora_sendfinalbag_num;
void lora_sendfinalbag_Poll()
void Lora_Sendfinalbag_Poll()
{
if(lp_time-lora_sendfinalbag_time>10&&lora_sendfinalbag_flag)
//    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu);
if(lp_time-lora_sendfinalbag_time>1)
    {
    lora_sendfinal_rx_bag_flag=1;
    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu);
//    lora_sendfinal_rx_bag_flag=1;
    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu); //发送数据
    memset(&lora_rxbuf,0,sizeof(lora_rxbuf));//发一次清一次rx的缓存
    lora_rxbufnum=0;
    lora_sendfinalbag_time=lp_time;
    lora_sendfinalbag_num=lora_sendfinalbag_num+1;
        loraled=BLUE;
        powerled=LEDOFF;
        gpsled=LEDOFF;
        uwbled=LEDOFF;
        Set4LEDColor(powerled,loraled,gpsled,uwbled);
        HAL_Delay(100);
       Set4LEDColor_Off();
        if(lora_sendfinalbag_num>10)
        {
        lora_sendfinal_rx_bag_flag=0;
        lora_sendfinalbag_flag=0;
        lora_sendfinalbag_num=0;
        }
        HIDO_Debug("lora bufa\r\n");
        loraled=LEDOFF;
        Set4LEDColor(powerled,loraled,gpsled,uwbled);
//        if(lora_sendfinalbag_num>4)
//        {
//        lora_sendfinal_rx_bag_flag=0;
//        lora_sendfinalbag_flag=0;
//        lora_sendfinalbag_num=0;
//        }
//        HIDO_Debug("lora bufa\r\n");
    }
}
@@ -289,7 +292,32 @@
    return HIDO_OK;
}
uint8_t Input_5V_flag=0;
void Input_5V_Poll (void)
{
    if(IsTypecCActive() == HIDO_TRUE&&Input_5V_flag==0)
    {   Input_5V_flag=1;
        nomove_time=0;
        if(bat_percent>=90)
        {
        powerled=GREEN;
        Set4LEDColor(powerled,loraled,gpsled,uwbled);
//        HIDO_Debug("1111");
        }
        else
        {
        powerled=RED;
        Set4LEDColor(powerled,loraled,gpsled,uwbled);
//            HIDO_Debug("2222");
        }
    }
    if(IsTypecCActive() == HIDO_FALSE)
    {
    Input_5V_flag=0;
//    Set4LEDColor_Off();
//        HIDO_Debug("3333");
    }
}
/*******************************************************************************
 * Function Name     :
 * Description       :
@@ -304,6 +332,21 @@
uint32_t GPSDateTime =0;
uint8_t uwbqiehuangps_flag;
extern uint8_t nomove_flag;
HIDO_INT32 NOWAKEUP_Poll(void)
{
  while(1)
  {
         HIDO_TimerPoll();
        Lora_Poll();//lora接收函数
        IdleTask();
        if((Lora_IsIdle() == HIDO_TRUE)/*为了防止lora初始化的时候进入休眠*/
      &&(IsTypecCActive() == HIDO_FALSE) /*5v输入检测时不休眠*/)
        {
        Power_Sleep();
        }
  }
}
extern uint8_t fengming_time,fengming_flag;
HIDO_INT32 APL_Poll(void)
{
//    ST_RTCDateTime stNow;
@@ -313,98 +356,119 @@
    IdleTask();
    GPS_Poll();//gps接收函数
    Lora_Poll();//lora接收函数
    if(nomove_flag==0)
    if(nomove_flag==0&&Input_5V_flag==0)
{
   lora_sendfinalbag_Poll();//lora在gps成功获得位置坐标或者超过1分钟没有获得时发送gps最后一包数据的函数,之后1分钟(10s)发一次,除非lora收到消除标志位或者发送超过10次
   Lora_Sendfinalbag_Poll();//lora在gps成功获得位置坐标或者超过1分钟没有获得时发送gps最后一包数据的函数,之后1分钟(10s)发一次,除非lora收到消除标志位或者发送超过10次
}
if(Lora_IsIdle() == HIDO_TRUE)
Input_5V_Poll();
#if 1
    if(((Lora_IsIdle() == HIDO_TRUE)/*为了防止lora初始化的时候进入休眠*/
      && (GPS_IsIdle() == HIDO_TRUE)/*防止gps工作时进入休眠*/
      &&(lora_sendfinal_rx_bag_flag==0)//防止lora在2s等待接收的时候进入休眠
      && (IsTypecCActive() == HIDO_FALSE)) /*5v输入检测时不休眠*/||nomove_flag==1/*静止1小时立刻休眠。*/)
    {
//////    if(Lora_IsIdle() == HIDO_TRUE)
        Power_Sleep();
//HIDO_Debug("in  sleep\r\n");
    }
    else
    {
    }
if(nomove_flag==0)
{
if(GPS_ON_flag)
{
    /* 检查GPS定时 */
    switch(l_eGPSState)
    {
        case GPS_OFF:
        {
            if(lp_time-GPSDateTime > g_com_map[GPS_ONTIME] /*|| IsVibration() == HIDO_TRUE*/||uwbqiehuangps_flag==1)
            {
                uwbqiehuangps_flag=0;
                l_bIsVibration = HIDO_FALSE;
                HIDO_Debug("GPS ON\r\n");
                Power_GPS_LoraOn();
                l_eGPSState = GPS_ON;
                GPSDateTime=lp_time;
            }
//    if(((Lora_IsIdle() == HIDO_TRUE)/*为了防止lora初始化的时候进入休眠*/
//      && (GPS_IsIdle() == HIDO_TRUE)/*防止gps工作时进入休眠*/
//      &&(lora_sendfinal_rx_bag_flag==0)//防止lora在2s等待接收的时候进入休眠
//      && (IsTypecCActive() == HIDO_FALSE)/*5v输入检测时不休眠*/&&(fangchai_flag==0)&&fengming_flag==0) ||nomove_flag==1/*静止1小时立刻休眠。*/)
//    {
////////    if(Lora_IsIdle() == HIDO_TRUE)
//        Power_Sleep();
////HIDO_Debug("in  sleep\r\n");
//    }
//    else
//    {
//    }
//if(nomove_flag==0&&(Lora_IsIdle() == HIDO_TRUE)&&Input_5V_flag==0)
//{
//    if(GPS_ON_flag)
//    {
//    /* 检查GPS定时 */
//    switch(l_eGPSState)
//    {
//        case GPS_OFF:
//        {
//            if(lp_time-GPSDateTime > g_com_map[GPS_ONTIME] /*|| IsVibration() == HIDO_TRUE*/||uwbqiehuangps_flag==1)
//            {
//                uwbqiehuangps_flag=0;
//                l_bIsVibration = HIDO_FALSE;
//                HIDO_Debug("GPS ON\r\n");
//                Power_GPS_LoraOn();
//                l_eGPSState = GPS_ON;
//                GPSDateTime=lp_time;
//                if(IsTypecCActive() == HIDO_FALSE)//如果有5v输入的话不关灯。
//                {
//                powerled=LEDOFF;
//                Set4LEDColor(powerled,loraled,gpsled,uwbled);  //关一下电源灯,防止gps突然工作不进入休眠,电源灯常量
//                }
//
//            }
            break;
        }
        case GPS_ON:
        {
            if(lp_time-GPSDateTime > 60)
            {
                lora_sendfinalbag_flag=1;
                lora_sendfinal_rx_bag_flag=1;
                HIDO_Debug("GPS OFF\r\n");
                Power_GPS_LoraOff();
                l_eGPSState = GPS_OFF;
                GPSDateTime=lp_time;
            }
//            break;
//        }
//        case GPS_ON:
//        {
//            if(lp_time-GPSDateTime > 60)
//            {
//                lora_sendfinalbag_flag=1;
//                lora_sendfinal_rx_bag_flag=1;
//                HIDO_Debug("GPS OFF\r\n");
//                Power_GPS_LoraOff();
//                l_eGPSState = GPS_OFF;
//                GPSDateTime=lp_time;
//            }
            break;
        }
        case GPS_SUCCESS:
        {
            lora_sendfinalbag_flag=1;
            lora_sendfinal_rx_bag_flag=1;
            HIDO_Debug("GPS SUCCESS\r\n");
            Power_GPS_LoraOff();
            l_eGPSState = GPS_OFF;
            GPSDateTime=lp_time;
            break;
        }
        default:
        {
            break;
        }
    }
}
else
{
            Power_GPS_LoraOff();
            l_eGPSState = GPS_OFF;
            uwbqiehuangps_flag=1;
}
}
    if(nomove_flag==1)
    {
                Power_GPS_LoraOff();
                l_eGPSState = GPS_OFF;
    }
//            break;
//        }
//        case GPS_SUCCESS:
//        {
//            lora_sendfinalbag_flag=1;
//            lora_sendfinal_rx_bag_flag=1;
//            HIDO_Debug("GPS SUCCESS\r\n");
//            Power_GPS_LoraOff();
//            l_eGPSState = GPS_OFF;
//            GPSDateTime=lp_time;
//            break;
//        }
//        default:
//        {
//            break;
//        }
//    }
//    }
//    else
//    {
//            Power_GPS_LoraOff();
//            l_eGPSState = GPS_OFF;
////            uwbqiehuangps_flag=1;//如果放开,就是uwb切到gps会立刻工作一次,不放开就是就算uwb切换到gps也要判断是否过了一小时
//    }
//  if(fengming_flag==1)
//  {Beep_On();}
//}
//else
//{
//        Power_GPS_LoraOff();
//        l_eGPSState = GPS_OFF;
//        uwbqiehuangps_flag=1;
//}
#ifndef UWB_OFF_FANGCHAI_ON
  #else
    /* 拆卸告警 */
    if(IsDisassemblyAlarm())
    {
        if(lp_time%2==1)
        Beep_On();
        else
        Beep_Off();
        fangchai_flag=1;
    }
    else
    {
        if(fengming_flag==0)
        {
        Beep_Off();
        fangchai_flag=0;
        }
    }
  #endif
#endif
    return HIDO_OK;
}