Blame view

app/gui/oven_control/ovenstatics.h 12.7 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"
20fcaaf68   고영탁   에러 마스크 별도 적용
11
  #include "config.h"
652e9cd54   고영탁   Merge
12
20fcaaf68   고영탁   에러 마스크 별도 적용
13
14
  
  #define MAX_MODEL_COUNT 12
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
15
  #define SYS_STATE_MAX 4
652e9cd54   고영탁   Merge
16
652e9cd54   고영탁   Merge
17
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
18
  #define SYS_ERR_MAX     10
652e9cd54   고영탁   Merge
19
29a9d2966   고영탁   에러 전체 활성화
20
21
  #define SYS_ERROR_MASK  0x03ff
  #define COMM_ERROR_MASK 0x001f
81c6fca05   고영탁   고객사 요청 에러 예외 사항 추가
22
  #define SENSOR_ERROR_MASK   0x0213
65aaca7a6   고영탁   GUI V0.3.2
23
  #define STATE_ERROR_MASK    0x0018
9e48a5d01   고영탁   에러 체크 해제
24
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
25
26
27
28
29
30
31
  #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   고영탁   에러 상황 추가
32
  #define STATE_ERR_MAX      5
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  
  
  #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차 구현
59
  /*#define LOAD_STATE2_DV                                  0x0001
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  #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차 구현
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
  #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   고영탁   에러 처리 루틴 및 에러 처리 ...
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  
  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   고영탁   엔지니어 모드 디버깅
116
      COMM_ERR_LOWERFAN
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
117
  };
7ae804762   고영탁   에러 상황 추가
118
119
120
121
122
123
124
  enum state_err_id{
      STATE_ERR_BUNNER1                    =0,
      STATE_ERR_BUNNER2                    ,
      STATE_ERR_BUNNER3                    ,
      STATE_ERR_UPPERFAN                   ,
      STATE_ERR_LOWERFAN
  };
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  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,
a7e8cc0aa   고영탁   버그 및 동작 개선
140
      error_type_olnystopcmd,
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
141
142
143
144
145
146
147
148
149
      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,
a7e8cc0aa   고영탁   버그 및 동작 개선
150
151
152
      error_type_chkclrstopcmd,
      error_type_popclrstopcmd,
      error_type_engclrstopcmd,
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
153
154
155
156
157
158
159
160
161
162
  };
  
  
  enum wash_mode_type{
      wash_mode_nocleanser=1,
      wash_mode_simple,
      wash_mode_standard,
      wash_mode_strong,
      wash_mode_highspeed
  };
652e9cd54   고영탁   Merge
163
3f5f5d4ce   고영탁   디버깅 요청 사항 적용
164
165
166
167
168
  enum water_level_state{
      water_level_normal = 0,
      water_level_low,
      water_level_high
  };
6a965b9f1   고영탁   엔지니어 모드 2차 구현
169
170
171
172
173
174
175
176
  
  typedef union
  {
    uint32_t d32;
    struct
    {
      uint32_t reserved         : 9;
      uint32_t door_open          : 1;
f8661a150   고영탁   엔지니어 모드 디버깅
177
      uint32_t wsv_open     : 1;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
178
179
180
181
182
183
184
185
      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   고영탁   에러 수정
186
187
188
189
190
  typedef struct _popup_list_item{
      QString strTitle;
      QString strDesc;
      bool bNeedClear;
  }popup_list_item;
42410a75c   김태훈   오타 수정
191
  class OvenStatistics : public QObject
652e9cd54   고영탁   Merge
192
193
194
  {
      Q_OBJECT
  public:
14a73498f   김태훈   소스 코드 정리
195
      ServiceData* srvdata;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
196
538041ab9   김태훈   소스 코드 구조 개선
197
      static OvenStatistics* getInstance(QObject* parent = 0);
652e9cd54   고영탁   Merge
198
      static void destroy();
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
199
200
      bool getNeedErrorClear();
      void clearNeedErrorClear();
6a965b9f1   고영탁   엔지니어 모드 2차 구현
201
202
203
      realtime_data getPartsRealtimeData(void);
      uint8_t getSensorTypeByIdx(uint16_t idx);
      type_temp getCurSensorValueByIdx(uint16_t idx);
91480de3c   고영탁   센서 실시간 데이터 리셋 기능 추가
204
      void resetSensorHistory(void);
652e9cd54   고영탁   Merge
205
206
  
  private:
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
207
20fcaaf68   고영탁   에러 마스크 별도 적용
208
209
210
211
      const uint32_t sys_err_mask[MAX_MODEL_COUNT] =          {0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff,0x03ff};
      const uint32_t comm_err_mask[MAX_MODEL_COUNT] =    {0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f,0x001f};
      const uint32_t sensor_err_mask[MAX_MODEL_COUNT] =    {0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213,0x0213};
      const uint32_t state_err_mask[MAX_MODEL_COUNT] =       {0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018,0x0018};
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
212
      const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
213
214
                                                          {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
a7e8cc0aa   고영탁   버그 및 동작 개선
215
216
217
218
                                                          {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,
                                                          error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_OFF state
                                                          {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,
                                                          error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
219
220
221
                                                          {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   고영탁   팝업 관련 동작 정의 수정
222
      const error_exe_type comm_err_type_def[SYS_STATE_MAX][COMM_ERR_MAX] ={  //30048
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
223
                                                         {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF
a7e8cc0aa   고영탁   버그 및 동작 개선
224
225
                                                         {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
                                                         {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
226
227
                                                         {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON
      };
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
228
229
      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
a7e8cc0aa   고영탁   버그 및 동작 개선
230
231
                                                         {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
                                                         {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
232
                                                         {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON
7ae804762   고영탁   에러 상황 추가
233
      };
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
234
      const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
235
236
                                                          {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
a7e8cc0aa   고영탁   버그 및 동작 개선
237
                                                          {error_type_engclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
238
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state
a7e8cc0aa   고영탁   버그 및 동작 개선
239
                                                          {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
3fd8255a1   고영탁   팝업 관련 동작 정의 수정
240
                                                          error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
241
242
243
                                                          {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차 구현
244
245
246
247
      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   고영탁   에러 처리 루틴 및 에러 처리 ...
248
6a965b9f1   고영탁   엔지니어 모드 2차 구현
249
      type_temp curSensorValue[MAX_LOG_SENSOR];
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
250
42410a75c   김태훈   오타 수정
251
      static OvenStatistics* p_singletonInstance;
652e9cd54   고영탁   Merge
252
253
      UdpHandler *udp;
      Oven* oven;
20fcaaf68   고영탁   에러 마스크 별도 적용
254
      Config* cfg;
652e9cd54   고영탁   Merge
255
256
      oven_control_t control;
      oven_state_t state;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
257
      error_item* m_pLastErrItem;
a7e8cc0aa   고영탁   버그 및 동작 개선
258
      QMap<uint32_t, QWidget *> m_mapPopupList;
cefd483e4   고영탁   에러 수정
259
260
      uint32_t m_nLastPopupidx;
      bool m_bPopupShow;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
261
652e9cd54   고영탁   Merge
262
263
264
265
  
  
      bool curdoorstate;
      uint16_t curSysErrorState;
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
266
267
      uint16_t curCommErrorState;
      uint16_t curSensorErrorState;
d66410abd   고영탁   에러 팝업 형태 변경
268
      uint16_t curControlErrorState;
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
269
270
      bool bNeedErrorClear;
      bool bDataRefreshed;
6a965b9f1   고영탁   엔지니어 모드 2차 구현
271
      realtime_data realdata;
cefd483e4   고영탁   에러 수정
272
42410a75c   김태훈   오타 수정
273
274
      explicit OvenStatistics(QObject* parent);
      ~OvenStatistics();
652e9cd54   고영탁   Merge
275
      void processSystemError(uint16_t errflag,time_t ltime);
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
276
277
      void processCommError(uint16_t errflag,time_t ltime);
      void processSensorError(uint16_t errflag, time_t ltime);
7ae804762   고영탁   에러 상황 추가
278
      void processStateError(uint16_t errflat, time_t ltime);
f8661a150   고영탁   엔지니어 모드 디버깅
279
      void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc,const QString &MsgTitle,  time_t ltime);
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
280
6a965b9f1   고영탁   엔지니어 모드 2차 구현
281
652e9cd54   고영탁   Merge
282
283
  public slots:
      void onDataChanged();
c50beef02   고영탁   에러 처리 루틴 및 에러 처리 ...
284
      void oneSecTimerFired(void);
a7e8cc0aa   고영탁   버그 및 동작 개선
285
      void onErrorPopupClosed(int erridx);
652e9cd54   고영탁   Merge
286
287
288
  };
  
  #endif // OVENSTATICS_H