forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-31 08b3909c40a192778719c6262bbee4745682948d
Soft/sizhu_ctrl_word.h
@@ -1,7 +1,7 @@
#ifndef _SIZHU_CTRL_WORD_H
#define _SIZHU_CTRL_WORD_H
#include "define_all.h"
#include "extern_rtc.h"
#define __SYS_STATUS_BYTES_GET(__HANDLE__) (system_status_word_g.status_word.__HANDLE__)
@@ -21,17 +21,35 @@
  } while (0)
#define __SYS_ALARM_BYTES_SET(__HANDLE__, __FLAG__) (system_alarm_word_g.alarm_word.__HANDLE__ = __FLAG__)
//ûÓжÔӦ״̬×ֵı¨¾¯×Öµ¥¶ÀÖÃλ
#define __SYS_ALARM_BYTES_SET(__HANDLE__,__ID__)                            \
  do                                                              \
  {                                                               \
    if(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__)){                \
         system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET;      \
         if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){             \
            if(AlarmCntIncrease(__ID__) ==SET){                                          \
               system_alarm_word_g.alarm_word.__HANDLE__ = SET;                  \
               AlarmTriggerWrcFlag = SET;                                                   \
            }                                                                                          \
         }                                                                                        \
         Alarm_List_Node_PushBack(&pList_head,__ID__);                           \
      }                                                                                             \
  } while (0)
//ÒÔÏÂ״̬ÖÃλÊʺϵ¥bit״̬ÖÃ룬²»Êʺ϶àbit״̬£¬±ÈÈç·§ÃÅ״̬ռ¶à¸öbit£¬²»ÄÜÓÃ
//״̬×ֺͱ¨¾¯×ÖͬʱÖÃ룬µ«Ö»Êʺϵ¥bit״̬ÖÃ룬²»Êʺ϶àbit״̬£¬±ÈÈç·§ÃÅ״̬ռ¶à¸öbit£¬²»ÄÜÓá£ÁíÍâÓÐЩ±¨¾¯Ã»ÓжÔӦ״̬×ֵ쬱ÈÈ縴λ¡¢²ÎÊýÐ޸ĵȱ¨¾¯£¬ÔòÒ²²»ÄÜÓã¬ÐèÒªµ¥¶À´¦Àí
#define __SYS_STATUS_ALARM_BYTES_SET(__HANDLE__,__ID__)                  \
  do                                                              \
  {                                                               \
    if ((__SYS_STATUS_BYTES_GET(__HANDLE__) != SET)&&(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__))){                \
      system_status_word_g.status_word.__HANDLE__ =                              \
      system_status_word_g.status_word.__HANDLE__  = SET;                           \
         system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET;      \
         if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){             \
               system_alarm_word_g.alarm_word.__HANDLE__ = SET; }          \
            if(AlarmCntIncrease(__ID__) ==SET){                                          \
               system_alarm_word_g.alarm_word.__HANDLE__ = SET;                  \
               AlarmTriggerWrcFlag = SET;                                                   \
            }                                                                                          \
         }                                                                                        \
         Alarm_List_Node_PushBack(&pList_head,__ID__);                           \
      }                                                                                             \
  } while (0)
@@ -41,7 +59,7 @@
   
#define __SYS_ALARM_CTL_BYTES_GET(__HANDLE__)   (system_alarm_ctrl_word_g.alarm_ctl_word.__HANDLE__)   
   
#define __SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__)   (system_alarm_report_ctrl_word_g.alarm_report_ctrl_word.__HANDLE__)
#define __SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__)   (system_alarm_report_ctrl_word_g.alarm_ctl_word.__HANDLE__)
   
#define   SYSTEM_SINGLE_BIT_SET1                     0x0001
@@ -185,7 +203,7 @@
} SYS_ALARM_VALVE_T; // ±¨¾¯ºÍ¹Ø·§ÀàÐÍID
#pragma pack(1)
/*********************************ϵͳ״̬×ÖÏà¹Ø**************************************/
/*********************************ϵͳ״̬×ÖÏà¹Ø£¬×´Ì¬×ÖÈç¹ûÓжÔÓ¦±¨¾¯×Ö£¬ÔòÃû³ÆÐèÒªÒ»Ñù**************************************/
typedef struct system_status_word_inf 
{
  uint16_t lcd_mode : 3;
@@ -317,9 +335,9 @@
   uint16_t calibration_mode: 1;
   uint16_t account_open: 1;
   uint16_t  : 2;
   uint16_t show_balance : 1;
   uint16_t show_price: 1;
   uint16_t show_logo : 1;
   uint16_t no_show_balance : 1;
   uint16_t no_show_price: 1;
   uint16_t no_show_logo : 1;
   uint16_t : 3;
   uint16_t billing_type: 2;   
   
@@ -335,7 +353,7 @@
/*********************************¹¦ÄÜ¿ØÖÆ×ÖÏà¹Ø**************************************/
/*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø**************************************/
/*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø£¬×´Ì¬×ÖÈç¹ûÓжÔÓ¦±¨¾¯×Ö£¬ÔòÃû³ÆÐèÒªÒ»Ñù**************************************/
typedef struct
{
  uint16_t : 4; // Ô¤Áô
@@ -449,15 +467,21 @@
  SYS_ALARM_T alarm_ctl_word;
}SYSTEM_ALARM_CTRL_WORD_T; // ±¨¾¯¿ØÖÆ×Ö
typedef union
{
  uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1];
  SYS_ALARM_T alarm_report_ctrl_word;
} SYSTEM_ALARM_REPORT_CTRL_WORD_T; // ±¨¾¯Éϱ¨¿ØÖÆ
//typedef union
//{
//  uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1];
//  SYS_ALARM_T alarm_report_ctrl_word;
//} SYSTEM_ALARM_REPORT_CTRL_WORD_T; // ±¨¾¯Éϱ¨¿ØÖÆ   ¸ñʽ¸ú±¨¾¯¿ØÖÆ×ÖÒ»Ñù£¬ËùÒÔ²»ÓÃÔÙ¶¨ÒåÒ»¸ö½á¹¹ÌåÁË
/*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø**************************************/
/*********************************¹Ø·§¿ØÖÆ×ÖÏà¹Ø**************************************/
//¹Ø·§¿ØÖÆ×Ö2λ±ê־붨Òå
#define      VALVE_CTRL_FLAG_NONE                  0x00
#define      VALVE_CTRL_FLAG_ONLY_CLSOSE         0x01
#define      VALVE_CTRL_FLAG_LOCK_AND_CLSOSE   0x03
//¹Ø·§¿ØÖÆ×ֽṹÌ嶨Òå
typedef struct
{
  uint16_t gprs_cmd_need_close_valve_flag : 1; // Ô¶´«ÃüÁî
@@ -712,19 +736,59 @@
} VALVE_CTL_BYTES_T; // ¹Ø·§¿ØÖÆ×Ö
// ¹Ø·§×Ö³¤¶È
#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \
                          sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) +      \
                          sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) +            \
                          sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T))
#define VALVE_CTL_LEN sizeof(VALVE_CTL_BYTES_T)
//#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \
//                          sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) +      \
//                          sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) +            \
//                          sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T))
typedef union
{
   uint16_t valve_ctrl_bytes_union[VALVE_CTL_LEN >> 1];
   VALVE_CTL_BYTES_T    valve_ctrl_bytes;
}VALVE_CTL_BYTES_UNION_T;
   
//±¨¾¯´ÎÊý¿ØÖƽṹÌå
#define   DAY_ALARM_TIMES   3
typedef struct
{
   SYS_ALARM_VALVE_T   alarm_id;
   uint16_t   alarm_word_offset_bit;  //¶ÔÓ¦±¨¾¯×ֵį«ÒÆÁ¿
   uint16_t   close_valve_word_offset_bit; //¶ÔÓ¦¹Ø·§×ֵį«ÒÆÁ¿
   uint8_t day_times;  //ÿÌìÉϱ¨´ÎÊý
   uint16_t   day_cnt;
} ALARM_CTRL_PARA_T; // ¹Ø·§¿ØÖÆ×Ö
#pragma pack()
extern   FlagStatus   AlarmTriggerWrcFlag;
extern SYSTEM_STATUS_WORD_T           system_status_word_g;
extern SYSTEM_FUNCTION_CTRL_WORD_T    system_function_ctrl_word_g;
extern SYSTEM_ALARM_WORD_T            system_alarm_word_g;
extern   SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬Éϱ¨ÍêÇå³ý
extern   SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬ÅжÏÍê·§¿ØÖ®ºóÇåÁã
extern SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_g;
extern SYSTEM_ALARM_REPORT_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
extern VALVE_CTL_BYTES_T valve_ctl_bytes_g;
extern SYSTEM_ALARM_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
extern VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g;
FlagStatus   AlarmCntIncrease(SYS_ALARM_VALVE_T alarm_id);
void   AlarmCntClearAll(void);
void   EveryDayClearAlarmCnt(const sClockBCD sys_clockBCD_in );
void SysAlarmCtrlPro(void);
#endif