WXK
2024-01-31 cb037453c59b56bea6dba09c4211d5180571b41f
APL/APL.c
@@ -197,40 +197,43 @@
//        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()
{
if(lp_time-lora_sendfinalbag_time>4&&lora_sendfinalbag_flag)
//    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu);
if(lp_time-lora_sendfinalbag_time>10&&lora_sendfinalbag_flag)
    {
    lora_sendfinal_rx_bag_flag=1;
    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu);
    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)
        loraled=LEDOFF;
        Set4LEDColor(powerled,loraled,gpsled,uwbled);
        if(lora_sendfinalbag_num>4)
        {
        lora_sendfinal_rx_bag_flag=0;
        lora_sendfinalbag_flag=0;
@@ -289,7 +292,31 @@
    return HIDO_OK;
}
static uint8_t Input_5V_flag=0;
void Input_5V_Poll (void)
{
    if(IsTypecCActive() == HIDO_TRUE&&Input_5V_flag==0)
    {   Input_5V_flag=1;
        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 +331,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;
@@ -317,11 +359,13 @@
{
   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小时立刻休眠。*/)
      && (IsTypecCActive() == HIDO_FALSE)/*5v输入检测时不休眠*/&&(fangchai_flag==0)&&fengming_flag==0) ||nomove_flag==1/*静止1小时立刻休眠。*/)
    {
//////    if(Lora_IsIdle() == HIDO_TRUE)
        Power_Sleep();
@@ -330,7 +374,7 @@
    else
    {
    }
if(nomove_flag==0)
if(nomove_flag==0&&(Lora_IsIdle() == HIDO_TRUE))
{
    if(GPS_ON_flag)
    {
@@ -347,6 +391,12 @@
                Power_GPS_LoraOn();
                l_eGPSState = GPS_ON;
                GPSDateTime=lp_time;
                if(IsTypecCActive() == HIDO_FALSE)//如果有5v输入的话不关灯。
                {
                powerled=LEDOFF;
                Set4LEDColor(powerled,loraled,gpsled,uwbled);  //关一下电源灯,防止gps突然工作不进入休眠,电源灯常量
                }
            }
            break;
@@ -385,8 +435,10 @@
    {
            Power_GPS_LoraOff();
            l_eGPSState = GPS_OFF;
            uwbqiehuangps_flag=1;
//            uwbqiehuangps_flag=1;//如果放开,就是uwb切到gps会立刻工作一次,不放开就是就算uwb切换到gps也要判断是否过了一小时
    }
  if(fengming_flag==1)
  {Beep_On();}
}
else
{
@@ -394,17 +446,28 @@
        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;
}