| | |
| | | * 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)) |
| | |
| | | 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"); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | 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 : |
| | |
| | | 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(); |
| | |
| | | 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; |
| | |
| | | Power_GPS_LoraOn(); |
| | | l_eGPSState = GPS_ON; |
| | | GPSDateTime=lp_time; |
| | | if(IsTypecCActive() == HIDO_FALSE)//如果有5v输入的话不关灯。 |
| | | { |
| | | powerled=LEDOFF; |
| | | Set4LEDColor(powerled,loraled,gpsled,uwbled); //关一下电源灯,防止gps突然工作不进入休眠,电源灯常量 |
| | | } |
| | | |
| | | } |
| | | |
| | | break; |
| | |
| | | { |
| | | 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; |
| | |
| | | { |
| | | 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; |
| | |
| | | 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 |
| | |
| | | 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(); |
| | | } |
| | | |
| | | } |