Blame view

app/gui/oven_control/ovenstatics.h 11.6 KB
652e9cd54   고영탁   Merge
1
2
3
4
5
  #ifndef OVENSTATICS_H
  #define OVENSTATICS_H
  
  #include <QObject>
  #include <time.h>
cefd483e4   고영탁   에러 수정
6
  #include <qmap.h>
cf0ca80f6   김태훈   app_oven_control를...
7
  #include "../../app-prime-modbus/include/all_share.h"
652e9cd54   고영탁   Merge
8
9
  #include "udphandler.h"
  #include "oven.h"
14a73498f   김태훈   소스 코드 정리
10
  #include "servicedata.h"
652e9cd54   고영탁   Merge
11
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
12
  #define SYS_STATE_MAX 4
652e9cd54   고영탁   Merge
13
652e9cd54   고영탁   Merge
14
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
15
  #define SYS_ERR_MAX     10
652e9cd54   고영탁   Merge
16
9e48a5d01   고영탁   에러 체크 해제
17
18
19
20
  #define SYS_ERROR_MASK  0
  #define COMM_ERROR_MASK 0
  #define STATE_ERROR_MASK    0
  #define SENSOR_ERROR_MASK   0
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
21
22
23
24
25
26
27
  #define SYS_ERR_MASK_ERR_CLEAR_COOKING          0x00ff
  #define SYS_ERR_MASK_ERR_CLEAR_NONCOOKING  0x00ff
  #define SYS_ERR_MASK_COOKING             0x00ff
  #define SYS_ERR_MASK_NONCOOKING     (SYS_ERR_OVNE_TEMP_ALARM)
  
  
  #define COMM_ERR_MAX    5
7ae804762   고영탁   에러 상황 추가
28
  #define STATE_ERR_MAX      5
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  
  
  #define COMM_ERR_MASK_ERR_CLEAR_COOKING              0x0000
  #define COMM_ERR_MASK_ERR_CLEAR_NONCOOKING      0x0000
  
  #define COMM_ERR_MASK_COOKING         0x0000
  #define COMM_ERR_MASK_NONCOOKING 0x0000
  
  
  #define SENSOR_ERR_MAX      10
  
  
  #define SENSOR_ERR_MASK_ERR_CLEAR       0x0000
  #define SENSOR_ERR_MASK_COOKING          0x0000
  #define SENSOR_ERR_MASK_NONCOOKING  0x0000
  
  #define MAKE_MASK(MASK)             (1<<MASK)
  
  #define LOAD_STATE1_UPPER_BUNNER             0x0001
  #define LOAD_STATE1_LOWER_BUNNER           0x0002
  #define LOAD_STATE1_STEAM_BUNNER            0x0004
  #define LOAD_STATE1_UPPER_FAN                     0x0008
  #define LOAD_STATE1_LOWER_FAN                   0x0010
  #define LOAD_STATE1_STEAM_FAN                    0x0020
  #define LOAD_STATE1_CONVEC_FAN1                            0x0040
  #define LOAD_STATE1_CONVEC_FAN2                            0x0080
6a965b9f1   고영탁   엔지니어 모드 2차 구현
55
  /*#define LOAD_STATE2_DV                                  0x0001
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  #define LOAD_STATE2_CFAN                              0x0002
  #define LOAD_STATE2_WSV                               0x0004
  #define LOAD_STATE2_QNV                               0x0008
  #define LOAD_STATE2_SSV                                 0x0010
  #define LOAD_STATE2_SNV                                 0x0020
  #define LOAD_STATE2_ERRLED                           0x0040
  #define LOAD_STATE2_ATVLED                           0x0080
  #define LOAD_STATE2_HL                                    0x0100
  #define LOAD_STATE2_DP                                   0x0200
  #define LOAD_STATE2_SSP                                  0x0400
  #define LOAD_STATE2_UNP                                 0x0800
  #define LOAD_STATE2_HT1                                  0x1000
  #define LOAD_STATE2_HT2                                  0x2000
  #define LOAD_STATE2_HDM                                0x4000
6a965b9f1   고영탁   엔지니어 모드 2차 구현
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  #define LOAD_STATE2_ST1                                   0x8000*/
  
  
  
  #define LOAD_STATE2_DV                                  0x0001
  #define LOAD_STATE2_CFAN                              0x0002
  #define LOAD_STATE2_WSV                               0x0004
  #define LOAD_STATE2_QNV                               0x0008
  #define LOAD_STATE2_SSV                                 0x0010
  #define LOAD_STATE2_SNV                                 0x0020
  #define LOAD_STATE2_HL                                    0x0040
  #define LOAD_STATE2_DP                                   0x0080
  #define LOAD_STATE2_SSP                                  0x0100
  #define LOAD_STATE2_UNP                                 0x0200
  #define LOAD_STATE2_HDM                                0x0400
  #define LOAD_STATE2_SGNV                               0x0800
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  
  enum sys_state_type{
      SYS_OFF_COOK_OFF=0,
      SYS_ON_COOK_OFF=1,
      SYS_ON_COOK_ON=2,
      SYS_OFF_COOK_ON=3 //unnormal state
  };
  
  enum sys_error_id{
      SYS_ERR_FIRE_TRIGGER1               =0,
      SYS_ERR_FIRE_TRIGGER2               ,
      SYS_ERR_FIRE_TRIGGER3               ,
      SYS_ERR_OVNE_TEMP_ALARM     ,
      SYS_ERR_QUN_TEMP_ALARM       ,
      SYS_ERR_CENTER_TEMP_ALARM  ,
      SYS_ERR_WALL_TEMP_ALARM      ,
      SYS_ERR_STAM_TEMP_ALARM      ,
      SYS_ERR_WATER_LEVEL_FAIL         ,
      SYS_ERR_WATER_SPLY_FAIL
  };
  
  enum comm_err_id{
      COMM_ERR_BUNNER1                    =0,
      COMM_ERR_BUNNER2                    ,
      COMM_ERR_BUNNER3                    ,
      COMM_ERR_UPPERFAN                   ,
f8661a150   고영탁   엔지니어 모드 디버깅
112
      COMM_ERR_LOWERFAN
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
113
  };
7ae804762   고영탁   에러 상황 추가
114
115
116
117
118
119
120
  enum state_err_id{
      STATE_ERR_BUNNER1                    =0,
      STATE_ERR_BUNNER2                    ,
      STATE_ERR_BUNNER3                    ,
      STATE_ERR_UPPERFAN                   ,
      STATE_ERR_LOWERFAN
  };
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
  enum sensor_err_id{
      SENSOR_ERR_SENSOR_1                     =0,
      SENSOR_ERR_SENSOR_2                     ,
      SENSOR_ERR_SENSOR_3                     ,
      SENSOR_ERR_SENSOR_4                     ,
      SENSOR_ERR_SENSOR_5                     ,
      SENSOR_ERR_SENSOR_6                     ,
      SENSOR_ERR_SENSOR_7                     ,
      SENSOR_ERR_SENSOR_8                     ,
      SENSOR_ERR_SENSOR_9                     ,
      SENSOR_ERR_SENSOR_10
  };
  
  enum error_exe_type{
      error_type_allnone=0,
      error_type_onlypop,
      error_type_onlyeng,
      error_type_onlychk,
      error_type_popnonclr,
      error_type_engnonclr,
      error_type_clrsplit,
      error_type_chkclr,
      error_type_popclr,
      error_type_engclr,
  };
  
  
  enum wash_mode_type{
      wash_mode_nocleanser=1,
      wash_mode_simple,
      wash_mode_standard,
      wash_mode_strong,
      wash_mode_highspeed
  };
652e9cd54   고영탁   Merge
155
3f5f5d4ce   고영탁   디버깅 요청 사항 적용
156
157
158
159
160
  enum water_level_state{
      water_level_normal = 0,
      water_level_low,
      water_level_high
  };
6a965b9f1   고영탁   엔지니어 모드 2차 구현
161
162
163
164
165
166
167
168
  
  typedef union
  {
    uint32_t d32;
    struct
    {
      uint32_t reserved         : 9;
      uint32_t door_open          : 1;
f8661a150   고영탁   엔지니어 모드 디버깅
169
      uint32_t wsv_open     : 1;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
170
171
172
173
174
175
176
177
      uint32_t dv_open           : 1;
      uint32_t sgnv_open         : 1;
      uint32_t water_level    : 16;
      uint32_t snv_open    : 1;
      uint32_t qnv_open         : 1;
      uint32_t ssv_open       : 1;
    }b;
  }realtime_data;
cefd483e4   고영탁   에러 수정
178
179
180
181
182
  typedef struct _popup_list_item{
      QString strTitle;
      QString strDesc;
      bool bNeedClear;
  }popup_list_item;
42410a75c   김태훈   오타 수정
183
  class OvenStatistics : public QObject
652e9cd54   고영탁   Merge
184
185
186
  {
      Q_OBJECT
  public:
14a73498f   김태훈   소스 코드 정리
187
      ServiceData* srvdata;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
188
538041ab9   김태훈   소스 코드 구조 개선
189
      static OvenStatistics* getInstance(QObject* parent = 0);
652e9cd54   고영탁   Merge
190
      static void destroy();
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
191
192
      bool getNeedErrorClear();
      void clearNeedErrorClear();
6a965b9f1   고영탁   엔지니어 모드 2차 구현
193
194
195
      realtime_data getPartsRealtimeData(void);
      uint8_t getSensorTypeByIdx(uint16_t idx);
      type_temp getCurSensorValueByIdx(uint16_t idx);
652e9cd54   고영탁   Merge
196
197
  
  private:
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
198
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
199
      const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
200
201
202
203
204
205
206
207
208
                                                          {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_OFF state
                                                          {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
                                                          {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
                                                          {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state
                                                          };
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
209
      const error_exe_type comm_err_type_def[SYS_STATE_MAX][COMM_ERR_MAX] ={  //30048
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
210
                                                         {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
211
212
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_engnonclr,error_type_engnonclr}, //SYS_ON_COO_OFF
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
213
214
                                                         {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON
      };
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
215
216
217
218
219
      const error_exe_type state_err_type_def[SYS_STATE_MAX][STATE_ERR_MAX] ={ //30057
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_OFF
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON
7ae804762   고영탁   에러 상황 추가
220
      };
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
221
      const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
222
223
                                                          {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
                                                          error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_OFF state
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
224
225
226
227
                                                          {error_type_engnonclr,error_type_popclr,error_type_allnone,error_type_popclr,error_type_onlychk,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
                                                          {error_type_onlychk,error_type_onlychk,error_type_allnone,error_type_popclr,error_type_popclr,
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
228
229
230
                                                          {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
                                                          error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF
      };
6a965b9f1   고영탁   엔지니어 모드 2차 구현
231
232
233
234
      const uint8_t sensorTypeInfo[MAX_LOG_SENSOR] = {
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          1, 1, 2, 0, 1, 1
      }; //Type 2 is /10 value;
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
235
6a965b9f1   고영탁   엔지니어 모드 2차 구현
236
      type_temp curSensorValue[MAX_LOG_SENSOR];
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
237
42410a75c   김태훈   오타 수정
238
      static OvenStatistics* p_singletonInstance;
652e9cd54   고영탁   Merge
239
240
241
242
      UdpHandler *udp;
      Oven* oven;
      oven_control_t control;
      oven_state_t state;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
243
      error_item* m_pLastErrItem;
cefd483e4   고영탁   에러 수정
244
245
246
      QMap<uint32_t, popup_list_item> m_mapPopupList;
      uint32_t m_nLastPopupidx;
      bool m_bPopupShow;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
247
652e9cd54   고영탁   Merge
248
249
250
251
  
  
      bool curdoorstate;
      uint16_t curSysErrorState;
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
252
253
      uint16_t curCommErrorState;
      uint16_t curSensorErrorState;
d66410abd   고영탁   에러 팝업 형태 변경
254
      uint16_t curControlErrorState;
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
255
256
      bool bNeedErrorClear;
      bool bDataRefreshed;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
257
      realtime_data realdata;
cefd483e4   고영탁   에러 수정
258
42410a75c   김태훈   오타 수정
259
260
      explicit OvenStatistics(QObject* parent);
      ~OvenStatistics();
652e9cd54   고영탁   Merge
261
      void processSystemError(uint16_t errflag,time_t ltime);
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
262
263
      void processCommError(uint16_t errflag,time_t ltime);
      void processSensorError(uint16_t errflag, time_t ltime);
7ae804762   고영탁   에러 상황 추가
264
      void processStateError(uint16_t errflat, time_t ltime);
f8661a150   고영탁   엔지니어 모드 디버깅
265
      void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc,const QString &MsgTitle,  time_t ltime);
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
266
6a965b9f1   고영탁   엔지니어 모드 2차 구현
267
652e9cd54   고영탁   Merge
268
269
  public slots:
      void onDataChanged();
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
270
      void oneSecTimerFired(void);
774c1995b   고영탁   에러 팝업 투명 효과 재처리
271
      void onErrorPopupClosed(QWidget* parent);
652e9cd54   고영탁   Merge
272
273
274
  };
  
  #endif // OVENSTATICS_H