forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-06 64cf4a779ef5c16c79bbbee27370169dc8d69499
Soft/system_run_fun.c
@@ -7,9 +7,10 @@
#include "extern_rtc.h"
#include "key.h"
#include "lcd_io_api.h"
#include "wireless_remote_comm.h"
RS485_START_REASON   start_rs485_g = RS485_START_REASON_NONE;
WRC_START_MEANS   start_wrc_g = WRC_MEANS_NONE;
void allGpioInit(void)
@@ -148,8 +149,93 @@
   }
   
   //·§ÃÅÔËÐгõʼ»¯
   ValveRunParaInit();
   ValveRunParaInit(equipment_basic_inf_g.valve_type);
   
   
}
void sysRunFunCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p,sClockBCD sys_clockBCD_in)
{
   uint8_t first_time[2] = {0,0};
   uint16_t   IntervalTime;
   /*rs485²É¼¯Æô¶¯¿ØÖÆ£¬ °´¼ü¡¢¶¨Ê±¡¢Òì³£±¨¾¯¡¢¼Ç¼´æ´¢ËùÐèµÈ*/
      /*Сʱ¡¢Ìì¡¢ÔÂ*/
   if((sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0)) //Сʱ¼Ç¼´æ´¢µã
      start_rs485_g = RS485_START_REASON_RECORD;
   if((sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//Ìì¼Ç¼´æ´¢µã
      start_rs485_g = RS485_START_REASON_RECORD;
   if((sys_clockBCD_in.day == 1)&&(sys_clockBCD_in.hour == 0)&&(sys_clockBCD_in.min == 0)&&(sys_clockBCD_in.sec == 0))//ԼǼ´æ´¢µã
      start_rs485_g = RS485_START_REASON_RECORD;
   if(__SYS_STATUS_BYTES_GET(power_state) == SET)
      IntervalTime = wrc_para_sizhu_g.ext_power_data_interval;
   else
      IntervalTime = wrc_para_sizhu_g.bat_power_data_interval;
   if(IntervalTriggerHandle(sys_clockBCD_in,IntervalTime,first_time)==SET)
      start_rs485_g = RS485_START_REASON_RECORD;
   if(start_rs485_g  != RS485_START_REASON_NONE){
      start_rs485_g = RS485_START_REASON_NONE;
      sys_fun_run_ctrl_p->rs485_ctrl_flag.start_flag = SET;
   }
   /*·§¿Ø¿ØÖÆ£¬·§¿ØÍ¨¹ý°´¼ü»òÕßÖ¸Áî¡¢Òì³£µÈ¿ØÖÆ£¬ÐèÒª²Ù×÷ʱֱ½Óµ÷ÓÃValveCtrlOrderº¯Êý¼´¿É£¬²»ÔÚ´Ë´¦Æô¶¯*/
   /*Ô¶³ÌͨѶÆô¶¯¿ØÖÆ£¬°´¼ü¡¢¼ä¸ô¡¢ÖÜÆÚ¡¢Òì³£±¨¾¯µÈ*/
   if((wrc_para_sizhu_g.time_start_type&WRC_TIME_START_INTERVAL)==WRC_TIME_START_INTERVAL){
      for(uint16_t count_i=0;count_i<wrc_para_sizhu_g.timing_send_num;count_i++){
         if(count_i>=12)
            break;  //ʱ¼ä×éÊý×î´ó12¡£³¬¹ýÔòÍ˳ö
         if((sys_clockBCD_in.hour==wrc_para_sizhu_g.timing_send_time_BCD[count_i][0])&&(sys_clockBCD_in.min==wrc_para_sizhu_g.timing_send_time_BCD[count_i][1])&&(sys_clockBCD_in.sec==0))
            start_wrc_g = WRC_MEANS_RTC_TIMING;
      }
   }
   if((wrc_para_sizhu_g.time_start_type&WRC_TIME_START_TIMING)==WRC_TIME_START_TIMING){
      if(__SYS_STATUS_BYTES_GET(power_state) == SET)
         IntervalTime = wrc_para_sizhu_g.ext_power_send_interval;
      else
         IntervalTime = wrc_para_sizhu_g.bat_power_send_interval;
      if(IntervalTriggerHandle(sys_clockBCD_in,IntervalTime,wrc_para_sizhu_g.send_first_time_BCD)==SET)
         start_wrc_g = WRC_MEANS_RTC_INTERVAL;
   }
   if(start_wrc_g  != WRC_MEANS_NONE){
      start_wrc_g = WRC_MEANS_NONE;
      sys_fun_run_ctrl_p->wrc_ctrl_flag.start_flag = SET;
   }
}
//ϵͳ±£³ÖÔËÐв»ÐÝÃß״̬£¬·µ»ØRESET´ú±í¿ÉÒÔÐÝÃß
FlagStatus SysKeepRunningStatusGet(FUN_START_CTRL_PARA_T sys_fun_run_ctrl_in)
{
   if(__SYS_STATUS_BYTES_GET(power_state) == SET) //Í⹩µç״̬Ï¿ÉÒÔ²»ÐÝÃß
      return SET;
   if(sys_fun_run_ctrl_in.rs485_ctrl_flag.running_flag ==SET)
      return SET;
//   if(sys_fun_run_ctrl_in.valve_ctrl_flag.running_flag ==SET) //·§¿ØÔËÐпÉÒÔÐÝÃß
//      return SET;
   if(sys_fun_run_ctrl_in.wrc_ctrl_flag.running_flag ==SET)
      return SET;
   return RESET;
}