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