652e9cd54
고영탁
Merge
|
1
2
|
#include "ovenstatics.h"
#include <QtDebug>
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
3
4
|
#include <QApplication>
#include <QTimer>
|
652e9cd54
고영탁
Merge
|
5
6
|
#include "mainwindow.h"
#include "ovencontroller.h"
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
7
8
|
#include "engineermenuwindow.h"
#include "errorpopupdlg.h"
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
9
|
#include "historylistwindow.h"
|
d66410abd
고영탁
에러 팝업 형태 변경
|
10
|
#include "servicepassinputdlg.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();
|
20fcaaf68
고영탁
에러 마스크 별도 적용
|
19
|
p_singletonInstance->cfg = Config::getInstance();
|
652e9cd54
고영탁
Merge
|
20
|
//for singletone event debug
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
21
22
|
// MainWindow* mw = (MainWindow*)parent;
// connect(mw->pcombiButton, SIGNAL(clicked()),p_singtonInstance, SLOT(onDataChanged()));
|
42410a75c
김태훈
오타 수정
|
23
24
25
|
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
고영탁
에러 처리 루틴 및 에러 처리 ...
|
26
|
timer->start(1000); //1000ms fired
|
652e9cd54
고영탁
Merge
|
27
|
}
|
42410a75c
김태훈
오타 수정
|
28
|
return p_singletonInstance;
|
652e9cd54
고영탁
Merge
|
29
|
}
|
42410a75c
김태훈
오타 수정
|
30
31
32
|
void OvenStatistics::destroy(){
if(!p_singletonInstance)
delete p_singletonInstance;
|
652e9cd54
고영탁
Merge
|
33
|
}
|
42410a75c
김태훈
오타 수정
|
34
|
OvenStatistics::OvenStatistics(QObject* parent) :QObject(parent)
|
652e9cd54
고영탁
Merge
|
35
|
{
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
36
|
int i = 0;
|
652e9cd54
고영탁
Merge
|
37
38
|
curdoorstate = false;
curSysErrorState = 0;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
39
40
|
curCommErrorState = 0;
curSensorErrorState = 0;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
41
|
curControlErrorState = 0;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
42
|
bDataRefreshed = false;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
43
|
realdata.d32 = 0;
|
cefd483e4
고영탁
에러 수정
|
44
45
|
m_bPopupShow = false;
m_nLastPopupidx = MAX_ERROR_TYPE_CNT;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
46
47
48
49
50
|
for(i=0;i<MAX_LOG_SENSOR;i++){
curSensorValue[i].utemp = 0;
}
curSensorValue[12].itemp = 100;
|
14a73498f
김태훈
소스 코드 정리
|
51
|
srvdata = new ServiceData();
|
a21bb5f67
고영탁
버그 수정
|
52
|
|
652e9cd54
고영탁
Merge
|
53
|
}
|
42410a75c
김태훈
오타 수정
|
54
|
OvenStatistics::~OvenStatistics(){
|
14a73498f
김태훈
소스 코드 정리
|
55
|
delete srvdata;
|
652e9cd54
고영탁
Merge
|
56
|
}
|
42410a75c
김태훈
오타 수정
|
57
|
void OvenStatistics::onDataChanged()
|
652e9cd54
고영탁
Merge
|
58
59
60
|
{
error_item *item;
time_t ltime=0;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
61
|
uint16_t errstatetemp;
|
b915c1b54
고영탁
팝업 처리 수정
|
62
|
uint8_t cookingstate=0;
|
652e9cd54
고영탁
Merge
|
63
64
|
udp->fillControl(control);
udp->fillData(state);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
65
|
bDataRefreshed = true;
|
652e9cd54
고영탁
Merge
|
66
|
time(<ime);
|
b915c1b54
고영탁
팝업 처리 수정
|
67
|
if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate = 1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
68
|
|
652e9cd54
고영탁
Merge
|
69
70
71
|
if(oven->cooking() && control.system){
if(state.door_state ==1 && curdoorstate==0){
//door error
|
14a73498f
김태훈
소스 코드 정리
|
72
|
item = &(srvdata->err_log.items.door);
|
652e9cd54
고영탁
Merge
|
73
74
75
76
77
|
item->fired_cnt+=1;
if(item->first_fired==0)item->first_fired = ltime;
item->last_fried = ltime;
}
curdoorstate = state.door_state;
|
652e9cd54
고영탁
Merge
|
78
|
}
|
b915c1b54
고영탁
팝업 처리 수정
|
79
80
|
qDebug() << "cooking state " << cookingstate << "model " << cfg->getConfigValue(Define::config_model).d32;
qDebug() << state.system_error << "and sys mask " << sys_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32];
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
81
|
if(state.system_error!=0 && state.system_error != curSysErrorState){
|
b915c1b54
고영탁
팝업 처리 수정
|
82
|
processSystemError( (state.system_error & sys_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]) ,ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
83
84
|
}
curSysErrorState = state.system_error;
|
2189b57d9
고영탁
GUI V0.3.15
|
85
86
87
88
89
|
// errstatetemp = state.communication_error;
// if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
// processCommError( (errstatetemp & comm_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );
// }
// curCommErrorState = errstatetemp;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
90
|
|
fb200c9f1
고영탁
머지 후 컴파일 오류 수정
|
91
|
errstatetemp = state.sensor_error;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
92
|
if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){
|
b915c1b54
고영탁
팝업 처리 수정
|
93
|
processSensorError( (errstatetemp& sensor_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
94
95
|
}
curSensorErrorState = errstatetemp;
|
2189b57d9
고영탁
GUI V0.3.15
|
96
97
98
99
100
|
// errstatetemp = state.controller_error;
// if(errstatetemp != 0 && errstatetemp != curControlErrorState){
// processStateError((errstatetemp&state_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime);
// }
// curControlErrorState = errstatetemp;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
101
102
|
}
|
42410a75c
김태훈
오타 수정
|
103
|
void OvenStatistics::processSensorError(uint16_t errflag, time_t ltime){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
104
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
105
|
QString strMsg = "",strTitle="";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
106
|
uint8_t state;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
107
108
109
110
|
bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
111
112
113
|
else state = SYS_ON_COOK_OFF;
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){
|
14a73498f
김태훈
소스 코드 정리
|
114
|
item = &(srvdata->err_log.items.inner_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
115
116
117
|
strTitle = tr("내부 온도 이상 발생");
strMsg = tr("내부 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
118
119
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){
|
14a73498f
김태훈
소스 코드 정리
|
120
|
item = &(srvdata->err_log.items.qunching_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
121
122
123
|
strTitle = tr("퀀칭 온도 이상 발생");
strMsg = tr("퀀칭 온도에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
124
125
126
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){
//Reserved allerrornoe 설정
|
14a73498f
김태훈
소스 코드 정리
|
127
|
item = &(srvdata->err_log.items.qunching_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
128
129
130
|
strTitle = tr("퀀칭 온도 이상 발생");
strMsg = tr("퀀칭 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
131
132
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){
|
14a73498f
김태훈
소스 코드 정리
|
133
|
item = &(srvdata->err_log.items.wall_temp1_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
134
135
136
|
strTitle = tr("벽면 온도 이상 발생");
strMsg = tr("벽면 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
137
138
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){
|
14a73498f
김태훈
소스 코드 정리
|
139
|
item = &(srvdata->err_log.items.steam_gen_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
140
141
142
|
strTitle = tr("스팀제네레이터 온도 이상 발생");
strMsg = tr("스팀제네레이터 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
143
144
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){
|
14a73498f
김태훈
소스 코드 정리
|
145
|
item = &(srvdata->err_log.items.meatprove_temp1_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
146
147
148
|
strTitle = tr("미트프로브 온도 이상 발생");
strMsg = tr("미트프로브 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
149
150
151
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){
//Reseved
|
14a73498f
김태훈
소스 코드 정리
|
152
|
item = &(srvdata->err_log.items.meatprove_temp2_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
153
154
155
|
strTitle = tr("미트프로브2 온도 이상 발생");
strMsg = tr("미트프로브2 온도 센서에 이상이 발생하였습니다.");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg , strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
156
157
158
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){
//Reserved
|
14a73498f
김태훈
소스 코드 정리
|
159
|
item = &(srvdata->err_log.items.meatprove_temp3_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
160
161
162
|
strMsg = tr("미트프로브3 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("미트프로브3 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
163
164
165
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){
//Reserved
|
14a73498f
김태훈
소스 코드 정리
|
166
|
item = &(srvdata->err_log.items.meatprove_temp4_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
167
168
169
|
strMsg = tr("미트프로브4 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("미트프로브4 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
170
171
|
}
if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){
|
14a73498f
김태훈
소스 코드 정리
|
172
|
item = &(srvdata->err_log.items.pcb_temp_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
173
174
175
|
strMsg = tr("PCB 온도 센서에 이상이 발생하였습니다.");
strTitle = tr("PCB 온도 이상 발생");
processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
176
177
|
}
}
|
42410a75c
김태훈
오타 수정
|
178
|
void OvenStatistics::processCommError(uint16_t errflag, time_t ltime){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
179
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
180
|
QString strMsg = "",strTitle="";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
181
|
uint8_t state;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
182
183
184
185
|
bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
186
187
188
|
else state = SYS_ON_COOK_OFF;
if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){
|
14a73498f
김태훈
소스 코드 정리
|
189
|
item = &(srvdata->err_log.items.upper_pan_fail);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
190
|
strMsg = tr("상부 송풍기 통신 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
191
192
|
strTitle = tr("상부 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
193
194
|
}
if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){
|
14a73498f
김태훈
소스 코드 정리
|
195
|
item = &(srvdata->err_log.items.lower_pan_fail);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
196
|
strMsg = tr("하부 송풍기 통신 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
197
198
|
strTitle = tr("하부 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
199
200
|
}
if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){
|
14a73498f
김태훈
소스 코드 정리
|
201
|
item = &(srvdata->err_log.items.steam_pan_fail);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
202
|
strMsg = tr("스팀 송풍기 통신 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
203
204
|
strTitle = tr("스팀 송풍기 이상 발생");
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
205
|
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
206
|
if(errflag & MAKE_MASK(COMM_ERR_LOWERFAN)){
|
14a73498f
김태훈
소스 코드 정리
|
207
|
item = &(srvdata->err_log.items.lower_motor_fail);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
208
209
|
strMsg = tr("하부 FAN 컨트롤러 통신 이상 발생");
strTitle = tr("하부 FAN 컨트롤러 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
210
|
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
211
212
|
}
if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){
|
14a73498f
김태훈
소스 코드 정리
|
213
|
item = &(srvdata->err_log.items.upper_motor_fail);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
214
215
|
strMsg = tr("상부 FAN 컨트롤러 통신 이상 발생");
strTitle = tr("상부 FAN 컨트롤러 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
216
|
processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
217
|
}
|
652e9cd54
고영탁
Merge
|
218
|
}
|
7ae804762
고영탁
에러 상황 추가
|
219
220
221
222
|
void OvenStatistics::processStateError(uint16_t errflag, time_t ltime){
error_item *item;
QString strMsg = "",strTitle="";
uint8_t state;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
223
224
225
226
|
bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
|
7ae804762
고영탁
에러 상황 추가
|
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
else state = SYS_ON_COOK_OFF;
if(errflag & MAKE_MASK(STATE_ERR_BUNNER1)){
item = &(srvdata->err_log.items.upper_pan_fail);
strMsg = tr("버너컨트롤러 1 이상 발생하였습니다.");
strTitle = tr("버너컨트롤러 1 이상 발생");
processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER1],strMsg,strTitle, ltime);
}
if(errflag & MAKE_MASK(STATE_ERR_BUNNER2)){
item = &(srvdata->err_log.items.lower_pan_fail);
strMsg = tr("버너컨트롤러 2 이상 발생하였습니다.");
strTitle = tr("버너컨트롤러 2 이상 발생");
processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime);
}
if(errflag & MAKE_MASK(STATE_ERR_BUNNER3)){
item = &(srvdata->err_log.items.steam_pan_fail);
strMsg = tr("버너컨트롤러 3 이상 발생하였습니다.");
|
3fd8255a1
고영탁
팝업 관련 동작 정의 수정
|
244
|
strTitle = tr("버너컨트롤러 3 이상 발생");
|
7ae804762
고영탁
에러 상황 추가
|
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER3],strMsg,strTitle, ltime);
}
if(errflag & MAKE_MASK(STATE_ERR_LOWERFAN)){
item = &(srvdata->err_log.items.lower_motor_fail);
strMsg = tr("하부 FAN 컨트롤러 이상 발생하였습니다.");
strTitle = tr("하부 FAN 컨트롤러 이상 발생");
processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime);
}
if(errflag & MAKE_MASK(STATE_ERR_UPPERFAN)){
item = &(srvdata->err_log.items.upper_motor_fail);
strMsg = tr("상부 FAN 컨트롤러 이상 발생하였습니다.");
strTitle = tr("상부 FAN 컨트롤러 이상 발생");
processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime);
}
}
|
42410a75c
김태훈
오타 수정
|
260
|
void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){
|
652e9cd54
고영탁
Merge
|
261
|
error_item *item;
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
262
|
QString strMsg = "",strTitle = "";
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
263
|
uint8_t state;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
264
265
266
267
|
bool bCookingState = (control.cooking || oven->cooking() || oven->preheating() || oven->cooldown());
if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
268
269
270
|
else state = SYS_ON_COOK_OFF;
if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){
|
652e9cd54
고영탁
Merge
|
271
|
//버너 컨트롤러 1 착화 이상
|
14a73498f
김태훈
소스 코드 정리
|
272
|
item = &(srvdata->err_log.items.upper_fire_fail);
|
b69abdac2
고영탁
모델 별 하부 에러 마스크 적용
|
273
274
|
strMsg = tr("상부 버너 착화가 되지 않습니다.");
strTitle = tr("상부 버너 착화 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
275
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
276
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
277
|
if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){
|
652e9cd54
고영탁
Merge
|
278
|
//버너 컨트롤러 2 착화 이상
|
14a73498f
김태훈
소스 코드 정리
|
279
|
item = &(srvdata->err_log.items.lower_fire_fail);
|
b69abdac2
고영탁
모델 별 하부 에러 마스크 적용
|
280
281
|
strMsg = tr("하부 버너 착화가 되지 않습니다.");
strTitle = tr("하부 버너 착화 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
282
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
283
|
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
284
|
if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){
|
14a73498f
김태훈
소스 코드 정리
|
285
|
item = &(srvdata->err_log.items.steam_fire_fail);
|
b69abdac2
고영탁
모델 별 하부 에러 마스크 적용
|
286
287
|
strMsg = tr("스팀 버너 착화가 되지 않습니다.");
strTitle = tr("스팀 버너 착화 이상 발생");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
288
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
289
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
290
|
if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){
|
14a73498f
김태훈
소스 코드 정리
|
291
|
item = &(srvdata->err_log.items.inner_temp_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
292
293
294
|
strMsg = tr("내부 온도가 과열되었습니다.");
strTitle = tr("내부 온도 과열 발생");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
295
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
296
297
|
if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){
//퀀칭 온도 센서 과열
|
14a73498f
김태훈
소스 코드 정리
|
298
|
item = &(srvdata->err_log.items.qunching_temp_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
299
300
301
|
strTitle = tr("퀀칭 온도 센서 이상 발생");
strMsg = tr("퀀칭 온도 센서가 과열되었습니다");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
302
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
303
304
|
if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){
//중심 온도 과열
|
14a73498f
김태훈
소스 코드 정리
|
305
|
item = &(srvdata->err_log.items.meatprove_temp1_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
306
307
308
|
strTitle = tr("미트프로브 온도 센서 이상 발생.");
strMsg = tr("미트프로브 온도 센서 과열되었습니다.");
processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
309
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
310
|
if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){
|
14a73498f
김태훈
소스 코드 정리
|
311
|
item = &(srvdata->err_log.items.wall_temp1_high_alarm);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
312
313
314
315
316
|
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)){
|
14a73498f
김태훈
소스 코드 정리
|
317
|
item = &(srvdata->err_log.items.steam_gen_temp_high_alram);
|
d66410abd
고영탁
에러 팝업 형태 변경
|
318
319
|
strTitle = tr("스팀제네레이터 온도 이상 발생.");
strMsg = tr("스팀제네레이터 온도 센서가 과열 되었습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
320
321
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_STAM_TEMP_ALARM],strMsg,strTitle,ltime);
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
322
323
|
if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){
//급수 이상 -> 유량 센서 이상
|
14a73498f
김태훈
소스 코드 정리
|
324
|
item = &(srvdata->err_log.items.water_level_sensor_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
325
|
strTitle = tr("급수 이상 발생");
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
326
|
strMsg = tr("급수가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
327
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,strTitle,ltime);
|
652e9cd54
고영탁
Merge
|
328
|
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
329
330
|
if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){
//급수 이상 -> 수위 센서 이상
|
14a73498f
김태훈
소스 코드 정리
|
331
|
item = &(srvdata->err_log.items.water_level_sensor_fail);
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
332
|
strTitle = tr("급수 이상 발생");
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
333
|
strMsg = tr("급수가 되지 않습니다.");
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
334
|
processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,strTitle,ltime);
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
335
336
|
}
}
|
42410a75c
김태훈
오타 수정
|
337
|
bool OvenStatistics::getNeedErrorClear(){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
338
339
|
return bNeedErrorClear;
}
|
42410a75c
김태훈
오타 수정
|
340
|
void OvenStatistics::clearNeedErrorClear(){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
341
342
343
|
//에러클리어 송신 후 flag clear
bNeedErrorClear = false;
}
|
42410a75c
김태훈
오타 수정
|
344
|
void OvenStatistics::oneSecTimerFired(void){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
345
346
|
static int nOneSecCnt=1;
time_t ltime;
|
2189b57d9
고영탁
GUI V0.3.15
|
347
348
349
350
351
352
353
|
static int nStateErrValStableCnt = 0;
static int nCommErrValStableCnt = 0;
static uint16_t nCommErrVal = 0;
static uint16_t nStateErrVal = 0;
uint16_t errstatetemp=0;
int cookingstate=0;
if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate =1;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
354
355
356
357
|
ltime = time(NULL);
nOneSecCnt++;
if( (nOneSecCnt % 10) ==0 ) {
|
14a73498f
김태훈
소스 코드 정리
|
358
|
srvdata->saveServiceData();
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
359
|
}
|
2189b57d9
고영탁
GUI V0.3.15
|
360
|
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
361
362
363
364
365
|
if(bDataRefreshed) bDataRefreshed= false;
else{
udp->fillControl(control);
udp->fillData(state);
}
|
2189b57d9
고영탁
GUI V0.3.15
|
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
|
if(nCommErrVal != state.communication_error){
nCommErrVal = state.communication_error;
if(nCommErrVal ==0) {
curCommErrorState = nCommErrVal;
nCommErrValStableCnt = 60;
}
else {
nCommErrValStableCnt=0;
}
}
else{
if(nCommErrValStableCnt >=60){
errstatetemp = state.communication_error;
if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
processCommError( (errstatetemp & comm_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );
}
curCommErrorState = errstatetemp;
}
else nCommErrValStableCnt++;
}
if(nStateErrVal != state.controller_error){
nStateErrVal = state.controller_error;
if(nStateErrVal == 0 ) {
curControlErrorState = nStateErrVal;
nStateErrValStableCnt=60;
}
else{
nStateErrValStableCnt=0;
}
}
else{
if(nStateErrValStableCnt>=60){
errstatetemp = state.controller_error;
if(errstatetemp != 0 && errstatetemp != curControlErrorState){
processStateError((errstatetemp&state_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime);
}
curControlErrorState = errstatetemp;
}
else nStateErrValStableCnt++;
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
408
409
|
//가열부 시간 측정
if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){
|
14a73498f
김태훈
소스 코드 정리
|
410
|
srvdata->use_log.items.steam_heat +=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
411
412
|
}
if( (state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER | LOAD_STATE1_LOWER_FAN))!=0){
|
14a73498f
김태훈
소스 코드 정리
|
413
|
srvdata->use_log.items.dry_heat+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
414
|
if(state.onoff_state1 & (LOAD_STATE1_UPPER_BUNNER)){
|
14a73498f
김태훈
소스 코드 정리
|
415
|
srvdata->use_log.items.upper_heat +=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
416
417
|
}
if((state.onoff_state2 & LOAD_STATE1_LOWER_BUNNER)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
418
|
srvdata->use_log.items.lower_heat +=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
419
420
421
422
423
424
|
}
}
//모드 시간 계산
if(state.cooking_mode !=0){
if(state.cooking_humidity==0){
//건열 모드
|
14a73498f
김태훈
소스 코드 정리
|
425
|
srvdata->use_log.items.cook_dry_mode+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
426
427
428
|
}
else if(state.cooking_humidity ==100){
//스팀모드
|
14a73498f
김태훈
소스 코드 정리
|
429
|
srvdata->use_log.items.cook_steam_mode+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
430
|
}
|
14a73498f
김태훈
소스 코드 정리
|
431
|
else srvdata->use_log.items.cook_combi_mode+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
432
|
}
|
f8661a150
고영탁
엔지니어 모드 디버깅
|
433
|
if(state.cleaning_mode !=0 && state.cleaning_sate !=0){
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
434
435
|
switch (state.cleaning_mode) {
case (uint16_t)wash_mode_nocleanser:
|
14a73498f
김태훈
소스 코드 정리
|
436
|
srvdata->use_log.items.wash_mode_nocleanser+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
437
438
|
break;
case (uint16_t)wash_mode_simple:
|
14a73498f
김태훈
소스 코드 정리
|
439
|
srvdata->use_log.items.wash_mode_simple+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
440
441
|
break;
case (uint16_t)wash_mode_standard:
|
14a73498f
김태훈
소스 코드 정리
|
442
|
srvdata->use_log.items.wash_mode_standard+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
443
444
|
break;
case (uint16_t)wash_mode_strong:
|
14a73498f
김태훈
소스 코드 정리
|
445
|
srvdata->use_log.items.wash_mode_strong+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
446
447
|
break;
case (uint16_t)wash_mode_highspeed:
|
14a73498f
김태훈
소스 코드 정리
|
448
|
srvdata->use_log.items.wash_mode_speed+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
449
450
451
452
453
454
|
break;
default:
break;
}
}
if(control.cooldown ==1){
|
14a73498f
김태훈
소스 코드 정리
|
455
|
srvdata->use_log.items.cooldown_mode+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
456
457
|
}
//부품
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
458
|
if(state.door_state !=0){
|
14a73498f
김태훈
소스 코드 정리
|
459
|
srvdata->use_log.items.door_open+=1;
|
3f5f5d4ce
고영탁
디버깅 요청 사항 적용
|
460
|
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
461
|
}
|
3f5f5d4ce
고영탁
디버깅 요청 사항 적용
|
462
|
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
463
464
|
if(state.onoff_state2 !=0){
if( (state.onoff_state2 & LOAD_STATE2_DV)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
465
|
srvdata->use_log.items.dv_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
466
467
|
}
if((state.onoff_state2 & LOAD_STATE2_SSV)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
468
|
srvdata->use_log.items.ssv_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
469
470
|
}
if((state.onoff_state2 & LOAD_STATE2_QNV)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
471
|
srvdata->use_log.items.qnv_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
472
473
|
}
if((state.onoff_state2 & LOAD_STATE2_SNV)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
474
|
srvdata->use_log.items.snv_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
475
476
|
}
if((state.onoff_state2 & LOAD_STATE2_SSP)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
477
|
srvdata->use_log.items.ssp_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
478
479
|
}
if((state.onoff_state2 & LOAD_STATE2_HDM)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
480
|
srvdata->use_log.items.hdm_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
481
482
|
}
if((state.onoff_state2 & LOAD_STATE2_DP)!=0){
|
14a73498f
김태훈
소스 코드 정리
|
483
|
srvdata->use_log.items.dp_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
484
485
|
}
if((state.onoff_state2 & LOAD_STATE2_UNP) !=0){
|
14a73498f
김태훈
소스 코드 정리
|
486
|
srvdata->use_log.items.unp_open+=1;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
487
488
|
}
}
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
489
490
491
492
493
494
495
496
|
//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
고영탁
엔지니어 모드 디버깅
|
497
|
realdata.b.wsv_open = (state.onoff_state2&LOAD_STATE2_WSV)==0?0:1;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
498
|
realdata.b.ssv_open = (state.onoff_state2&LOAD_STATE2_SSV)==0?0:1;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
499
500
501
|
if( (state.reserved11&0x0018) == 0x0018) realdata.b.water_level = water_level_high;
else if( (state.reserved11&0x0018) == 0x0000) realdata.b.water_level = water_level_low;
|
3f5f5d4ce
고영탁
디버깅 요청 사항 적용
|
502
|
else realdata.b.water_level = water_level_normal;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
503
|
|
14a73498f
김태훈
소스 코드 정리
|
504
505
506
|
if(srvdata->sensor_log.items.B1.high_temp.itemp < state.sensor1 ){
srvdata->sensor_log.items.B1.high_temp.itemp = state.sensor1;
srvdata->sensor_log.items.B1.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
507
508
|
}
curSensorValue[0].itemp = state.sensor1;
|
14a73498f
김태훈
소스 코드 정리
|
509
510
511
|
if(srvdata->sensor_log.items.B2.high_temp.itemp < state.sensor2 ){
srvdata->sensor_log.items.B2.high_temp.itemp = state.sensor2;
srvdata->sensor_log.items.B2.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
512
513
|
}
curSensorValue[1].itemp = state.sensor2;
|
14a73498f
김태훈
소스 코드 정리
|
514
515
516
|
if(srvdata->sensor_log.items.B3_1.high_temp.itemp < state.sensor6 ){
srvdata->sensor_log.items.B3_1.high_temp.itemp = state.sensor6;
srvdata->sensor_log.items.B3_1.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
517
518
|
}
curSensorValue[5].itemp = state.sensor6;
|
14a73498f
김태훈
소스 코드 정리
|
519
520
521
|
if(srvdata->sensor_log.items.B4.high_temp.itemp < state.sensor4 ){
srvdata->sensor_log.items.B4.high_temp.itemp = state.sensor4;
srvdata->sensor_log.items.B4.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
522
523
|
}
curSensorValue[3].itemp = state.sensor4;
|
14a73498f
김태훈
소스 코드 정리
|
524
525
526
|
if(srvdata->sensor_log.items.B5.high_temp.itemp < state.sensor5 ){
srvdata->sensor_log.items.B5.high_temp.itemp = state.sensor5;
srvdata->sensor_log.items.B5.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
527
528
|
}
curSensorValue[4].itemp = state.sensor5;
|
14a73498f
김태훈
소스 코드 정리
|
529
530
531
|
if(srvdata->sensor_log.items.B3_2.high_temp.itemp < state.sensor7 ){
srvdata->sensor_log.items.B3_2.high_temp.itemp = state.sensor7;
srvdata->sensor_log.items.B3_2.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
532
533
|
}
curSensorValue[6].itemp = state.sensor7;
|
14a73498f
김태훈
소스 코드 정리
|
534
535
536
|
if(srvdata->sensor_log.items.B3_3.high_temp.itemp < state.sensor8 ){
srvdata->sensor_log.items.B3_3.high_temp.itemp = state.sensor8;
srvdata->sensor_log.items.B3_3.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
537
538
|
}
curSensorValue[7].itemp = state.sensor8;
|
14a73498f
김태훈
소스 코드 정리
|
539
540
541
|
if(srvdata->sensor_log.items.B3_4.high_temp.itemp < state.sensor9 ){
srvdata->sensor_log.items.B3_4.high_temp.itemp = state.sensor9;
srvdata->sensor_log.items.B3_4.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
542
543
|
}
curSensorValue[8].itemp = state.sensor9;
|
14a73498f
김태훈
소스 코드 정리
|
544
545
546
|
if(srvdata->sensor_log.items.mbar1.high_temp.utemp < state.sensor11 ){
srvdata->sensor_log.items.mbar1.high_temp.utemp = state.sensor11;
srvdata->sensor_log.items.mbar1.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
547
548
|
}
curSensorValue[10].utemp = state.sensor11;
|
14a73498f
김태훈
소스 코드 정리
|
549
550
551
|
if(srvdata->sensor_log.items.mbar2.high_temp.utemp < state.sensor12 ){
srvdata->sensor_log.items.mbar2.high_temp.utemp = state.sensor12;
srvdata->sensor_log.items.mbar2.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
552
553
|
}
curSensorValue[11].utemp = state.sensor12;
|
14a73498f
김태훈
소스 코드 정리
|
554
555
556
|
if(srvdata->sensor_log.items.pcb.high_temp.itemp < state.sensor13 ){
srvdata->sensor_log.items.pcb.high_temp.itemp = state.sensor13;
srvdata->sensor_log.items.pcb.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
557
558
|
}
curSensorValue[12].itemp = state.sensor13;
|
14a73498f
김태훈
소스 코드 정리
|
559
560
561
|
if(srvdata->sensor_log.items.adc.high_temp.itemp < state.sensor14 ){
srvdata->sensor_log.items.adc.high_temp.itemp = state.sensor14;
srvdata->sensor_log.items.adc.last_high_time = ltime;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
562
563
|
}
curSensorValue[13].itemp = state.sensor14;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
564
|
}
|
42410a75c
김태훈
오타 수정
|
565
|
void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
566
567
|
QWidget* pParent;
uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0]));
|
cefd483e4
고영탁
에러 수정
|
568
|
qDebug() << (uint32_t) (item - &(srvdata->err_log.values[0])) << "ERROR Fired!";
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
569
|
if(m_pLastErrItem == item ){
|
14a73498f
김태훈
소스 코드 정리
|
570
571
572
|
srvdata->err_log.items.repeat_error.fired_cnt =item->fired_cnt;
srvdata->err_log.items.repeat_error.first_fired = item->first_fired;
srvdata->err_log.items.repeat_error.last_fried = item->last_fried;
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
573
574
|
}
m_pLastErrItem = item;
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
575
|
qDebug() << "error type" << errtype;
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
576
|
if(errtype >= error_type_onlychk){
|
652e9cd54
고영탁
Merge
|
577
578
579
580
|
item->fired_cnt+=1;
if(item->first_fired == 0) item->first_fired = ltime;
item->last_fried = ltime;
}
|
cefd483e4
고영탁
에러 수정
|
581
|
|
d1d566994
고영탁
에러 발생 시그널 추가
|
582
|
emit onErrorFired(erridx);
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
583
584
585
586
587
588
589
590
591
592
593
594
|
if(errtype>=error_type_chkclrstopcmd){
qDebug() << "exec killchild";
if(MainWindow::killChildCook()){
pParent = MainWindow::getInstance();
}
else{
pParent = QApplication::activeWindow();
}
}
else{
pParent = QApplication::activeWindow();
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
595
596
597
598
|
switch(errtype){
case error_type_onlypop:
case error_type_popclr:
case error_type_popnonclr:
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
599
|
case error_type_popclrstopcmd:
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
600
|
{
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
601
602
603
604
605
606
607
|
if(m_mapPopupList.find(erridx) == m_mapPopupList.end()){
ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle , (errtype > error_type_clrsplit), erridx);
connect(dlg,SIGNAL(closedErrorPopup(int)), this, SLOT(onErrorPopupClosed(int)));
m_mapPopupList.insert(erridx,dlg);
qApp->setActiveWindow(dlg);
dlg->showFullScreen();
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
608
609
|
break;
}
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
610
|
case error_type_engclr:
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
611
612
|
case error_type_engnonclr:
case error_type_onlyeng:
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
613
|
case error_type_engclrstopcmd:
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
614
|
{
|
d66410abd
고영탁
에러 팝업 형태 변경
|
615
616
|
//EngineerMenuWindow *w = new EngineerMenuWindow(0);
//w->showFullScreen();
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
617
|
if(m_mapPopupList.find(erridx)==m_mapPopupList.end()){
|
b915c1b54
고영탁
팝업 처리 수정
|
618
|
ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle, false,erridx);
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
619
620
621
|
connect(dlg,SIGNAL(closedErrorPopup(int)),this,SLOT(onErrorPopupClosed(int)));
m_mapPopupList.insert(erridx,dlg);
dlg->showFullScreen();
|
b915c1b54
고영탁
팝업 처리 수정
|
622
|
ServicePassInputDlg *w = new ServicePassInputDlg(pParent, NORMAL_SERVICE_PASS_MODE, (errtype > error_type_clrsplit));
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
623
624
625
|
//w->exec();
connect(dlg, SIGNAL(destroyed(QObject*)), w, SLOT(showFullScreen()));
}
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
626
627
628
629
630
|
break;
}
default:
break;
}
|
cefd483e4
고영탁
에러 수정
|
631
|
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
632
633
634
635
636
637
638
639
640
641
642
643
|
// if(errtype > error_type_clrsplit){
// //에러 클리어 명령 송신
//// if(errtype == error_type_engclr){
//// //확인 후 송신
//// bNeedErrorClear = true;
//// }
//// else{
//// //에러클리어 메시지 즉시 송신
// qDebug() << "send error clr";
// udp->set(TG_ERROR_CLEAR,0xCECE);
//// }
//}
|
3fd8255a1
고영탁
팝업 관련 동작 정의 수정
|
644
|
|
c50beef02
고영탁
에러 처리 루틴 및 에러 처리 ...
|
645
|
|
652e9cd54
고영탁
Merge
|
646
|
}
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
647
|
|
42410a75c
김태훈
오타 수정
|
648
|
realtime_data OvenStatistics::getPartsRealtimeData(void){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
649
650
|
return realdata;
}
|
42410a75c
김태훈
오타 수정
|
651
|
uint8_t OvenStatistics::getSensorTypeByIdx(uint16_t idx){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
652
653
654
|
if(idx > MAX_LOG_SENSOR) return 0;
return sensorTypeInfo[idx];
}
|
42410a75c
김태훈
오타 수정
|
655
|
type_temp OvenStatistics::getCurSensorValueByIdx(uint16_t idx){
|
6a965b9f1
고영탁
엔지니어 모드 2차 구현
|
656
657
|
return curSensorValue[idx];
}
|
cefd483e4
고영탁
에러 수정
|
658
|
|
91480de3c
고영탁
센서 실시간 데이터 리셋 기능 추가
|
659
660
661
662
|
void OvenStatistics::resetSensorHistory()
{
srvdata->resetSensorlogData();
}
|
a7e8cc0aa
고영탁
버그 및 동작 개선
|
663
664
665
666
|
void OvenStatistics::onErrorPopupClosed(int erridx){
qDebug() << "error idx" << erridx;
if(m_mapPopupList.find(erridx)!= m_mapPopupList.end()){
m_mapPopupList.remove(erridx);
|
cefd483e4
고영탁
에러 수정
|
667
668
|
}
}
|