652e9cd54
고영탁
Merge
|
1
2
|
#include "ovenstatics.h"
#include <QtDebug>
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
3
4
|
#include <QApplication>
#include <QTimer>
|
652e9cd54
고영탁
Merge
|
5
6
7
|
#include "mainwindow.h"
#include "ovencontroller.h"
#include "popupwindow.h"
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
8
9
|
#include "engineermenuwindow.h"
#include "errorpopupdlg.h"
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
10
|
#include "historylistwindow.h"
|
652e9cd54
고영탁
Merge
|
11
|
|
42410a75c
김태훈
오타 수정
|
12
|
OvenStatistics* OvenStatistics::p_singletonInstance=NULL;
|
652e9cd54
고영탁
Merge
|
13
|
|
538041ab9
김태훈
소스 코드 구조 개선
|
14
|
OvenStatistics* OvenStatistics::getInstance(QObject *parent){
|
42410a75c
김태훈
오타 수정
|
15
|
if(!p_singletonInstance){
|
42410a75c
김태훈
오타 수정
|
16
|
p_singletonInstance = new OvenStatistics(parent);
|
538041ab9
김태훈
소스 코드 구조 개선
|
17
18
|
p_singletonInstance->udp = UdpHandler::getInstance();
p_singletonInstance->oven = Oven::getInstance();
|
652e9cd54
고영탁
Merge
|
19
|
//for singletone event debug
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
20
21
|
// MainWindow* mw = (MainWindow*)parent;
// connect(mw->pcombiButton, SIGNAL(clicked()),p_singtonInstance, SLOT(onDataChanged()));
|
42410a75c
김태훈
오타 수정
|
22
23
24
|
connect(p_singletonInstance->udp , SIGNAL(changed()), p_singletonInstance, SLOT(onDataChanged()));
QTimer *timer = new QTimer(p_singletonInstance);
connect(timer, SIGNAL(timeout()),p_singletonInstance,SLOT(oneSecTimerFired()));
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
25
|
timer->start(1000); //1000ms fired
|
652e9cd54
고영탁
Merge
|
26
|
}
|
42410a75c
김태훈
오타 수정
|
27
|
return p_singletonInstance;
|
652e9cd54
고영탁
Merge
|
28
|
}
|
42410a75c
김태훈
오타 수정
|
29
30
31
|
void OvenStatistics::destroy(){
if(!p_singletonInstance)
delete p_singletonInstance;
|
652e9cd54
고영탁
Merge
|
32
|
}
|
42410a75c
김태훈
오타 수정
|
33
|
OvenStatistics::OvenStatistics(QObject* parent) :QObject(parent)
|
652e9cd54
고영탁
Merge
|
34
|
{
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
35
|
int i = 0;
|
652e9cd54
고영탁
Merge
|
36
37
|
curdoorstate = false;
curSysErrorState = 0;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
38
39
40
|
curCommErrorState = 0;
curSensorErrorState = 0;
bDataRefreshed = false;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
41
42
43
44
45
46
47
|
realdata.d32 = 0;
for(i=0;i<MAX_LOG_SENSOR;i++){
curSensorValue[i].utemp = 0;
}
curSensorValue[12].itemp = 100;
|
652e9cd54
고영탁
Merge
|
48
49
50
|
srvdatas = new servicedatas();
srvdatas->loadServiceDatas();
}
|
42410a75c
김태훈
오타 수정
|
51
|
OvenStatistics::~OvenStatistics(){
|
652e9cd54
고영탁
Merge
|
52
53
|
delete srvdatas;
}
|
42410a75c
김태훈
오타 수정
|
54
|
void OvenStatistics::onDataChanged()
|
652e9cd54
고영탁
Merge
|
55
56
57
|
{
error_item *item;
time_t ltime=0;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
58
|
uint16_t errstatetemp;
|
652e9cd54
고영탁
Merge
|
59
|
qDebug() << "statics event fired";
|
652e9cd54
고영탁
Merge
|
60
61
|
udp->fillControl(control);
udp->fillData(state);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
62
|
bDataRefreshed = true;
|
652e9cd54
고영탁
Merge
|
63
|
time(<ime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
64
|
|
652e9cd54
고영탁
Merge
|
65
66
67
68
69
70
71
72
73
|
if(oven->cooking() && control.system){
if(state.door_state ==1 && curdoorstate==0){
//door error
item = &(srvdatas->err_log.items.door);
item->fired_cnt+=1;
if(item->first_fired==0)item->first_fired = ltime;
item->last_fried = ltime;
}
curdoorstate = state.door_state;
|
652e9cd54
고영탁
Merge
|
74
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
75
76
77
78
|
if(state.system_error!=0 && state.system_error != curSysErrorState){
processSystemError( state.system_error,ltime);
}
curSysErrorState = state.system_error;
|
fb200c9f1
고영탁
머지 후 컴파일 오류 수정
|
79
|
errstatetemp = state.communication_error;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
80
81
82
83
|
if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
processCommError( errstatetemp,ltime );
}
curCommErrorState = errstatetemp;
|
fb200c9f1
고영탁
머지 후 컴파일 오류 수정
|
84
|
errstatetemp = state.sensor_error;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
85
|
if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
86
|
processSensorError(errstatetemp,ltime );
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
87
88
89
90
91
|
}
curSensorErrorState = errstatetemp;
}
|
42410a75c
김태훈
오타 수정
|
92
|
void OvenStatistics::processSensorError(uint16_t errflag, time_t ltime){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
93
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
94
|
QString strMsg = "",strTitle="";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
95
96
97
98
99
100
101
102
|
uint8_t state;
if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
else state = SYS_ON_COOK_OFF;
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){
item = &(srvdatas->err_log.items.inner_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
103
104
105
|
strTitle = tr("내부 온도 이상 발생");
strMsg = tr("내부 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
106
107
108
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){
item = &(srvdatas->err_log.items.qunching_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
109
110
111
|
strTitle = tr("퀀칭 온도 이상 발생");
strMsg = tr("퀀칭 온도에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
112
113
114
115
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){
//Reserved allerrornoe 설정
item = &(srvdatas->err_log.items.qunching_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
116
117
118
|
strTitle = tr("퀀칭 온도 이상 발생");
strMsg = tr("퀀칭 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
119
120
121
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){
item = &(srvdatas->err_log.items.wall_temp1_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
122
123
124
|
strTitle = tr("벽면 온도 이상 발생");
strMsg = tr("벽면 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
125
126
127
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){
item = &(srvdatas->err_log.items.steam_gen_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
128
129
130
|
strTitle = tr("스팀제네레이터 온도 이상 발생");
strMsg = tr("스팀제네레이터 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
131
132
133
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){
item = &(srvdatas->err_log.items.meatprove_temp1_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
134
135
136
|
strTitle = tr("미트프로브 온도 이상 발생");
strMsg = tr("미트프로브 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
137
138
139
140
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){
//Reseved
item = &(srvdatas->err_log.items.meatprove_temp2_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
141
142
143
|
strTitle = tr("미트프로브2 온도 이상 발생");
strMsg = tr("미트프로브2 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg , strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
144
145
146
147
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){
//Reserved
item = &(srvdatas->err_log.items.meatprove_temp3_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
148
149
150
|
strMsg = tr("미트프로브3 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("미트프로브3 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
151
152
153
154
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){
//Reserved
item = &(srvdatas->err_log.items.meatprove_temp4_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
155
156
157
|
strMsg = tr("미트프로브4 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("미트프로브4 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
158
159
160
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){
item = &(srvdatas->err_log.items.pcb_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
161
162
163
|
strMsg = tr("PCB 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("PCB 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
164
165
|
}
}
|
42410a75c
김태훈
오타 수정
|
166
|
void OvenStatistics::processCommError(uint16_t errflag, time_t ltime){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
167
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
168
|
QString strMsg = "",strTitle="";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
169
170
171
172
173
174
175
176
177
|
uint8_t state;
if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
else state = SYS_ON_COOK_OFF;
if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){
item = &(srvdatas->err_log.items.upper_pan_fail);
strMsg = tr("상부 송풍기 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
178
179
|
strTitle = tr("상부 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
180
181
182
183
|
}
if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){
item = &(srvdatas->err_log.items.lower_pan_fail);
strMsg = tr("하부 송풍기 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
184
185
|
strTitle = tr("하부 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
186
187
188
189
|
}
if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){
item = &(srvdatas->err_log.items.steam_pan_fail);
strMsg = tr("스팀 송풍기 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
190
191
|
strTitle = tr("스팀 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
192
|
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
193
|
if(errflag & MAKE_MASK(COMM_ERR_LOWERFAN)){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
194
|
item = &(srvdatas->err_log.items.lower_motor_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
195
196
197
|
strMsg = tr("하부 모터 컨트롤러 이상 발생");
strTitle = tr("하부 모터 컨트롤러 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
198
199
200
201
|
}
if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){
item = &(srvdatas->err_log.items.upper_motor_fail);
strMsg = tr("상부 모터 컨트롤러 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
202
203
|
strTitle = tr("상부 모터 컨트롤러 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
204
|
}
|
652e9cd54
고영탁
Merge
|
205
|
}
|
42410a75c
김태훈
오타 수정
|
206
|
void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){
|
652e9cd54
고영탁
Merge
|
207
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
208
|
QString strMsg = "",strTitle = "";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
209
210
211
212
213
214
215
|
uint8_t state;
if( control.system==0 && !oven->cooking()) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !oven->cooking()) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && oven->cooking()) state = SYS_ON_COOK_ON;
else state = SYS_ON_COOK_OFF;
if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){
|
652e9cd54
고영탁
Merge
|
216
217
|
//버너 컨트롤러 1 착화 이상
item = &(srvdatas->err_log.items.upper_fire_fail);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
218
|
strMsg = tr("상부 버너 착하가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
219
220
|
strTitle = tr("상부 버너 착하 이상 발생");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
221
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
222
|
if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){
|
652e9cd54
고영탁
Merge
|
223
224
|
//버너 컨트롤러 2 착화 이상
item = &(srvdatas->err_log.items.lower_fire_fail);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
225
|
strMsg = tr("하부 버너 착하가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
226
227
|
strTitle = tr("하부 버너 착하 이상 발생");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
228
|
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
229
|
if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){
|
652e9cd54
고영탁
Merge
|
230
|
item = &(srvdatas->err_log.items.steam_fire_fail);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
231
|
strMsg = tr("스팀 버너 착하가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
232
233
|
strMsg = tr("스팀 버너 착하 이상 발생");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
234
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
235
|
if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){
|
652e9cd54
고영탁
Merge
|
236
|
item = &(srvdatas->err_log.items.inner_temp_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
237
238
239
|
strMsg = tr("내부 온도가 과열되었습니다.");
strTitle = tr("내부 온도 과열 발생");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
240
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
241
242
243
|
if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){
//퀀칭 온도 센서 과열
item = &(srvdatas->err_log.items.qunching_temp_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
244
245
246
|
strTitle = tr("퀀칭 온도 센서 이상 발생");
strMsg = tr("퀀칭 온도 센서가 과열되었습니다");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
247
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
248
249
250
|
if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){
//중심 온도 과열
item = &(srvdatas->err_log.items.meatprove_temp1_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
251
252
253
|
strTitle = tr("미트프로브 온도 센서 이상 발생.");
strMsg = tr("미트프로브 온도 센서 과열되었습니다.");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
254
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
255
256
|
if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){
item = &(srvdatas->err_log.items.wall_temp1_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
257
258
259
260
261
262
263
264
265
266
|
strTitle = tr("벽면 온도 센서 이상 발생.");
strMsg = tr("벽면 온도 센서가 과열 되었습니다.");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_WALL_TEMP_ALARM],strMsg,strTitle,ltime);
}
if(errflag & MAKE_MASK(SYS_ERR_STAM_TEMP_ALARM)){
item = &(srvdatas->err_log.items.steam_gen_temp_high_alram);
strTitle = tr("스팀제네레이터 온도 과열 발생.");
strMsg = tr("스팀제네레이터 온도 센서 과열이 발생되었습니다.");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_STAM_TEMP_ALARM],strMsg,strTitle,ltime);
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
267
268
269
|
if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){
//급수 이상 -> 유량 센서 이상
item = &(srvdatas->err_log.items.water_level_sensor_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
270
|
strTitle = tr("급수 이상 발생");
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
271
|
strMsg = tr("급수가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
272
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
273
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
274
275
|
if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){
//급수 이상 -> 수위 센서 이상
|
652e9cd54
고영탁
Merge
|
276
|
item = &(srvdatas->err_log.items.water_level_sensor_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
277
|
strTitle = tr("급수 이상 발생");
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
278
|
strMsg = tr("급수가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
279
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,strTitle,ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
280
281
|
}
}
|
42410a75c
김태훈
오타 수정
|
282
|
bool OvenStatistics::getNeedErrorClear(){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
283
284
|
return bNeedErrorClear;
}
|
42410a75c
김태훈
오타 수정
|
285
|
void OvenStatistics::clearNeedErrorClear(){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
286
287
288
|
//에러클리어 송신 후 flag clear
bNeedErrorClear = false;
}
|
42410a75c
김태훈
오타 수정
|
289
|
void OvenStatistics::oneSecTimerFired(void){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
290
291
292
293
294
295
296
297
298
299
|
static int nOneSecCnt=1;
time_t ltime;
ltime = time(NULL);
nOneSecCnt++;
if( (nOneSecCnt % 10) ==0 ) {
srvdatas->saveServiceDatas();
qDebug()<<"statics data saved";
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
|
if(bDataRefreshed) bDataRefreshed= false;
else{
udp->fillControl(control);
udp->fillData(state);
}
//가열부 시간 측정
if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){
srvdatas->use_log.items.steam_heat +=1;
}
if( (state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER | LOAD_STATE1_LOWER_FAN))!=0){
srvdatas->use_log.items.dry_heat+=1;
if(state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER)){
srvdatas->use_log.items.upper_heat +=1;
}
if((state.onoff_state2 & LOAD_STATE1_LOWER_BUNNER)!=0){
srvdatas->use_log.items.lower_heat +=1;
}
}
//모드 시간 계산
if(state.cooking_mode !=0){
if(state.cooking_humidity==0){
//건열 모드
srvdatas->use_log.items.cook_dry_mode+=1;
}
else if(state.cooking_humidity ==100){
//스팀모드
srvdatas->use_log.items.cook_steam_mode+=1;
}
else srvdatas->use_log.items.cook_combi_mode+=1;
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
330
|
if(state.cleaning_mode !=0 && state.cleaning_sate !=0){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
|
switch (state.cleaning_mode) {
case (uint16_t)wash_mode_nocleanser:
srvdatas->use_log.items.wash_mode_nocleanser+=1;
break;
case (uint16_t)wash_mode_simple:
srvdatas->use_log.items.wash_mode_simple+=1;
break;
case (uint16_t)wash_mode_standard:
srvdatas->use_log.items.wash_mode_standard+=1;
break;
case (uint16_t)wash_mode_strong:
srvdatas->use_log.items.wash_mode_strong+=1;
break;
case (uint16_t)wash_mode_highspeed:
srvdatas->use_log.items.wash_mode_speed+=1;
break;
default:
break;
}
}
if(control.cooldown ==1){
srvdatas->use_log.items.cooldown_mode+=1;
}
//부품
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
355
|
if(state.door_state !=0){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
356
|
srvdatas->use_log.items.door_open+=1;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
357
|
realdata.b.door_open = 1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
|
}
if(state.onoff_state2 !=0){
if( (state.onoff_state2 & LOAD_STATE2_DV)!=0){
srvdatas->use_log.items.dv_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_SSV)!=0){
srvdatas->use_log.items.ssv_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_QNV)!=0){
srvdatas->use_log.items.qnv_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_SNV)!=0){
srvdatas->use_log.items.snv_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_SSP)!=0){
srvdatas->use_log.items.ssp_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_HDM)!=0){
srvdatas->use_log.items.hdm_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_DP)!=0){
srvdatas->use_log.items.dp_open+=1;
}
if((state.onoff_state2 & LOAD_STATE2_UNP) !=0){
srvdatas->use_log.items.unp_open+=1;
}
}
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
385
386
387
388
389
390
391
392
|
//Real time Data Refresh
realdata.b.door_open = state.door_state==0?0:1;
realdata.b.dv_open = (state.onoff_state2&LOAD_STATE2_DV)==0?0:1;
realdata.b.qnv_open = (state.onoff_state2&LOAD_STATE2_QNV)==0?0:1;
realdata.b.sgnv_open = (state.onoff_state2&LOAD_STATE2_SGNV)==0?0:1;
realdata.b.snv_open = (state.onoff_state2&LOAD_STATE2_SNV)==0?0:1;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
393
|
realdata.b.wsv_open = (state.onoff_state2&LOAD_STATE2_WSV)==0?0:1;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
realdata.b.ssv_open = (state.onoff_state2&LOAD_STATE2_SSV)==0?0:1;
realdata.b.water_level = 0;
if(srvdatas->sensor_log.items.B1.high_temp.itemp < state.sensor1 ){
srvdatas->sensor_log.items.B1.high_temp.itemp = state.sensor1;
srvdatas->sensor_log.items.B1.last_high_time = ltime;
}
curSensorValue[0].itemp = state.sensor1;
if(srvdatas->sensor_log.items.B2.high_temp.itemp < state.sensor2 ){
srvdatas->sensor_log.items.B2.high_temp.itemp = state.sensor2;
srvdatas->sensor_log.items.B2.last_high_time = ltime;
}
curSensorValue[1].itemp = state.sensor2;
if(srvdatas->sensor_log.items.B3_1.high_temp.itemp < state.sensor6 ){
srvdatas->sensor_log.items.B3_1.high_temp.itemp = state.sensor6;
srvdatas->sensor_log.items.B3_1.last_high_time = ltime;
}
curSensorValue[5].itemp = state.sensor6;
if(srvdatas->sensor_log.items.B4.high_temp.itemp < state.sensor4 ){
srvdatas->sensor_log.items.B4.high_temp.itemp = state.sensor4;
srvdatas->sensor_log.items.B4.last_high_time = ltime;
}
curSensorValue[3].itemp = state.sensor4;
if(srvdatas->sensor_log.items.B5.high_temp.itemp < state.sensor5 ){
srvdatas->sensor_log.items.B5.high_temp.itemp = state.sensor5;
srvdatas->sensor_log.items.B5.last_high_time = ltime;
}
curSensorValue[4].itemp = state.sensor5;
if(srvdatas->sensor_log.items.B3_2.high_temp.itemp < state.sensor7 ){
srvdatas->sensor_log.items.B3_2.high_temp.itemp = state.sensor7;
srvdatas->sensor_log.items.B3_2.last_high_time = ltime;
}
curSensorValue[6].itemp = state.sensor7;
if(srvdatas->sensor_log.items.B3_3.high_temp.itemp < state.sensor8 ){
srvdatas->sensor_log.items.B3_3.high_temp.itemp = state.sensor8;
srvdatas->sensor_log.items.B3_3.last_high_time = ltime;
}
curSensorValue[7].itemp = state.sensor8;
if(srvdatas->sensor_log.items.B3_4.high_temp.itemp < state.sensor9 ){
srvdatas->sensor_log.items.B3_4.high_temp.itemp = state.sensor9;
srvdatas->sensor_log.items.B3_4.last_high_time = ltime;
}
curSensorValue[8].itemp = state.sensor9;
if(srvdatas->sensor_log.items.mbar1.high_temp.utemp < state.sensor11 ){
srvdatas->sensor_log.items.mbar1.high_temp.utemp = state.sensor11;
srvdatas->sensor_log.items.mbar1.last_high_time = ltime;
}
curSensorValue[10].utemp = state.sensor11;
if(srvdatas->sensor_log.items.mbar2.high_temp.utemp < state.sensor12 ){
srvdatas->sensor_log.items.mbar2.high_temp.utemp = state.sensor12;
srvdatas->sensor_log.items.mbar2.last_high_time = ltime;
}
curSensorValue[11].utemp = state.sensor12;
if(srvdatas->sensor_log.items.pcb.high_temp.itemp < state.sensor13 ){
srvdatas->sensor_log.items.pcb.high_temp.itemp = state.sensor13;
srvdatas->sensor_log.items.pcb.last_high_time = ltime;
}
curSensorValue[12].itemp = state.sensor13;
if(srvdatas->sensor_log.items.adc.high_temp.itemp < state.sensor14 ){
srvdatas->sensor_log.items.adc.high_temp.itemp = state.sensor14;
srvdatas->sensor_log.items.adc.last_high_time = ltime;
}
curSensorValue[13].itemp = state.sensor14;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
467
|
}
|
42410a75c
김태훈
오타 수정
|
468
|
void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
469
|
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
470
|
qDebug() << (int) (item - &(srvdatas->err_log.values[0])) << "ERROR Fired!";
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
471
472
473
474
475
476
|
if(m_pLastErrItem == item ){
srvdatas->err_log.items.repeat_error.fired_cnt =item->fired_cnt;
srvdatas->err_log.items.repeat_error.first_fired = item->first_fired;
srvdatas->err_log.items.repeat_error.last_fried = item->last_fried;
}
m_pLastErrItem = item;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
477
|
if(errtype >= error_type_onlychk){
|
652e9cd54
고영탁
Merge
|
478
479
480
481
|
item->fired_cnt+=1;
if(item->first_fired == 0) item->first_fired = ltime;
item->last_fried = ltime;
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
482
483
484
485
486
|
switch(errtype){
case error_type_onlypop:
case error_type_popclr:
case error_type_popnonclr:
{
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
487
|
errorPopupDlg *dlg = new errorPopupDlg(QApplication::activeWindow(),MsgDesc,MsgTitle);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
488
489
490
|
dlg->exec();
break;
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
491
|
case error_type_engclr:
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
|
case error_type_engnonclr:
case error_type_onlyeng:
{
engineermenuwindow *w = new engineermenuwindow(QApplication::activeWindow());
w->showFullScreen();
break;
}
default:
break;
}
if(errtype > error_type_clrsplit){
//에러 클리어 명령 송신
qDebug() << "send error clear command";
if(errtype == error_type_engclr){
//확인 후 송신
bNeedErrorClear = true;
}
else{
//에러클리어 메시지 즉시 송신
|
7cf3f7f9d
고영탁
에러 처리 기능 누락 수정
|
511
|
udp->set(TG_ERROR_CLEAR,0xCECE);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
512
513
|
}
}
|
652e9cd54
고영탁
Merge
|
514
|
}
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
515
|
|
42410a75c
김태훈
오타 수정
|
516
|
realtime_data OvenStatistics::getPartsRealtimeData(void){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
517
518
|
return realdata;
}
|
42410a75c
김태훈
오타 수정
|
519
|
uint8_t OvenStatistics::getSensorTypeByIdx(uint16_t idx){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
520
521
522
|
if(idx > MAX_LOG_SENSOR) return 0;
return sensorTypeInfo[idx];
}
|
42410a75c
김태훈
오타 수정
|
523
|
type_temp OvenStatistics::getCurSensorValueByIdx(uint16_t idx){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
524
525
|
return curSensorValue[idx];
}
|