WXK
2024-04-18 4b421322afff4020c6b2c1bece996a7f9cd67337
APL/App.c
@@ -58,6 +58,8 @@
extern ST_GPS l_stGPS;
extern uint32_t uwbled,gpsled,loraled,powerled;
uint8_t uwb_send[100]={0x55,0xaa};
void Uwb_Zubao_Poll();
extern IWDG_HandleTypeDef hiwdg;
/*******************************************************************************
 *                        Local Function Declaration                           *
 *******************************************************************************/
@@ -102,96 +104,41 @@
//    UDPClient_UploadGPS((char*)LBS_data);
}
/*******************************************************************************
 * Function Name     : App_Poll
 * Description       :
 * Input             :
 * Output            : None
 * Return            : None
 * Author            : www.hido-studio.com
 * Modified Date:    : 2021年5月07日
 *******************************************************************************/
//HIDO_VOID App_Poll(HIDO_VOID)
//{
//    // 充电状态
//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET)
//    {
//        if(HIDO_FALSE == l_bCharge)
//        {
//            l_bCharge = HIDO_TRUE;
//            l_u32ChargeTick = 0;
//            l_u32CancelChargeReport = HIDO_FALSE;
//        }
//        if(l_bCharge == HIDO_TRUE && l_u32CancelChargeReport == HIDO_FALSE)
//        {
//            if((HIDO_TimerGetTick() - l_u32ChargeTick) >= HIDO_TIMER_TICK_S(10))
//            {
//                l_u32ChargeTick = HIDO_TimerGetTick();
//                // 发送状态
//            }
//        }
//        return;
//    }
//    else
//    {
//        l_bCharge = HIDO_FALSE;
//    }
//    // 设备被拆卸
//    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == GPIO_PIN_RESET)
//    {
//        if(HIDO_FALSE == l_bDismantle)
//        {
//            l_bCancelAlarm = HIDO_FALSE;
//            l_bDismantle = HIDO_TRUE;
//            l_u32DismantleAlarmTick = 0;
//        }
//    }
//    else
//    {
//        l_bDismantle = HIDO_TRUE;
//    }
//    // 启动蜂鸣器
//    if(l_bDismantle == HIDO_TRUE && l_bCancelAlarm == HIDO_FALSE)
//    {
//        // 蜂鸣器动作
//        // 每隔10秒发送一次告警
//        if((HIDO_TimerGetTick() - l_u32DismantleAlarmTick) >= HIDO_TIMER_TICK_S(10))
//        {
//            l_u32DismantleAlarmTick = HIDO_TimerGetTick();
//            // 发送告警
//        }
//    }
//    // 10分钟上报一次位置
//    if((HIDO_TimerGetTick() - l_u32LocationTick) >= HIDO_TIMER_TICK_S(1/*0 * 60*/))
//    {
//        l_u32LocationTick = HIDO_TimerGetTick();
//        // GPS定位有效
//        if(l_stGPS.m_eState)
//        {
//            // 发送GNSS位置
//        }
//        // GPS定位无效
//        else
//        {
//            // 获取LBS位置
//            Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//        }
//    }
//}
extern uint16_t nomove_count;
extern uint8_t bat_percent;
extern uint8_t chargedbg_flag;
u8 power_state = 0,chargeon = 0;
uint8_t chongman_flag;
extern  uint16_t chongdian_yundong_time;
extern uint8_t bat_percent;
extern uint16_t heart_time;
extern uint8_t nomove_flag;
uint16_t qidong_time;
#define QIDONG_TIME 60  //1分钟
#define DENGDAI_TIME 30//90s
//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
#define YUNDONG_UWB_TIME 1
#define YUNDONG_GPS4G_TIME 100
extern UART_HandleTypeDef huart2;
uint8_t GPS_data[100];
uint8_t GPS_successful_flag;
uint8_t fangchai_flag;
uint8_t fangchai_state;
uint8_t only_one_flag;
uint8_t only_one_flag1;
extern uint16_t fangchai_time;
extern uint8_t taglist_num;
uint16_t tagseq;
extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
extern uint8_t yundong_state;
extern uint16_t yundong_time;
extern uint8_t tagbat_list[ANC_MAX_NUM];
extern TIM_HandleTypeDef htim3;
extern uint8_t beep_state;
extern uint8_t air780_state;
extern uint16_t sleep_time;
uint8_t zuihoufasong_falg;
void PowerLedTask(void)
     static u8 powerled_state=0;
@@ -204,6 +151,7 @@
        }
       while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE)
        {
            HAL_IWDG_Refresh(&hiwdg);
        DBG_Poll();
        IdleTask();
        uwbled=LEDOFF;
@@ -211,18 +159,47 @@
        HIDO_TimerPoll();
        HIDO_ATLitePoll();
        UDPClient_Poll();
            GPS_Poll();
            if(bat_percent>90)
            {
                powerled = RED;
                gpsled = LEDOFF;
                uwbled = LEDOFF;
                loraled = LEDOFF;
                chongman_flag=1;
            }
            else
            {
                powerled = RED;
            }
                if(taglist_num>0)
                {
                    if(air780_state>=2)
                    {
                        HAL_NVIC_SystemReset();
                    }
                    if(chongdian_yundong_time>=YUNDONG_UWB_TIME)
                    {
                        air780_state=0;
                        chongdian_yundong_time=0;
                        Uwb_Zubao_Poll();
                        UDPClient_UploadGPS((char*)GPS_data);
                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
                        taglist_num=0;
                    }
                }
                else
                {
                        if(chongdian_yundong_time>=g_com_map[GPS_HZ])
                        {
                            chongdian_yundong_time=0;
                            if(GPS_successful_flag)
                            {
                                UDPClient_UploadGPS((char*)GPS_data);
                            }
                            else
                            {
                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
                            }
                        }
                }
        }
        
    }
@@ -253,8 +230,8 @@
//    hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP + 4);
    //deca_sleep(1000);
    g_com_map[GROUP_ID]=0;
   g_com_map[VERSION] = (2<<8)|1;
    g_com_map[GROUP_ID]=3;
   g_com_map[VERSION] = (2<<8)|4;
    if (g_com_map[COM_INTERVAL] <50)
    {
@@ -291,6 +268,7 @@
      else          
      {g_com_map[GPS_HZ]=600;}
    }
    g_com_map[GPS_HZ]=1;
    if(g_com_map[CHAICHUGPS_HZ]<180||g_com_map[CHAICHUGPS_HZ]>3600)
    {
      {g_com_map[CHAICHUGPS_HZ]=600;}
@@ -352,32 +330,6 @@
        }
}
extern uint8_t bat_percent;
extern uint16_t heart_time;
extern uint8_t nomove_flag;
uint16_t qidong_time;
#define QIDONG_TIME 60  //1分钟
#define DENGDAI_TIME 30//90s
//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟
#define YUNDONG_UWB_TIME 1
#define YUNDONG_GPS4G_TIME 100
extern UART_HandleTypeDef huart2;
uint8_t GPS_data[100];
uint8_t GPS_successful_flag;
uint8_t fangchai_flag;
uint8_t fangchai_state;
uint8_t only_one_flag;
uint8_t only_one_flag1;
extern uint16_t fangchai_time;
extern uint8_t taglist_num;
uint16_t tagseq;
extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM];
extern uint8_t yundong_state;
extern uint16_t yundong_time;
extern uint8_t tagbat_list[ANC_MAX_NUM];
extern TIM_HandleTypeDef htim3;
extern uint8_t beep_state;
extern uint8_t air780_state;
void Stop_Mode_Poll()
{
    if(only_one_flag==0)
@@ -394,9 +346,11 @@
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);    
        Radio.Sleep();
        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
        dwt_entersleep();
    }
}
void Stop_Mode_chulelora_Poll()//关掉除了lora外的
void Stop_Mode_chulelora_Poll()//关掉除了uwb外的
{
    if(only_one_flag1==0)
    {
@@ -410,7 +364,9 @@
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
        dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
        dwt_entersleep();
    }
}
extern uint16_t testlorarecve;
@@ -441,170 +397,24 @@
        uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num);
        memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2);
}
//void Main_Poll()
//{
//    u16 uwbchecksum;
//    IdleTask();
//    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸
//    {
//        if(air780_state>=2)
//        {
//            HAL_NVIC_SystemReset();
//        }
//        fangchai_flag=1;
//        yundong_state=0;
//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
//        {
//            if(bat_percent>90)
//            {
//                powerled = RED;
//                gpsled = LEDOFF;
//                uwbled = LEDOFF;
//                loraled = LEDOFF;
//                chongman_flag=1;
//            }
//            else
//            {
//                powerled = RED;
//            }
//        }
//        else
//        {chongman_flag=0;}
//        GPS_Poll();
//        Internet_Poll();
//        HIDO_TimerPoll();
//        HIDO_ATLitePoll();
//        UDPClient_Poll();
//        if(fangchai_time>g_com_map[CHAICHUGPS_HZ])
//        {
//            fangchai_time=0;
//            if(GPS_successful_flag)
//            {
//                UDPClient_UploadGPS((char*)GPS_data);
//            }
//            else
//            {
//                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//            }
//        }
//    }
//    else//设备没被拆卸
//    {
//        fangchai_flag=0;
//        if(fangchai_state>=2)
//        {
//            HAL_NVIC_SystemReset();
//        }
//        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
//        {   yundong_state=0;
//            PowerLedTask();
//            DBG_Poll();
//            IdleTask();
//            Internet_Poll();
//            HIDO_TimerPoll();
//            HIDO_ATLitePoll();
//            UDPClient_Poll();
//            uwbled=LEDOFF;
//        }
//        else//没有5V输入
//        {
//            if(nomove_flag)//静止状态
//            {
//                yundong_state=0;
//                Stop_Mode_Poll();
//                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
//            }
//            else//运动状态
//            {
//                if(yundong_state==0)
//                {Radio.Rx(0);}
//                yundong_state=1;
//                GPS_Poll();
//                Internet_Poll();
//                HIDO_TimerPoll();
//                HIDO_ATLitePoll();
//                UDPClient_Poll();
////                taglist_num=5;
//                if(taglist_num>0)
//                {
//                    if(air780_state>=2)
//                    {
//                        HAL_NVIC_SystemReset();
//                    }
//                    if(yundong_time>=YUNDONG_UWB_TIME)
//                    {
//                        air780_state=0;
//                        yundong_time=0;
//                        Uwb_Zubao_Poll();
//                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
////                        loraled=BLUE;
//                        taglist_num=0;
//                    }
//                }
//                else
//                {
//                    if(g_com_map[GPS_HZ]==1)
//                    {
//                        if(yundong_time>=g_com_map[GPS_HZ])
//                        {
//                            yundong_time=0;
//                            if(GPS_successful_flag)
//                            {
//                                UDPClient_UploadGPS((char*)GPS_data);
////                                loraled=GREEN;
//                            }
//                            else
//                            {
//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
////                                loraled=WHITE;
//                            }
//                        }
//                    }
//                    else
//                    {
//                        if(yundong_time>=60&&air780_state==0)
//                        {
//                            air780_state=1;
//                            yundong_time=0;
//                            if(GPS_successful_flag)
//                            {
//                                UDPClient_UploadGPS((char*)GPS_data);
////                                loraled=GREEN;
//                            }
//                            else
//                            {
//                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
////                                loraled=WHITE;
//                            }
//                        }
//                        if(yundong_time>=30&&air780_state==1)
//                        {
//                            air780_state=2;
//                            yundong_time=0;
//                            Stop_Mode_chulelora_Poll();
//                        }
//                        if(air780_state==2)
//                        {
//                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
//                        }
//                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
//                        {
//                            HAL_NVIC_SystemReset();
//                        }
//                    }
//                }
//            }
//        }
//    }
//}
extern uint16_t testlorarecve;
void Main_Poll()
{
    u16 uwbchecksum;
    IdleTask();
    HAL_IWDG_Refresh(&hiwdg);
    if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
    {   yundong_state=0;
        PowerLedTask();
        DBG_Poll();
        IdleTask();
        Internet_Poll();
        HIDO_TimerPoll();
        HIDO_ATLitePoll();
        UDPClient_Poll();
    }
    else
    {
    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。  然后10分钟发送一次定位信息,和XTB,其他时候休眠。
    {
        if(air780_state>=2)
@@ -613,23 +423,6 @@
        }
        fangchai_flag=1;
        yundong_state=0;
        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
        {
            if(bat_percent>90)
            {
                powerled = RED;
                gpsled = LEDOFF;
                uwbled = LEDOFF;
                loraled = LEDOFF;
                chongman_flag=1;
            }
            else
            {
                powerled = RED;
            }
        }
        else
        {chongman_flag=0;}
        if(fangchai_state==0||fangchai_state==1)
        {
            GPS_Poll();
@@ -673,29 +466,26 @@
        {   
            HAL_NVIC_SystemReset();
        }
        if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测
        {   yundong_state=0;
            PowerLedTask();
            DBG_Poll();
            IdleTask();
            Internet_Poll();
            HIDO_TimerPoll();
            HIDO_ATLitePoll();
            UDPClient_Poll();
            uwbled=LEDOFF;
        }
        else//没有5V输入
        {
            if(nomove_flag)//静止状态
            if(nomove_flag/*&&zuihoufasong_falg*/)//静止状态
            {
                yundong_state=0;
                if(sleep_time>12)
                {
                Stop_Mode_Poll();
                HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
                if(sleep_time>600)
                {HAL_NVIC_SystemReset();}
                }
                else
                {
                Internet_Poll();
                HIDO_TimerPoll();
                HIDO_ATLitePoll();
                UDPClient_Poll();
                }
            }
            else//运动状态
            {
                if(yundong_state==0)
                {Radio.Rx(0);}
            else
            {
                yundong_state=1;               
                GPS_Poll();
                Internet_Poll();
@@ -714,67 +504,33 @@
                        air780_state=0;
                        yundong_time=0;
                        Uwb_Zubao_Poll();
                        UDPClient_UploadGPS((char*)GPS_data);
                        HexToAsciiSendUDP(uwb_send,19+5*taglist_num);
//                        loraled=BLUE;
                        taglist_num=0;
                    }
                }
                else
                {
                    if(g_com_map[GPS_HZ]==1)
                    {
//                    if(g_com_map[GPS_HZ]==1)
//                    {
                        if(yundong_time>=g_com_map[GPS_HZ])
                        {
                            yundong_time=0;
                            if(GPS_successful_flag)
                            {
                                UDPClient_UploadGPS((char*)GPS_data);
//                                loraled=GREEN;
                            }
                            else
                            {
                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//                                loraled=WHITE;
                            }
                        }
                    }
                    else
                    {
                        if(yundong_time>=60&&air780_state==0)
                        {
                            air780_state=1;
                            yundong_time=0;
                            if(GPS_successful_flag)
                            {
                                UDPClient_UploadGPS((char*)GPS_data);
//                                loraled=GREEN;
                            }
                            else
                            {
                                Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL);
//                                loraled=WHITE;
                            }
                        }
                        if(yundong_time>=30&&air780_state==1)
                        {
                            air780_state=2;
                            yundong_time=0;
                            Stop_Mode_chulelora_Poll();
                        }
                        if(air780_state==2)
                        {
                            HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
                        }
                        if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2)
                        {
                            HAL_NVIC_SystemReset();
                        }
                    }
                }
            }
        }
            }
    }
}
}
//*/
////以上是源代码,被拆除时间接性关闭4G