Blame view

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