| | |
| | | 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 * |
| | | *******************************************************************************/ |
| | |
| | | // 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; |
| | |
| | | } |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | // 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) |
| | | { |
| | |
| | | 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;} |
| | |
| | | } |
| | | |
| | | } |
| | | 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) |
| | |
| | | |
| | | 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) |
| | | { |
| | |
| | | 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; |
| | |
| | | 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) |
| | |
| | | } |
| | | 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(); |
| | |
| | | { |
| | | 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(); |
| | |
| | | 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 |