1
WXK
2023-12-18 37e61b5bf9aba18b6d0a5a4892494f0016c6e9c6
APL/APL.c
@@ -168,6 +168,15 @@
 * Author            : 杜键
 * Modified Date:    : 2018年5月8日
 *******************************************************************************/
HIDO_BOOL TypecCActive(void)
{
    if(GPIO_IS_SET(&l_stTypeCPIN))
    {
        return HIDO_TRUE;
    }
    return HIDO_FALSE;
}
static HIDO_BOOL IsTypecCActive(void)
{
    if(GPIO_IS_SET(&l_stTypeCPIN))
@@ -190,53 +199,59 @@
extern uint32_t nomove_time;
extern void MX_Init(void);
extern  void SystemClock_Config(void);
uint8_t jiasudu;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if(GPIO_Pin == GPIO_PIN_5)
    {
//        l_bIsVibration = HIDO_TRUE;
        nomove_time=0;
//        HIDO_Debug("有效测距%d\r\n",youxiao_ceju);
        jiasudu=1;
    }
    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>6)
    {
    lora_sendfinal_rx_bag_flag=1;
    Lora_SendData((HIDO_UINT8 *)GPS_final_data,GPS_final_changdu);
    Lora_SendData((HIDO_UINT8 *)GPS_final_data,11); //发送数据
//    memset(&lora_rxbuf,0,sizeof(lora_rxbuf));//发一次清一次rx的缓存
//    lora_rxbufnum=0;
    lora_sendfinalbag_time=lp_time;
    lora_sendfinalbag_num=lora_sendfinalbag_num+1;
//    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 fa\r\n");
    }
}
@@ -289,7 +304,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       :
@@ -315,11 +354,15 @@
    Lora_Poll();//lora接收函数
    if(nomove_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) && (GPS_IsIdle() == HIDO_TRUE)&&(lora_sendfinal_rx_bag_flag==0)
            && (IsTypecCActive() == HIDO_FALSE) /*&& (IsVibration() == HIDO_FALSE)*/)
    if(((Lora_IsIdle() == HIDO_TRUE)/*为了防止lora初始化的时候进入休眠*/
      && (GPS_IsIdle() == HIDO_TRUE)/*防止gps工作时进入休眠*/
      &&(lora_sendfinal_rx_bag_flag==0)//防止lora在2s等待接收的时候进入休眠
      && (IsTypecCActive() == HIDO_FALSE)&&(fangchai_flag==0)) /*5v输入检测时不休眠*/||nomove_flag==1/*静止1小时立刻休眠。*/)
    {
//////    if(Lora_IsIdle() == HIDO_TRUE)
        Power_Sleep();
@@ -328,16 +371,16 @@
    else
    {
    }
if(nomove_flag==0)
if(nomove_flag==0&&(Lora_IsIdle() == HIDO_TRUE))
{
if(GPS_ON_flag)
{
    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)
            if(lp_time-GPSDateTime > g_com_map[GPS_ONTIME] /*|| IsVibration() == HIDO_TRUE*/||uwbqiehuangps_flag==1)
            {
                uwbqiehuangps_flag=0;
                l_bIsVibration = HIDO_FALSE;
@@ -345,6 +388,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;
@@ -355,7 +404,6 @@
            {
                lora_sendfinalbag_flag=1;
                lora_sendfinal_rx_bag_flag=1;
//                lora_sendfinal_rx_time=lp_time;
                HIDO_Debug("GPS OFF\r\n");
                Power_GPS_LoraOff();
                l_eGPSState = GPS_OFF;
@@ -368,7 +416,6 @@
        {
            lora_sendfinalbag_flag=1;
            lora_sendfinal_rx_bag_flag=1;
//            lora_sendfinal_rx_time=lp_time;
            HIDO_Debug("GPS SUCCESS\r\n");
            Power_GPS_LoraOff();
            l_eGPSState = GPS_OFF;
@@ -380,25 +427,30 @@
            break;
        }
    }
}
else
{
    }
    else
    {
            Power_GPS_LoraOff();
            l_eGPSState = GPS_OFF;
            uwbqiehuangps_flag=1;
}
}
    if(nomove_flag==1)
    {
                Power_GPS_LoraOff();
                l_eGPSState = GPS_OFF;
//                uwbqiehuangps_flag=1;
//            uwbqiehuangps_flag=1;//如果放开,就是uwb切到gps会立刻工作一次,不放开就是就算uwb切换到gps也要判断是否过了一小时
    }
}
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
@@ -406,6 +458,26 @@
        Beep_Off();
        fangchai_flag=0;
    }
  #endif
#endif
    return HIDO_OK;
}
HIDO_INT32 ceshi(void)
{
    HIDO_TimerPoll();
    IdleTask();
    GPS_Poll();//gps接收函数
    Lora_Poll();//lora接收函数
    Lora_Sendfinalbag_Poll();
    if(IsDisassemblyAlarm())
    {
       Beep_Off();
    }
    else
    {
       Beep_On();
    }
}