Commit b52cba705c4d721283ea3225b1bfee17faf05e8a

Authored by 김태훈
Exists in master and in 2 other branches fhd, fhd-demo

Merge branch 'master' of 192.168.10.12:falinux/1611_0007_prime_oven

app/gui/oven_control/config.cpp
@@ -153,12 +153,12 @@ bool Config::saveConfig(void){ @@ -153,12 +153,12 @@ bool Config::saveConfig(void){
153 } 153 }
154 154
155 bool Config::loadConfig(){ 155 bool Config::loadConfig(){
156 - char buff[sizeof(config_lists)+1]; 156 + uint8_t buff[sizeof(config_lists)+1];
157 qint64 readlen; 157 qint64 readlen;
158 QFile file(CONFIG_FILE_NAME); 158 QFile file(CONFIG_FILE_NAME);
159 initConfig(); 159 initConfig();
160 if(file.open(QIODevice::ReadOnly)){ 160 if(file.open(QIODevice::ReadOnly)){
161 - readlen = file.read(buff,sizeof(config_lists)+1); 161 + readlen = file.read((char *) buff,sizeof(config_lists)+1);
162 file.close(); 162 file.close();
163 if(readlen != (sizeof(configlist)+1)){ 163 if(readlen != (sizeof(configlist)+1)){
164 //File size is wrong. apply default config value & save default value; 164 //File size is wrong. apply default config value & save default value;
@@ -166,7 +166,7 @@ bool Config::loadConfig(){ @@ -166,7 +166,7 @@ bool Config::loadConfig(){
166 saveConfig(); 166 saveConfig();
167 return false; 167 return false;
168 } 168 }
169 - if(buff[sizeof(config_lists)] ==0x9c){ 169 + if (buff[sizeof(config_lists)] ==0x9c){
170 memcpy(configlist.data,buff,sizeof(config_lists)); 170 memcpy(configlist.data,buff,sizeof(config_lists));
171 qDebug() << "loading config file success"; 171 qDebug() << "loading config file success";
172 } 172 }
app/gui/oven_control/configmastervolumedlg.cpp
  1 +
1 #include "configmastervolumedlg.h" 2 #include "configmastervolumedlg.h"
2 #include "ui_configmastervolumedlg.h" 3 #include "ui_configmastervolumedlg.h"
3 4
@@ -19,8 +20,9 @@ ConfigVolumeDlg::ConfigVolumeDlg(QWidget *parent, ConfigType type) : @@ -19,8 +20,9 @@ ConfigVolumeDlg::ConfigVolumeDlg(QWidget *parent, ConfigType type) :
19 qApp->setActiveWindow(this); 20 qApp->setActiveWindow(this);
20 this->setFocus(); 21 this->setFocus();
21 22
22 - foreach (QPushButton *button, findChildren<QPushButton *>())  
23 - connect(button, &QPushButton::pressed, SoundPlayer::playClick); 23 +
  24 + connect(ui->ctrBtnOk, &QPushButton::pressed, SoundPlayer::playClick);
  25 + connect(ui->ctrBtnCancel, &QPushButton::pressed, SoundPlayer::playClick);
24 26
25 27
26 if(type == config_keypad_sound2){ 28 if(type == config_keypad_sound2){
app/gui/oven_control/configwindow.cpp
@@ -283,17 +283,18 @@ void ConfigWindow::reloadUi(void){ @@ -283,17 +283,18 @@ void ConfigWindow::reloadUi(void){
283 283
284 Config* cfg = Config::getInstance(); 284 Config* cfg = Config::getInstance();
285 QString strtemp=""; 285 QString strtemp="";
  286 +
286 for(i = 0; i < m_vectorMenuList.count();i++){ 287 for(i = 0; i < m_vectorMenuList.count();i++){
287 pw = pws[i]; 288 pw = pws[i];
288 ui->scrollAreaMenuLayout->removeWidget(pw); 289 ui->scrollAreaMenuLayout->removeWidget(pw);
289 - delete pw; 290 + pw->deleteLater();
290 } 291 }
291 m_vectorMenuList.clear(); 292 m_vectorMenuList.clear();
292 293
293 for(i=0;i<m_vectorFavorMenuList.count();i++){ 294 for(i=0;i<m_vectorFavorMenuList.count();i++){
294 fpw = fpws[i]; 295 fpw = fpws[i];
295 ui->scrollAreaMenuLayout->removeWidget(fpw); 296 ui->scrollAreaMenuLayout->removeWidget(fpw);
296 - delete fpw; 297 + fpw->deleteLater();
297 } 298 }
298 m_vectorFavorMenuList.clear(); 299 m_vectorFavorMenuList.clear();
299 300
app/gui/oven_control/cooldownpopup.cpp
@@ -6,10 +6,9 @@ @@ -6,10 +6,9 @@
6 #include "soundplayer.h" 6 #include "soundplayer.h"
7 #include "stringer.h" 7 #include "stringer.h"
8 8
9 -CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : 9 +CooldownPopup::CooldownPopup(QWidget *parent, int target) :
10 QWidget(parent), 10 QWidget(parent),
11 ui(new Ui::CooldownPopup), 11 ui(new Ui::CooldownPopup),
12 - oven(oven),  
13 showingCurrentTemp(false), 12 showingCurrentTemp(false),
14 needCookStarting(false) 13 needCookStarting(false)
15 { 14 {
@@ -17,6 +16,8 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : @@ -17,6 +16,8 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
17 16
18 setAttribute(Qt::WA_DeleteOnClose); 17 setAttribute(Qt::WA_DeleteOnClose);
19 18
  19 + oven = Oven::getInstance();
  20 +
20 lastDisplayedFanLevel = -1; 21 lastDisplayedFanLevel = -1;
21 lastDisplayedHumidification = !oven->humidification(); 22 lastDisplayedHumidification = !oven->humidification();
22 23
@@ -33,6 +34,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : @@ -33,6 +34,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) :
33 34
34 ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png"); 35 ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png");
35 ui->tempSlider->setRange(30, 300); 36 ui->tempSlider->setRange(30, 300);
  37 + ui->tempSlider->setValue(target);
36 38
37 cookingFanLevel = oven->fan(); 39 cookingFanLevel = oven->fan();
38 expectingFanLevel = oven->maxFan(); 40 expectingFanLevel = oven->maxFan();
app/gui/oven_control/cooldownpopup.h
@@ -15,7 +15,7 @@ class CooldownPopup : public QWidget @@ -15,7 +15,7 @@ class CooldownPopup : public QWidget
15 Q_OBJECT 15 Q_OBJECT
16 16
17 public: 17 public:
18 - explicit CooldownPopup(QWidget *parent = 0, Oven *oven = 0); 18 + explicit CooldownPopup(QWidget *parent = 0, int target = 30);
19 ~CooldownPopup(); 19 ~CooldownPopup();
20 20
21 protected: 21 protected:
app/gui/oven_control/define.h
@@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
4 #include <QtCore> 4 #include <QtCore>
5 5
6 #define MAJOR_VER 0 6 #define MAJOR_VER 0
7 -#define MINOR_VER 3  
8 -#define HOTFIX_VER 13 7 +#define MINOR_VER 4
  8 +#define HOTFIX_VER 1
9 9
10 namespace Define 10 namespace Define
11 { 11 {
app/gui/oven_control/errorpopupdlg.cpp
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 #include "soundplayer.h" 5 #include "soundplayer.h"
6 #include "udphandler.h" 6 #include "udphandler.h"
7 7
8 -ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &MsgDesc, const QString &MsgTitle, bool sendClrCmd,int erridx) : 8 +ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &MsgDesc, const QString &MsgTitle, bool sendClrCmd,int erridx, int errsound) :
9 QDialog(parent), 9 QDialog(parent),
10 ui(new Ui::ErrorPopupDlg) 10 ui(new Ui::ErrorPopupDlg)
11 { 11 {
@@ -15,14 +15,36 @@ ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &amp;MsgDesc, const QStr @@ -15,14 +15,36 @@ ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &amp;MsgDesc, const QStr
15 this->setWindowFlags(Qt::FramelessWindowHint); 15 this->setWindowFlags(Qt::FramelessWindowHint);
16 16
17 //ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint); 17 //ui->centralwidget->setWindowFlags(Qt::FramelessWindowHint);
  18 +
  19 + //if(MsgDesc.length()> )
  20 +
  21 + qDebug() << "msgdesc length is " << MsgDesc.length();
  22 +
  23 +
  24 +
  25 + if(MsgDesc.size()>100){
  26 + QFont font = ui->ctrlWarnDescription->font();
  27 + font.setPointSize(font.pointSize() - 1);
  28 + ui->ctrlWarnDescription->setFont(font);
  29 + }
  30 +
  31 +
  32 +
18 ui->ctrlWarnDescription->setText(MsgDesc); 33 ui->ctrlWarnDescription->setText(MsgDesc);
19 ui->ctrlWarnTitle->setText(MsgTitle); 34 ui->ctrlWarnTitle->setText(MsgTitle);
20 m_pParent = parent; 35 m_pParent = parent;
21 36
22 - foreach (QPushButton *button, findChildren<QPushButton *>())  
23 - connect(button, &QPushButton::pressed, SoundPlayer::playClick); 37 +// foreach (QPushButton *button, findChildren<QPushButton *>())
  38 +// connect(button, &QPushButton::pressed, SoundPlayer::playClick);
24 m_bClrCmd = sendClrCmd; 39 m_bClrCmd = sendClrCmd;
25 m_nErrIdx = erridx; 40 m_nErrIdx = erridx;
  41 +
  42 + if(errsound == 1){
  43 + SoundPlayer::repeatError1();
  44 + }
  45 + else if(errsound ==2){
  46 + SoundPlayer::repeatError2();
  47 + }
26 } 48 }
27 49
28 ErrorPopupDlg::~ErrorPopupDlg() 50 ErrorPopupDlg::~ErrorPopupDlg()
@@ -32,6 +54,7 @@ ErrorPopupDlg::~ErrorPopupDlg() @@ -32,6 +54,7 @@ ErrorPopupDlg::~ErrorPopupDlg()
32 54
33 void ErrorPopupDlg::on_ctrlOkBtn_clicked() 55 void ErrorPopupDlg::on_ctrlOkBtn_clicked()
34 { 56 {
  57 + SoundPlayer::stop();
35 emit closedErrorPopup(m_nErrIdx); 58 emit closedErrorPopup(m_nErrIdx);
36 qApp->setActiveWindow(m_pParent); 59 qApp->setActiveWindow(m_pParent);
37 this->hide(); 60 this->hide();
app/gui/oven_control/errorpopupdlg.h
@@ -12,7 +12,7 @@ class ErrorPopupDlg : public QDialog @@ -12,7 +12,7 @@ class ErrorPopupDlg : public QDialog
12 Q_OBJECT 12 Q_OBJECT
13 13
14 public: 14 public:
15 - explicit ErrorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0, const QString &MsgTitle=0, bool sendClrCmd = false, int erridx = -1); 15 + explicit ErrorPopupDlg(QWidget *parent = 0, const QString &MsgDesc=0, const QString &MsgTitle=0, bool sendClrCmd = false, int erridx = -1, int errsound=0);
16 ~ErrorPopupDlg(); 16 ~ErrorPopupDlg();
17 17
18 signals: 18 signals:
app/gui/oven_control/fileprocessdlg.cpp
@@ -658,7 +658,7 @@ void FileProcessDlg::configDownload(){ @@ -658,7 +658,7 @@ void FileProcessDlg::configDownload(){
658 } 658 }
659 659
660 void FileProcessDlg::configUpload(){ 660 void FileProcessDlg::configUpload(){
661 - char buff[sizeof(config_lists)+1]; 661 + uint8_t buff[sizeof(config_lists)+1];
662 qint64 readlen; 662 qint64 readlen;
663 QString strUsbPath; 663 QString strUsbPath;
664 QString strSrcPath; 664 QString strSrcPath;
@@ -668,7 +668,7 @@ void FileProcessDlg::configUpload(){ @@ -668,7 +668,7 @@ void FileProcessDlg::configUpload(){
668 QFile srcFile(strSrcPath); 668 QFile srcFile(strSrcPath);
669 //Check Source File is valid this machine 669 //Check Source File is valid this machine
670 if(srcFile.open(QIODevice::ReadOnly)){ 670 if(srcFile.open(QIODevice::ReadOnly)){
671 - readlen = srcFile.read(buff,sizeof(config_lists)+1); 671 + readlen = srcFile.read((char *) buff,sizeof(config_lists)+1);
672 srcFile.close(); 672 srcFile.close();
673 if(readlen != (sizeof(config_lists)+1)) { 673 if(readlen != (sizeof(config_lists)+1)) {
674 qDebug() << "SRC config.ini file size wrong"; 674 qDebug() << "SRC config.ini file size wrong";
@@ -682,7 +682,7 @@ void FileProcessDlg::configUpload(){ @@ -682,7 +682,7 @@ void FileProcessDlg::configUpload(){
682 QTimer::singleShot(1000,this,SLOT(close())); 682 QTimer::singleShot(1000,this,SLOT(close()));
683 return; 683 return;
684 } 684 }
685 - cfg->copyConfigArea(buff); 685 + cfg->copyConfigArea((char *) buff);
686 cfg->saveConfig(); 686 cfg->saveConfig();
687 cfg->applyConfig(); 687 cfg->applyConfig();
688 } 688 }
app/gui/oven_control/keepwarmpopup.cpp
@@ -67,9 +67,9 @@ void KeepWarmPopup::onEncoderRight() @@ -67,9 +67,9 @@ void KeepWarmPopup::onEncoderRight()
67 67
68 } 68 }
69 69
70 -void KeepWarmPopup::onEncoderClicked(QWidget *clicked) 70 +void KeepWarmPopup::onEncoderClicked(QWidget */*clicked*/)
71 { 71 {
72 - 72 + close();
73 } 73 }
74 74
75 void KeepWarmPopup::updateView() 75 void KeepWarmPopup::updateView()
app/gui/oven_control/manualcookwindow.cpp
@@ -988,7 +988,7 @@ void ManualCookWindow::on_cooldownButton_clicked() @@ -988,7 +988,7 @@ void ManualCookWindow::on_cooldownButton_clicked()
988 { 988 {
989 startCookingTimer.stop(); 989 startCookingTimer.stop();
990 990
991 - CooldownPopup *p = new CooldownPopup(this, oven); 991 + CooldownPopup *p = new CooldownPopup(this, 30);
992 p->setWindowModality(Qt::WindowModal); 992 p->setWindowModality(Qt::WindowModal);
993 p->showFullScreen(); 993 p->showFullScreen();
994 994
app/gui/oven_control/ovenstatics.cpp
@@ -74,6 +74,7 @@ void OvenStatistics::onDataChanged() @@ -74,6 +74,7 @@ void OvenStatistics::onDataChanged()
74 time(&ltime); 74 time(&ltime);
75 75
76 if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate = 1; 76 if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate = 1;
  77 + else if(state.cleaning_sate != 0 ) cookingstate = 2;
77 78
78 if(oven->cooking() && control.system){ 79 if(oven->cooking() && control.system){
79 if(state.door_state ==1 && curdoorstate==0){ 80 if(state.door_state ==1 && curdoorstate==0){
@@ -93,11 +94,11 @@ void OvenStatistics::onDataChanged() @@ -93,11 +94,11 @@ void OvenStatistics::onDataChanged()
93 } 94 }
94 curSysErrorState = state.system_error; 95 curSysErrorState = state.system_error;
95 96
96 - errstatetemp = state.communication_error;  
97 - if(errstatetemp!=0 && errstatetemp != curCommErrorState ){  
98 - processCommError( (errstatetemp & comm_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );  
99 - }  
100 - curCommErrorState = errstatetemp; 97 +// errstatetemp = state.communication_error;
  98 +// if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
  99 +// processCommError( (errstatetemp & comm_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );
  100 +// }
  101 +// curCommErrorState = errstatetemp;
101 102
102 errstatetemp = state.sensor_error; 103 errstatetemp = state.sensor_error;
103 if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){ 104 if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){
@@ -105,11 +106,11 @@ void OvenStatistics::onDataChanged() @@ -105,11 +106,11 @@ void OvenStatistics::onDataChanged()
105 } 106 }
106 curSensorErrorState = errstatetemp; 107 curSensorErrorState = errstatetemp;
107 108
108 - errstatetemp = state.controller_error;  
109 - if(errstatetemp != 0 && errstatetemp != curControlErrorState){  
110 - processStateError((errstatetemp&state_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime);  
111 - }  
112 - curControlErrorState = errstatetemp; 109 +// errstatetemp = state.controller_error;
  110 +// if(errstatetemp != 0 && errstatetemp != curControlErrorState){
  111 +// processStateError((errstatetemp&state_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime);
  112 +// }
  113 +// curControlErrorState = errstatetemp;
113 114
114 } 115 }
115 116
@@ -121,71 +122,72 @@ void OvenStatistics::processSensorError(uint16_t errflag, time_t ltime){ @@ -121,71 +122,72 @@ void OvenStatistics::processSensorError(uint16_t errflag, time_t ltime){
121 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; 122 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
122 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; 123 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
123 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON; 124 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
  125 + else if(control.system !=0 && this->state.cleaning_sate !=0 ) state = SYS_ON_WASH;
124 else state = SYS_ON_COOK_OFF; 126 else state = SYS_ON_COOK_OFF;
125 127
126 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){ 128 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){
127 item = &(srvdata->err_log.items.inner_temp_fail); 129 item = &(srvdata->err_log.items.inner_temp_fail);
128 - strTitle = tr("내부 온도 이상 발생");  
129 - strMsg = tr("내부 온도 센서에 이상이 발생하였습니다.");  
130 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,strTitle, ltime); 130 + strTitle = tr("내부 온도 센서 이상");
  131 + strMsg = tr("조리실 내부 온도센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  132 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_1],strMsg,strTitle, ltime, sensor_err_sound_def[SENSOR_ERR_SENSOR_1]);
131 } 133 }
132 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){ 134 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){
133 item = &(srvdata->err_log.items.qunching_temp_fail); 135 item = &(srvdata->err_log.items.qunching_temp_fail);
134 - strTitle = tr("퀀칭 온도 이상 발생");  
135 - strMsg = tr("퀀칭 온도에 이상이 발생하였습니다.");  
136 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,strTitle, ltime); 136 + strTitle = tr("배수 탱크 온도 센서 이상");
  137 + strMsg = tr("배수 탱크 온도센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  138 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_2],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_2]);
137 } 139 }
138 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){ 140 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){
139 //Reserved allerrornoe 설정 141 //Reserved allerrornoe 설정
140 item = &(srvdata->err_log.items.qunching_temp_fail); 142 item = &(srvdata->err_log.items.qunching_temp_fail);
141 - strTitle = tr("퀀칭 온도 이상 발생");  
142 - strMsg = tr("퀀칭 온도 센서에 이상이 발생하였습니다.");  
143 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,strTitle, ltime); 143 + strTitle = tr("퀀칭 온도 센서 발생");
  144 + strMsg = tr("퀀칭 온도센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  145 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_3],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_3]);
144 } 146 }
145 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){ 147 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){
146 item = &(srvdata->err_log.items.wall_temp1_fail); 148 item = &(srvdata->err_log.items.wall_temp1_fail);
147 - strTitle = tr("벽면 온도 이상 발생");  
148 - strMsg = tr("벽면 온도 센서에 이상이 발생하였습니다.");  
149 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,strTitle, ltime); 149 + strTitle = tr("벽면 온도 센서 이상");
  150 + strMsg = tr("조리실 벽면 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  151 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_4],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_4]);
150 } 152 }
151 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){ 153 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){
152 item = &(srvdata->err_log.items.steam_gen_temp_fail); 154 item = &(srvdata->err_log.items.steam_gen_temp_fail);
153 - strTitle = tr("스팀제네레이터 온도 이상 발생");  
154 - strMsg = tr("스팀제네레이터 온도 센서에 이상이 발생하였습니다.");  
155 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,strTitle, ltime); 155 + strTitle = tr("스팀발생기 온도 센서 이상");
  156 + strMsg = tr("스팀발생기 내부 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  157 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_5],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_5]);
156 } 158 }
157 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){ 159 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){
158 item = &(srvdata->err_log.items.meatprove_temp1_fail); 160 item = &(srvdata->err_log.items.meatprove_temp1_fail);
159 - strTitle = tr("미트프로브 온도 이상 발생");  
160 - strMsg = tr("미트프로브 온도 센서에 이상이 발생하였습니다.");  
161 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,strTitle, ltime); 161 + strTitle = tr("중심온도 센서 이상");
  162 + strMsg = tr("중심온도계 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  163 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_6],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_6]);
162 } 164 }
163 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){ 165 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){
164 //Reseved 166 //Reseved
165 item = &(srvdata->err_log.items.meatprove_temp2_fail); 167 item = &(srvdata->err_log.items.meatprove_temp2_fail);
166 - strTitle = tr("미트프로브2 온도 이상 발생");  
167 - strMsg = tr("미트프로브2 온도 센서에 이상이 발생하였습니다.");  
168 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg , strTitle, ltime); 168 + strTitle = tr("중심온도 센서 이상");
  169 + strMsg = tr("중심온도계 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  170 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_7],strMsg , strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_7]);
169 } 171 }
170 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){ 172 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){
171 //Reserved 173 //Reserved
172 item = &(srvdata->err_log.items.meatprove_temp3_fail); 174 item = &(srvdata->err_log.items.meatprove_temp3_fail);
173 - strMsg = tr("미트프로브3 온도 센서에 이상이 발생하였습니다.");  
174 - strTitle = tr("미트프로브3 온도 이상 발생");  
175 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,strTitle, ltime); 175 + strTitle = tr("중심온도 센서 이상");
  176 + strMsg = tr("중심온도계 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  177 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_8],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_8]);
176 } 178 }
177 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){ 179 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){
178 //Reserved 180 //Reserved
179 item = &(srvdata->err_log.items.meatprove_temp4_fail); 181 item = &(srvdata->err_log.items.meatprove_temp4_fail);
180 - strMsg = tr("미트프로브4 온도 센서에 이상이 발생하였습니다.");  
181 - strTitle = tr("미트프로브4 온도 이상 발생");  
182 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,strTitle, ltime); 182 + strTitle = tr("중심온도 센서 이상");
  183 + strMsg = tr("중심온도계 센서 오류가 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  184 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_9],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_9]);
183 } 185 }
184 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){ 186 if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){
185 item = &(srvdata->err_log.items.pcb_temp_fail); 187 item = &(srvdata->err_log.items.pcb_temp_fail);
186 - strMsg = tr("PCB 온도 센서에 이상이 발생하였습니다.");  
187 - strTitle = tr("PCB 온도 이상 발생");  
188 - processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,strTitle, ltime); 188 + strTitle = tr("PCB온도 과열 이상");
  189 + strMsg = tr("PCB 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  190 + processErrorItems(item,sensor_err_type_def[state][SENSOR_ERR_SENSOR_10],strMsg,strTitle, ltime,sensor_err_sound_def[SENSOR_ERR_SENSOR_10]);
189 } 191 }
190 } 192 }
191 193
@@ -197,37 +199,38 @@ void OvenStatistics::processCommError(uint16_t errflag, time_t ltime){ @@ -197,37 +199,38 @@ void OvenStatistics::processCommError(uint16_t errflag, time_t ltime){
197 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; 199 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
198 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; 200 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
199 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON; 201 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
  202 + else if(control.system !=0 && this->state.cleaning_sate !=0 ) state = SYS_ON_WASH;
200 else state = SYS_ON_COOK_OFF; 203 else state = SYS_ON_COOK_OFF;
201 204
202 if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){ 205 if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){
203 item = &(srvdata->err_log.items.upper_pan_fail); 206 item = &(srvdata->err_log.items.upper_pan_fail);
204 - strMsg = tr("상부 송풍기 통신 이상 발생");  
205 - strTitle = tr("상부 송풍기 이상 발생");  
206 - processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,strTitle, ltime); 207 + strTitle = tr("상부 버너 컨트롤러 통신 이상");
  208 + strMsg = tr("상부 버너 컨트롤러 PCB 통신 불량이 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  209 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER1],strMsg,strTitle, ltime, comm_err_sound_def[COMM_ERR_BUNNER1]);
207 } 210 }
208 if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){ 211 if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){
209 item = &(srvdata->err_log.items.lower_pan_fail); 212 item = &(srvdata->err_log.items.lower_pan_fail);
210 - strMsg = tr("하부 송풍기 통신 이상 발생");  
211 - strTitle = tr("하부 송풍기 이상 발생");  
212 - processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime); 213 + strTitle = tr("하부 버너 컨트롤러 통신 이상");
  214 + strMsg = tr("하 버너 컨트롤러 PCB 통신 불량이 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  215 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime, comm_err_sound_def[COMM_ERR_BUNNER2]);
213 } 216 }
214 if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){ 217 if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){
215 item = &(srvdata->err_log.items.steam_pan_fail); 218 item = &(srvdata->err_log.items.steam_pan_fail);
216 - strMsg = tr("스팀 송풍기 통신 이상 발생");  
217 - strTitle = tr("스팀 송풍기 이상 발생");  
218 - processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,strTitle, ltime); 219 + strTitle = tr("스팀 버너 컨트롤러 통신 이상");
  220 + strMsg = tr("스팀발생기 버너 컨트롤러 PCB 통신 불량이 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  221 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER3],strMsg,strTitle, ltime, comm_err_sound_def[COMM_ERR_BUNNER3]);
219 } 222 }
220 if(errflag & MAKE_MASK(COMM_ERR_LOWERFAN)){ 223 if(errflag & MAKE_MASK(COMM_ERR_LOWERFAN)){
221 item = &(srvdata->err_log.items.lower_motor_fail); 224 item = &(srvdata->err_log.items.lower_motor_fail);
222 - strMsg = tr("하부 FAN 컨트롤러 통신 이상 발생");  
223 - strTitle = tr("하부 FAN 컨트롤러 이상 발생");  
224 - processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime); 225 + strTitle = tr("하부 FAN 모터 컨트롤러 이상");
  226 + strMsg = tr("하부 Fan 모터 컨트롤러 이상 상황이 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  227 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime, comm_err_sound_def[COMM_ERR_LOWERFAN]);
225 } 228 }
226 if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){ 229 if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){
227 item = &(srvdata->err_log.items.upper_motor_fail); 230 item = &(srvdata->err_log.items.upper_motor_fail);
228 - strMsg = tr("상부 FAN 컨트롤러 통신 이상 발생");  
229 - strTitle = tr("상부 FAN 컨트롤러 이상 발생");  
230 - processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime); 231 + strTitle = tr("상부 FAN 모터 컨트롤러 이상");
  232 + strMsg = tr("상부 Fan 모터 컨트롤러 이상 상황이 발생하였습니다.\n제품의 전원을 OFF한 후 다시 ON해 주십시오.\n이 후에도 문제가 해결되지 않을 경우, 서비스센터로 연락하여 주십시오.");
  233 + processErrorItems(item,comm_err_type_def[state][COMM_ERR_BUNNER2],strMsg,strTitle, ltime, comm_err_sound_def[COMM_ERR_UPPERFAN]);
231 } 234 }
232 } 235 }
233 236
@@ -239,37 +242,38 @@ void OvenStatistics::processStateError(uint16_t errflag, time_t ltime){ @@ -239,37 +242,38 @@ void OvenStatistics::processStateError(uint16_t errflag, time_t ltime){
239 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; 242 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
240 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; 243 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
241 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON; 244 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
  245 + else if(control.system !=0 && this->state.cleaning_sate !=0 ) state = SYS_ON_WASH;
242 else state = SYS_ON_COOK_OFF; 246 else state = SYS_ON_COOK_OFF;
243 247
244 if(errflag & MAKE_MASK(STATE_ERR_BUNNER1)){ 248 if(errflag & MAKE_MASK(STATE_ERR_BUNNER1)){
245 item = &(srvdata->err_log.items.upper_pan_fail); 249 item = &(srvdata->err_log.items.upper_pan_fail);
246 strMsg = tr("버너컨트롤러 1 이상 발생하였습니다."); 250 strMsg = tr("버너컨트롤러 1 이상 발생하였습니다.");
247 strTitle = tr("버너컨트롤러 1 이상 발생"); 251 strTitle = tr("버너컨트롤러 1 이상 발생");
248 - processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER1],strMsg,strTitle, ltime); 252 + processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER1],strMsg,strTitle, ltime, state_err_sound_def[STATE_ERR_BUNNER1]);
249 } 253 }
250 if(errflag & MAKE_MASK(STATE_ERR_BUNNER2)){ 254 if(errflag & MAKE_MASK(STATE_ERR_BUNNER2)){
251 item = &(srvdata->err_log.items.lower_pan_fail); 255 item = &(srvdata->err_log.items.lower_pan_fail);
252 strMsg = tr("버너컨트롤러 2 이상 발생하였습니다."); 256 strMsg = tr("버너컨트롤러 2 이상 발생하였습니다.");
253 strTitle = tr("버너컨트롤러 2 이상 발생"); 257 strTitle = tr("버너컨트롤러 2 이상 발생");
254 - processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime); 258 + processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime, state_err_sound_def[STATE_ERR_BUNNER2]);
255 } 259 }
256 if(errflag & MAKE_MASK(STATE_ERR_BUNNER3)){ 260 if(errflag & MAKE_MASK(STATE_ERR_BUNNER3)){
257 item = &(srvdata->err_log.items.steam_pan_fail); 261 item = &(srvdata->err_log.items.steam_pan_fail);
258 strMsg = tr("버너컨트롤러 3 이상 발생하였습니다."); 262 strMsg = tr("버너컨트롤러 3 이상 발생하였습니다.");
259 strTitle = tr("버너컨트롤러 3 이상 발생"); 263 strTitle = tr("버너컨트롤러 3 이상 발생");
260 - processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER3],strMsg,strTitle, ltime); 264 + processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER3],strMsg,strTitle, ltime, state_err_sound_def[STATE_ERR_BUNNER3]);
261 } 265 }
262 if(errflag & MAKE_MASK(STATE_ERR_LOWERFAN)){ 266 if(errflag & MAKE_MASK(STATE_ERR_LOWERFAN)){
263 item = &(srvdata->err_log.items.lower_motor_fail); 267 item = &(srvdata->err_log.items.lower_motor_fail);
264 strMsg = tr("하부 FAN 컨트롤러 이상 발생하였습니다."); 268 strMsg = tr("하부 FAN 컨트롤러 이상 발생하였습니다.");
265 strTitle = tr("하부 FAN 컨트롤러 이상 발생"); 269 strTitle = tr("하부 FAN 컨트롤러 이상 발생");
266 - processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime); 270 + processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime, state_err_sound_def[STATE_ERR_LOWERFAN]);
267 } 271 }
268 if(errflag & MAKE_MASK(STATE_ERR_UPPERFAN)){ 272 if(errflag & MAKE_MASK(STATE_ERR_UPPERFAN)){
269 item = &(srvdata->err_log.items.upper_motor_fail); 273 item = &(srvdata->err_log.items.upper_motor_fail);
270 strMsg = tr("상부 FAN 컨트롤러 이상 발생하였습니다."); 274 strMsg = tr("상부 FAN 컨트롤러 이상 발생하였습니다.");
271 strTitle = tr("상부 FAN 컨트롤러 이상 발생"); 275 strTitle = tr("상부 FAN 컨트롤러 이상 발생");
272 - processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime); 276 + processErrorItems(item,state_err_type_def[state][STATE_ERR_BUNNER2],strMsg,strTitle, ltime, state_err_sound_def[STATE_ERR_UPPERFAN]);
273 } 277 }
274 } 278 }
275 279
@@ -281,73 +285,74 @@ void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){ @@ -281,73 +285,74 @@ void OvenStatistics::processSystemError(uint16_t errflag,time_t ltime){
281 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; 285 if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF;
282 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; 286 else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF;
283 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON; 287 else if(control.system !=0 && bCookingState) state = SYS_ON_COOK_ON;
  288 + else if(control.system !=0 && this->state.cleaning_sate !=0 ) state = SYS_ON_WASH;
284 else state = SYS_ON_COOK_OFF; 289 else state = SYS_ON_COOK_OFF;
285 290
286 if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){ 291 if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){
287 //버너 컨트롤러 1 착화 이상 292 //버너 컨트롤러 1 착화 이상
288 item = &(srvdata->err_log.items.upper_fire_fail); 293 item = &(srvdata->err_log.items.upper_fire_fail);
289 - strMsg = tr("상부 버너 착화가 되지 않습니다.");  
290 - strTitle = tr("상부 버너 착화 이상 발생");  
291 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,strTitle,ltime); 294 + strTitle = tr("상부 버너 착화 이상");
  295 + strMsg = tr("상부 버너 착화 이상 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 후 가스 밸브가 잠겨있는지 확인 해 주십시오.\n가스 밸브가 열려 있는데도 에러 발생 시, 즉시 서비스센터에 연락하여 주십시오.");
  296 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER1],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_FIRE_TRIGGER1]);
292 } 297 }
293 if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){ 298 if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){
294 //버너 컨트롤러 2 착화 이상 299 //버너 컨트롤러 2 착화 이상
295 item = &(srvdata->err_log.items.lower_fire_fail); 300 item = &(srvdata->err_log.items.lower_fire_fail);
296 - strMsg = tr("하부 버너 착화가 되지 않습니다.");  
297 - strTitle = tr("하부 버너 착화 이상 발생");  
298 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,strTitle,ltime); 301 + strTitle = tr("하부 버너 착화 이상");
  302 + strMsg = tr("하부 버너 착화 이상 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 후 가스 밸브가 잠겨있는지 확인 해 주십시오.\n가스 밸브가 열려 있는데도 에러 발생 시, 즉시 서비스센터에 연락하여 주십시오.");
  303 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER2],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_FIRE_TRIGGER1]);
299 } 304 }
300 if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){ 305 if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){
301 item = &(srvdata->err_log.items.steam_fire_fail); 306 item = &(srvdata->err_log.items.steam_fire_fail);
302 - strMsg = tr("스팀 버너 착화가 되지 않습니다.");  
303 - strTitle = tr("스팀 버너 착화 이상 발생");  
304 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime); 307 + strTitle = tr("스팀 버너 착화 이상");
  308 + strMsg = tr("스팀발생기 버너 착화 이상 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 후 가스 밸브가 잠겨있는지 확인 해 주십시오.\n가스 밸브가 열려 있는데도 에러 발생 시, 즉시 서비스센터에 연락하여 주십시오.");
  309 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_FIRE_TRIGGER3],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_FIRE_TRIGGER3]);
305 } 310 }
306 if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){ 311 if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){
307 item = &(srvdata->err_log.items.inner_temp_high_alarm); 312 item = &(srvdata->err_log.items.inner_temp_high_alarm);
308 - strMsg = tr("내부 온도가 과열되었습니다.");  
309 - strTitle = tr("내부 온도 과열 발생");  
310 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,strTitle,ltime); 313 + strTitle = tr("내부 온도 과열 이상");
  314 + strMsg = tr("조리실 내부 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  315 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_OVNE_TEMP_ALARM],strMsg,strTitle,ltime,sys_err_sound_def[SYS_ERR_OVNE_TEMP_ALARM]);
311 } 316 }
312 if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){ 317 if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){
313 //퀀칭 온도 센서 과열 318 //퀀칭 온도 센서 과열
314 item = &(srvdata->err_log.items.qunching_temp_high_alarm); 319 item = &(srvdata->err_log.items.qunching_temp_high_alarm);
315 - strTitle = tr("퀀칭 온도 센서 이상 발생");  
316 - strMsg = tr("퀀칭 온도 센서가 과열되었습니다");  
317 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,strTitle,ltime); 320 + strTitle = tr("배수 탱크 온도 과열 이상");
  321 + strMsg = tr("배수 탱크 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  322 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_QUN_TEMP_ALARM],strMsg,strTitle,ltime,sys_err_sound_def[SYS_ERR_QUN_TEMP_ALARM]);
318 } 323 }
319 if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){ 324 if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){
320 //중심 온도 과열 325 //중심 온도 과열
321 item = &(srvdata->err_log.items.meatprove_temp1_high_alarm); 326 item = &(srvdata->err_log.items.meatprove_temp1_high_alarm);
322 - strTitle = tr("미트프로브 온도 센서 이상 발생.");  
323 - strMsg = tr("미트프로브 온도 센서 과열되었습니다.");  
324 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,strTitle,ltime); 327 + strTitle = tr("중심 온도 과열 이상");
  328 + strMsg = tr("중심온도계 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  329 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_CENTER_TEMP_ALARM],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_CENTER_TEMP_ALARM]);
325 } 330 }
326 if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){ 331 if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){
327 item = &(srvdata->err_log.items.wall_temp1_high_alarm); 332 item = &(srvdata->err_log.items.wall_temp1_high_alarm);
328 - strTitle = tr("벽면 온도 센서 이상 발생.");  
329 - strMsg = tr("벽면 온도 센서가 과열 되었습니다.");  
330 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_WALL_TEMP_ALARM],strMsg,strTitle,ltime); 333 + strTitle = tr("벽면 온도 과열 이상");
  334 + strMsg = tr("조리실 벽면 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  335 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WALL_TEMP_ALARM],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_WALL_TEMP_ALARM]);
331 } 336 }
332 if(errflag & MAKE_MASK(SYS_ERR_STAM_TEMP_ALARM)){ 337 if(errflag & MAKE_MASK(SYS_ERR_STAM_TEMP_ALARM)){
333 item = &(srvdata->err_log.items.steam_gen_temp_high_alram); 338 item = &(srvdata->err_log.items.steam_gen_temp_high_alram);
334 - strTitle = tr("스팀제네레이터 온도 이상 발생.");  
335 - strMsg = tr("스팀제네레이터 온도 센서가 과열 되었습니다.");  
336 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_STAM_TEMP_ALARM],strMsg,strTitle,ltime); 339 + strTitle = tr("스팀 온도 과열 이상");
  340 + strMsg = tr("스팀통 내부 과열 안전장치가 작동하였습니다.\n제품의 전원을 OFF한 뒤, 즉시 서비스센터에 연락하여 주십시오.");
  341 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_STAM_TEMP_ALARM],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_STAM_TEMP_ALARM]);
337 } 342 }
338 if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){ 343 if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){
339 //급수 이상 -> 유량 센서 이상 344 //급수 이상 -> 유량 센서 이상
340 item = &(srvdata->err_log.items.water_level_sensor_fail); 345 item = &(srvdata->err_log.items.water_level_sensor_fail);
341 - strTitle = tr("급수 이상 발생");  
342 - strMsg = tr("급수가 되지 않습니다.");  
343 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,strTitle,ltime); 346 + strTitle = tr("급수 이상");
  347 + strMsg = tr("제품 급수이상 안전장치가 작동하였습니다.\n제품에 들어가는 물 공급을 확인하십시오.\n물 공급이 정상적으로 들어갈 시 즉시 서비스센터에 연락하여 주십시오.\n단수 유무는 샤워건을 사용하십시오.");
  348 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_SPLY_FAIL],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_WATER_SPLY_FAIL]);
344 } 349 }
345 if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){ 350 if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){
346 //급수 이상 -> 수위 센서 이상 351 //급수 이상 -> 수위 센서 이상
347 item = &(srvdata->err_log.items.water_level_sensor_fail); 352 item = &(srvdata->err_log.items.water_level_sensor_fail);
348 - strTitle = tr("급수 이상 발생");  
349 - strMsg = tr("급수가 되지 않습니다.");  
350 - processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,strTitle,ltime); 353 + strTitle = tr("수위 센서 이상");
  354 + strMsg = tr("스팀통 수위 감지 안전장치가 작동하였습니다.\n제품에 들어가는 물 공급을 확인하십시오.\n물 공급이 정상적으로 들어갈 시 즉시 서비스센터에 연락하여 주십시오.\n단수 유무는 샤워건을 사용하십시오.");
  355 + processErrorItems(item, sys_err_type_def[state][SYS_ERR_WATER_LEVEL_FAIL],strMsg,strTitle,ltime, sys_err_sound_def[SYS_ERR_WATER_LEVEL_FAIL]);
351 } 356 }
352 } 357 }
353 358
@@ -367,6 +372,15 @@ void OvenStatistics::oneSecTimerFired(void){ @@ -367,6 +372,15 @@ void OvenStatistics::oneSecTimerFired(void){
367 static int nOneSecCnt=1; 372 static int nOneSecCnt=1;
368 time_t ltime; 373 time_t ltime;
369 374
  375 + static int nStateErrValStableCnt = 0;
  376 + static int nCommErrValStableCnt = 0;
  377 + static uint16_t nCommErrVal = 0;
  378 + static uint16_t nStateErrVal = 0;
  379 + uint16_t errstatetemp=0;
  380 + int cookingstate=0;
  381 + if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate =1;
  382 + else if(state.cleaning_sate !=0) cookingstate = 2;
  383 +
370 ltime = time(NULL); 384 ltime = time(NULL);
371 385
372 nOneSecCnt++; 386 nOneSecCnt++;
@@ -374,11 +388,55 @@ void OvenStatistics::oneSecTimerFired(void){ @@ -374,11 +388,55 @@ void OvenStatistics::oneSecTimerFired(void){
374 srvdata->saveServiceData(); 388 srvdata->saveServiceData();
375 } 389 }
376 390
  391 +
377 if(bDataRefreshed) bDataRefreshed= false; 392 if(bDataRefreshed) bDataRefreshed= false;
378 else{ 393 else{
379 udp->fillControl(control); 394 udp->fillControl(control);
380 udp->fillData(state); 395 udp->fillData(state);
381 } 396 }
  397 +
  398 + if(nCommErrVal != state.communication_error){
  399 + nCommErrVal = state.communication_error;
  400 + if(nCommErrVal ==0) {
  401 + curCommErrorState = nCommErrVal;
  402 + nCommErrValStableCnt = DELAY_ERROR_TIME;
  403 + }
  404 + else {
  405 + nCommErrValStableCnt=0;
  406 + }
  407 + }
  408 + else{
  409 + if(nCommErrValStableCnt >=DELAY_ERROR_TIME){
  410 + errstatetemp = state.communication_error;
  411 + if(errstatetemp!=0 && errstatetemp != curCommErrorState ){
  412 + processCommError( (errstatetemp & comm_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime );
  413 + }
  414 + curCommErrorState = errstatetemp;
  415 + }
  416 + else nCommErrValStableCnt++;
  417 + }
  418 +
  419 + if(nStateErrVal != state.controller_error){
  420 + nStateErrVal = state.controller_error;
  421 + if(nStateErrVal == 0 ) {
  422 + curControlErrorState = nStateErrVal;
  423 + nStateErrValStableCnt=DELAY_ERROR_TIME;
  424 + }
  425 + else{
  426 + nStateErrValStableCnt=0;
  427 + }
  428 + }
  429 + else{
  430 + if(nStateErrValStableCnt>=DELAY_ERROR_TIME){
  431 + errstatetemp = state.controller_error;
  432 + if(errstatetemp != 0 && errstatetemp != curControlErrorState){
  433 + processStateError((errstatetemp&state_err_mask[cookingstate][cfg->getConfigValue(Define::config_model).d32]),ltime);
  434 + }
  435 + curControlErrorState = errstatetemp;
  436 + }
  437 + else nStateErrValStableCnt++;
  438 + }
  439 +
382 //가열부 시간 측정 440 //가열부 시간 측정
383 if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){ 441 if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){
384 srvdata->use_log.items.steam_heat +=1; 442 srvdata->use_log.items.steam_heat +=1;
@@ -552,7 +610,7 @@ void OvenStatistics::oneSecTimerFired(void){ @@ -552,7 +610,7 @@ void OvenStatistics::oneSecTimerFired(void){
552 610
553 } 611 }
554 612
555 -void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime){ 613 +void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc, const QString &MsgTitle, time_t ltime, error_sound_type sndtype){
556 QWidget* pParent; 614 QWidget* pParent;
557 uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0])); 615 uint32_t erridx = (uint32_t) (item - &(srvdata->err_log.values[0]));
558 616
@@ -594,7 +652,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, @@ -594,7 +652,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype,
594 case error_type_popclrstopcmd: 652 case error_type_popclrstopcmd:
595 { 653 {
596 if(m_mapPopupList.find(erridx) == m_mapPopupList.end()){ 654 if(m_mapPopupList.find(erridx) == m_mapPopupList.end()){
597 - ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle , (errtype > error_type_clrsplit), erridx); 655 + ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle , (errtype > error_type_clrsplit), erridx, sndtype);
598 connect(dlg,SIGNAL(closedErrorPopup(int)), this, SLOT(onErrorPopupClosed(int))); 656 connect(dlg,SIGNAL(closedErrorPopup(int)), this, SLOT(onErrorPopupClosed(int)));
599 m_mapPopupList.insert(erridx,dlg); 657 m_mapPopupList.insert(erridx,dlg);
600 qApp->setActiveWindow(dlg); 658 qApp->setActiveWindow(dlg);
@@ -610,7 +668,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, @@ -610,7 +668,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype,
610 //EngineerMenuWindow *w = new EngineerMenuWindow(0); 668 //EngineerMenuWindow *w = new EngineerMenuWindow(0);
611 //w->showFullScreen(); 669 //w->showFullScreen();
612 if(m_mapPopupList.find(erridx)==m_mapPopupList.end()){ 670 if(m_mapPopupList.find(erridx)==m_mapPopupList.end()){
613 - ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle, false,erridx); 671 + ErrorPopupDlg *dlg = new ErrorPopupDlg(pParent,MsgDesc,MsgTitle, false,erridx,sndtype);
614 connect(dlg,SIGNAL(closedErrorPopup(int)),this,SLOT(onErrorPopupClosed(int))); 672 connect(dlg,SIGNAL(closedErrorPopup(int)),this,SLOT(onErrorPopupClosed(int)));
615 m_mapPopupList.insert(erridx,dlg); 673 m_mapPopupList.insert(erridx,dlg);
616 dlg->showFullScreen(); 674 dlg->showFullScreen();
app/gui/oven_control/ovenstatics.h
@@ -12,8 +12,8 @@ @@ -12,8 +12,8 @@
12 12
13 13
14 #define MAX_MODEL_COUNT 12 14 #define MAX_MODEL_COUNT 12
15 -#define SYS_STATE_MAX 4  
16 - 15 +#define SYS_STATE_MAX 5
  16 +#define DELAY_ERROR_TIME 10 //Secs
17 17
18 #define SYS_ERR_MAX 10 18 #define SYS_ERR_MAX 10
19 19
@@ -93,7 +93,8 @@ enum sys_state_type{ @@ -93,7 +93,8 @@ enum sys_state_type{
93 SYS_OFF_COOK_OFF=0, 93 SYS_OFF_COOK_OFF=0,
94 SYS_ON_COOK_OFF=1, 94 SYS_ON_COOK_OFF=1,
95 SYS_ON_COOK_ON=2, 95 SYS_ON_COOK_ON=2,
96 - SYS_OFF_COOK_ON=3 //unnormal state 96 + SYS_ON_WASH=3,
  97 + SYS_OFF_COOK_ON=4 //unnormal state
97 }; 98 };
98 99
99 enum sys_error_id{ 100 enum sys_error_id{
@@ -155,6 +156,12 @@ enum error_exe_type{ @@ -155,6 +156,12 @@ enum error_exe_type{
155 error_type_engclrstopcmd, 156 error_type_engclrstopcmd,
156 }; 157 };
157 158
  159 +enum error_sound_type{
  160 + error_sound_none=0,
  161 + error_sound1,
  162 + error_sound2
  163 +};
  164 +
158 165
159 enum wash_mode_type{ 166 enum wash_mode_type{
160 wash_mode_nocleanser=1, 167 wash_mode_nocleanser=1,
@@ -211,35 +218,48 @@ public: @@ -211,35 +218,48 @@ public:
211 218
212 private: 219 private:
213 220
214 - const uint32_t sys_err_mask[2][MAX_MODEL_COUNT] = {  
215 - {0x00f8, //ele_10  
216 - 0x00f8, //ele_20  
217 - 0x00f8, //ele_24  
218 - 0x00f8, //ele_40  
219 - 0x00f8, //lpg_10  
220 - 0x00f8, //lpg_20  
221 - 0x00f8, //lpg_24  
222 - 0x00f8, //lpg_40  
223 - 0x00f8, //lng_10  
224 - 0x00f8, //lng_20  
225 - 0x00f8, //lng_24  
226 - 0x00f8 //lng_40  
227 - },// end of noncooking state  
228 - {0x03fd, //ele_10  
229 - 0x03ff, //ele_20  
230 - 0x03fd, //ele_24  
231 - 0x03ff, //ele_40  
232 - 0x03fd, //lpg_10  
233 - 0x03ff, //lpg_20  
234 - 0x03fd, //lpg_24  
235 - 0x03ff, //lpg_40  
236 - 0x03fd, //lng_10  
237 - 0x03ff, //lng_20  
238 - 0x03fd, //lng_24  
239 - 0x03ff //lng_40  
240 - }, 221 + const uint32_t sys_err_mask[3][MAX_MODEL_COUNT] = {
  222 + {0x00b8, //ele_10
  223 + 0x00b8, //ele_20
  224 + 0x00b8, //ele_24
  225 + 0x00b8, //ele_40
  226 + 0x00b8, //lpg_10
  227 + 0x00b8, //lpg_20
  228 + 0x00b8, //lpg_24
  229 + 0x00b8, //lpg_40
  230 + 0x00b8, //lng_10
  231 + 0x00b8, //lng_20
  232 + 0x00b8, //lng_24
  233 + 0x00b8 //lng_40
  234 + },// noncooking state
  235 + {0x03bd, //ele_10
  236 + 0x03bf, //ele_20
  237 + 0x03bd, //ele_24
  238 + 0x03bf, //ele_40
  239 + 0x03bd, //lpg_10
  240 + 0x03bf, //lpg_20
  241 + 0x03bd, //lpg_24
  242 + 0x03bf, //lpg_40
  243 + 0x03bd, //lng_10
  244 + 0x03bf, //lng_20
  245 + 0x03bd, //lng_24
  246 + 0x03bf //lng_40
  247 + },//cooking state
  248 + {0x03bd, //ele_10
  249 + 0x03bf, //ele_20
  250 + 0x03bd, //ele_24
  251 + 0x03bf, //ele_40
  252 + 0x03bd, //lpg_10
  253 + 0x03bf, //lpg_20
  254 + 0x03bd, //lpg_24
  255 + 0x03bf, //lpg_40
  256 + 0x03bd, //lng_10
  257 + 0x03bf, //lng_20
  258 + 0x03bd, //lng_24
  259 + 0x03bf //lng_40
  260 + } //washing state
241 }; 261 };
242 - const uint32_t comm_err_mask[2][MAX_MODEL_COUNT] = { 262 + const uint32_t comm_err_mask[3][MAX_MODEL_COUNT] = {
243 {0x000d, //ele_10 263 {0x000d, //ele_10
244 0x001f, //ele_20 264 0x001f, //ele_20
245 0x000d, //ele_24 265 0x000d, //ele_24
@@ -252,7 +272,20 @@ private: @@ -252,7 +272,20 @@ private:
252 0x001f, //lng_20 272 0x001f, //lng_20
253 0x000d, //lng_24 273 0x000d, //lng_24
254 0x001f //lng_40 274 0x001f //lng_40
255 - }, // end of noncooking state 275 + }, // noncooking state
  276 + {0x000d, //ele_10
  277 + 0x001f, //ele_20
  278 + 0x000d, //ele_24
  279 + 0x001f, //ele_40
  280 + 0x000d, //lpg_10
  281 + 0x001f, //lpg_20
  282 + 0x000d, //lpg_24
  283 + 0x001f, //lpg_40
  284 + 0x000d, //lng_10
  285 + 0x001f, //lng_20
  286 + 0x000d, //lng_24
  287 + 0x001f //lng_40
  288 + }, //cooking state
256 {0x000d, //ele_10 289 {0x000d, //ele_10
257 0x001f, //ele_20 290 0x001f, //ele_20
258 0x000d, //ele_24 291 0x000d, //ele_24
@@ -265,7 +298,8 @@ private: @@ -265,7 +298,8 @@ private:
265 0x001f, //lng_20 298 0x001f, //lng_20
266 0x000d, //lng_24 299 0x000d, //lng_24
267 0x001f //lng_40 300 0x001f //lng_40
268 - }}; 301 + } // washing state
  302 + };
269 // const uint32_t sensor_err_mask[MAX_MODEL_COUNT] = {0x0213, //ele10 303 // const uint32_t sensor_err_mask[MAX_MODEL_COUNT] = {0x0213, //ele10
270 // 0x0213, //ele 20 304 // 0x0213, //ele 20
271 // 0x0213, //ele 24 305 // 0x0213, //ele 24
@@ -280,60 +314,89 @@ private: @@ -280,60 +314,89 @@ private:
280 // 0x0213 //lng40 314 // 0x0213 //lng40
281 // }; 315 // };
282 316
283 - const uint32_t sensor_err_mask[2][MAX_MODEL_COUNT] = {  
284 - {0x0213, //ele10  
285 - 0x0213, //ele 20  
286 - 0x0213, //ele 24  
287 - 0x0213, //ele 40  
288 - 0x0213, //lpg 10  
289 - 0x0213, //lpg 20  
290 - 0x0213, //lpg 24  
291 - 0x0213, //lpg 40  
292 - 0x0213, //lng 10  
293 - 0x0213, //lng 20  
294 - 0x0213, //lng 24  
295 - 0x0213 //lng40 317 + const uint32_t sensor_err_mask[3][MAX_MODEL_COUNT] = {
  318 + {0x03f3, //ele10
  319 + 0x03f3, //ele 20
  320 + 0x03f3, //ele 24
  321 + 0x03f3, //ele 40
  322 + 0x03f3, //lpg 10
  323 + 0x03f3, //lpg 20
  324 + 0x03f3, //lpg 24
  325 + 0x03f3, //lpg 40
  326 + 0x03f3, //lng 10
  327 + 0x03f3, //lng 20
  328 + 0x03f3, //lng 24
  329 + 0x03f3 //lng40
296 }, // end of noncooking state 330 }, // end of noncooking state
297 - {0x0213, //ele10  
298 - 0x0213, //ele 20  
299 - 0x0213, //ele 24  
300 - 0x0213, //ele 40  
301 - 0x0213, //lpg 10  
302 - 0x0213, //lpg 20  
303 - 0x0213, //lpg 24  
304 - 0x0213, //lpg 40  
305 - 0x0213, //lng 10  
306 - 0x0213, //lng 20  
307 - 0x0213, //lng 24  
308 - 0x0213 //lng40  
309 - }};  
310 - const uint32_t state_err_mask[2][MAX_MODEL_COUNT] = {  
311 - {0x0008, //ele 10  
312 - 0x0018, //ele 20  
313 - 0x0008, //ele 24  
314 - 0x0018, //ele 40  
315 - 0x0008, //lpg 10  
316 - 0x0018, //lpg 20  
317 - 0x0008, //lpg 24  
318 - 0x0018, //lpg 40  
319 - 0x0008, //lng 10  
320 - 0x0018, //lng 20  
321 - 0x0008, //lng 24  
322 - 0x0018 //lng 40 331 + {0x03f3, //ele10
  332 + 0x03f3, //ele 20
  333 + 0x03f3, //ele 24
  334 + 0x03f3, //ele 40
  335 + 0x03f3, //lpg 10
  336 + 0x03f3, //lpg 20
  337 + 0x03f3, //lpg 24
  338 + 0x03f3, //lpg 40
  339 + 0x03f3, //lng 10
  340 + 0x03f3, //lng 20
  341 + 0x03f3, //lng 24
  342 + 0x03f3 //lng40
  343 + }, //cooking state
  344 + {0x03f3, //ele10
  345 + 0x03f3, //ele 20
  346 + 0x03f3, //ele 24
  347 + 0x03f3, //ele 40
  348 + 0x03f3, //lpg 10
  349 + 0x03f3, //lpg 20
  350 + 0x03f3, //lpg 24
  351 + 0x03f3, //lpg 40
  352 + 0x03f3, //lng 10
  353 + 0x03f3, //lng 20
  354 + 0x03f3, //lng 24
  355 + 0x03f3 //lng40
  356 + } // washing state
  357 + };
  358 +
  359 + const uint32_t state_err_mask[3][MAX_MODEL_COUNT] = {
  360 + {0x0000, //ele 10
  361 + 0x0000, //ele 20
  362 + 0x0000, //ele 24
  363 + 0x0000, //ele 40
  364 + 0x0000, //lpg 10
  365 + 0x0000, //lpg 20
  366 + 0x0000, //lpg 24
  367 + 0x0000, //lpg 40
  368 + 0x0000, //lng 10
  369 + 0x0000, //lng 20
  370 + 0x0000, //lng 24
  371 + 0x0000 //lng 40
323 }, //end of noncooking state 372 }, //end of noncooking state
324 - {0x0008, //ele 10  
325 - 0x0018, //ele 20  
326 - 0x0008, //ele 24  
327 - 0x0018, //ele 40  
328 - 0x0008, //lpg 10  
329 - 0x0018, //lpg 20  
330 - 0x0008, //lpg 24  
331 - 0x0018, //lpg 40  
332 - 0x0008, //lng 10  
333 - 0x0018, //lng 20  
334 - 0x0008, //lng 24  
335 - 0x0018 //lng 40  
336 - }}; 373 + {0x0000, //ele 10
  374 + 0x0000, //ele 20
  375 + 0x0000, //ele 24
  376 + 0x0000, //ele 40
  377 + 0x0000, //lpg 10
  378 + 0x0000, //lpg 20
  379 + 0x0000, //lpg 24
  380 + 0x0000, //lpg 40
  381 + 0x0000, //lng 10
  382 + 0x0000, //lng 20
  383 + 0x0000, //lng 24
  384 + 0x0000 //lng 40
  385 + },
  386 + {0x0000, //ele 10
  387 + 0x0000, //ele 20
  388 + 0x0000, //ele 24
  389 + 0x0000, //ele 40
  390 + 0x0000, //lpg 10
  391 + 0x0000, //lpg 20
  392 + 0x0000, //lpg 24
  393 + 0x0000, //lpg 40
  394 + 0x0000, //lng 10
  395 + 0x0000, //lng 20
  396 + 0x0000, //lng 24
  397 + 0x0000 //lng 40
  398 + }//washing state
  399 + };
337 400
338 401
339 const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047 402 const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047
@@ -344,6 +407,8 @@ private: @@ -344,6 +407,8 @@ private:
344 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd, 407 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,
345 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state 408 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state
346 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr, 409 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
  410 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_WASH state
  411 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,
347 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state 412 error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state
348 }; 413 };
349 414
@@ -351,6 +416,7 @@ private: @@ -351,6 +416,7 @@ private:
351 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF 416 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF
352 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF 417 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
353 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON 418 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
  419 + {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_WASH
354 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON 420 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON
355 }; 421 };
356 422
@@ -358,20 +424,38 @@ private: @@ -358,20 +424,38 @@ private:
358 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF 424 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF
359 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF 425 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF
360 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON 426 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_ON
  427 + {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_WASH
361 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON 428 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON
362 }; 429 };
363 430
364 const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049 431 const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049
365 - {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,  
366 - error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_OFF state 432 + {error_type_popclr,error_type_popclr,error_type_allnone,error_type_popclr,error_type_popclr,
  433 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_OFF state
367 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd, 434 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
368 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_OFF state 435 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_OFF state
369 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd, 436 {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd,
370 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state 437 error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state
  438 + {error_type_popclr,error_type_popclr,error_type_allnone,error_type_allnone,error_type_popclr,
  439 + error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_WASH
371 {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk, 440 {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk,
372 error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF 441 error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF
373 }; 442 };
374 443
  444 +
  445 + const error_sound_type sys_err_sound_def[SYS_ERR_MAX]={ //30047
  446 + error_sound2,error_sound2,error_sound2,error_sound2,error_sound2,
  447 + error_sound2,error_sound2,error_sound2,error_sound2,error_sound2};
  448 +
  449 + const error_sound_type comm_err_sound_def[COMM_ERR_MAX] ={ //30048
  450 + error_sound1,error_sound1,error_sound1,error_sound1,error_sound1};
  451 +
  452 + const error_sound_type state_err_sound_def[STATE_ERR_MAX] ={ //30057
  453 + error_sound1,error_sound1,error_sound1,error_sound1,error_sound1};
  454 +
  455 + const error_sound_type sensor_err_sound_def[SENSOR_ERR_MAX]={ //30049
  456 + error_sound1,error_sound1,error_sound1,error_sound1,error_sound1,
  457 + error_sound1,error_sound1,error_sound1,error_sound1,error_sound2};
  458 +
375 const uint8_t sensorTypeInfo[MAX_LOG_SENSOR] = { 459 const uint8_t sensorTypeInfo[MAX_LOG_SENSOR] = {
376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
377 1, 1, 2, 0, 1, 1 461 1, 1, 2, 0, 1, 1
@@ -409,7 +493,7 @@ private: @@ -409,7 +493,7 @@ private:
409 void processCommError(uint16_t errflag,time_t ltime); 493 void processCommError(uint16_t errflag,time_t ltime);
410 void processSensorError(uint16_t errflag, time_t ltime); 494 void processSensorError(uint16_t errflag, time_t ltime);
411 void processStateError(uint16_t errflat, time_t ltime); 495 void processStateError(uint16_t errflat, time_t ltime);
412 - void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc,const QString &MsgTitle, time_t ltime); 496 + void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc,const QString &MsgTitle, time_t ltime, error_sound_type errsnd=error_sound1);
413 497
414 public: 498 public:
415 bool loadWashState(void){return srvdata->loadWashState();} 499 bool loadWashState(void){return srvdata->loadWashState();}
app/gui/oven_control/realtimesensorwindow.h
@@ -35,7 +35,7 @@ private: @@ -35,7 +35,7 @@ private:
35 0,1,3,4,5,6,7,8,12,13 35 0,1,3,4,5,6,7,8,12,13
36 }; 36 };
37 const uint16_t m_arrCriticalValue[REALSENSOR_CONTROL_LIST_ITEM_MAX] = { 37 const uint16_t m_arrCriticalValue[REALSENSOR_CONTROL_LIST_ITEM_MAX] = {
38 - 320,120,120,270,300,300,300,300,80,80 38 + 320,120,120,150,300,300,300,300,80,80
39 }; 39 };
40 40
41 Ui::RealtimeSensorWindow *ui; 41 Ui::RealtimeSensorWindow *ui;
app/gui/oven_control/servicedata.cpp
@@ -79,7 +79,7 @@ bool ServiceData::loadServiceData(void){ @@ -79,7 +79,7 @@ bool ServiceData::loadServiceData(void){
79 if(fd>0){ 79 if(fd>0){
80 memset(buffs,0x00,FRAM_SIZE); 80 memset(buffs,0x00,FRAM_SIZE);
81 read(fd,buffs,FRAM_SIZE); 81 read(fd,buffs,FRAM_SIZE);
82 - if(buffs[sizeof(error_log) + sizeof(use_statics_log) + sizeof(sensor_statics_log) + sizeof(qint64) + sizeof(int)] != 0x9C){ 82 + if(buffs[sizeof(error_log) + sizeof(use_statics_log) + sizeof(sensor_statics_log)] != 0x9C){
83 qDebug() << "service data read incorrected!"; 83 qDebug() << "service data read incorrected!";
84 close(fd); 84 close(fd);
85 return saveServiceData(); 85 return saveServiceData();
app/gui/oven_control/servicepassinputdlg.cpp
@@ -19,8 +19,10 @@ ServicePassInputDlg::ServicePassInputDlg(QWidget *parent, service_pass_type mode @@ -19,8 +19,10 @@ ServicePassInputDlg::ServicePassInputDlg(QWidget *parent, service_pass_type mode
19 ui->ctrProgressBar->setFocus(); 19 ui->ctrProgressBar->setFocus();
20 20
21 this->setResult(QDialog::Accepted); 21 this->setResult(QDialog::Accepted);
22 - foreach (QPushButton *button, findChildren<QPushButton *>())  
23 - connect(button, &QPushButton::pressed, SoundPlayer::playClick); 22 +// foreach (QPushButton *button, findChildren<QPushButton *>())
  23 +// connect(button, &QPushButton::pressed, SoundPlayer::playClick);
  24 + connect(ui->ctrBtnOk, &QPushButton::pressed, SoundPlayer::playClick);
  25 + connect(ui->ctrBtnCancel, &QPushButton::pressed, SoundPlayer::playClick);
24 ui->ctrProgressBar->setMaxProgress(0,MAX_PASSWORD); 26 ui->ctrProgressBar->setMaxProgress(0,MAX_PASSWORD);
25 m_nCurInputCount = 0; 27 m_nCurInputCount = 0;
26 memset(m_strInputPass, 0x00, MAX_PASSWORD+1); 28 memset(m_strInputPass, 0x00, MAX_PASSWORD+1);
app/gui/oven_control/washwindow.cpp
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 #include "configwindow.h" 9 #include "configwindow.h"
10 #include "mainwindow.h" 10 #include "mainwindow.h"
11 #include "ovenstatics.h" 11 #include "ovenstatics.h"
  12 +#include "cooldownpopup.h"
12 13
13 WashWindow::WashWindow(QWidget *parent) : 14 WashWindow::WashWindow(QWidget *parent) :
14 QMainWindow(parent), 15 QMainWindow(parent),
@@ -73,9 +74,11 @@ WashWindow::WashWindow(QWidget *parent) : @@ -73,9 +74,11 @@ WashWindow::WashWindow(QWidget *parent) :
73 ui->animation->load(":/images/animation/wash_02.png"); 74 ui->animation->load(":/images/animation/wash_02.png");
74 ui->animation->load(":/images/animation/wash_03.png"); 75 ui->animation->load(":/images/animation/wash_03.png");
75 ui->animation->load(":/images/animation/wash_04.png"); 76 ui->animation->load(":/images/animation/wash_04.png");
  77 + ui->animation->show();
  78 + ui->animation->start(300);
76 ui->washStepGauge->setValue(0); 79 ui->washStepGauge->setValue(0);
77 - ui->titleLabel->setText(tr("스팀통헹굼 진행 중입니다."));  
78 - ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.")); 80 + ui->titleLabel->setText(tr("제품 스팀통을 세척 중입니다"));
  81 + ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요\n제품의 스팀통 자동 세척 기능을 실행 중입니다"));
79 ui->washStepTypeLabel->setText(""); 82 ui->washStepTypeLabel->setText("");
80 ui->washStepCountLabel->setText(""); 83 ui->washStepCountLabel->setText("");
81 84
@@ -85,6 +88,7 @@ WashWindow::WashWindow(QWidget *parent) : @@ -85,6 +88,7 @@ WashWindow::WashWindow(QWidget *parent) :
85 88
86 WashWindow::~WashWindow() 89 WashWindow::~WashWindow()
87 { 90 {
  91 + udp->turnOff(TG_CLEANING);
88 delete ui; 92 delete ui;
89 } 93 }
90 94
@@ -131,21 +135,48 @@ void WashWindow::start(int type) @@ -131,21 +135,48 @@ void WashWindow::start(int type)
131 if (type < 1 || type > 5) 135 if (type < 1 || type > 5)
132 return; 136 return;
133 137
134 - state = OpenDoor;  
135 -  
136 this->type = type; 138 this->type = type;
137 139
138 - returnToClockTimer.stop(); 140 + if (udp->getData().sensor1 > 60)
  141 + {
  142 + state = CoolDown;
139 143
140 - ui->animation->clear();  
141 - ui->animation->load(":/images/animation/pull_01.png");  
142 - ui->animation->load(":/images/animation/pull_02.png");  
143 - ui->animation->load(":/images/animation/pull_03.png");  
144 - ui->animation->load(":/images/animation/pull_04.png");  
145 - ui->animation->show();  
146 - ui->animation->start(300); 144 + CooldownPopup *p = new CooldownPopup(this, 60);
  145 + p->setWindowModality(Qt::WindowModal);
  146 + p->showFullScreen();
  147 +
  148 + connect(p, SIGNAL(destroyed(QObject*)), SLOT(resume()));
  149 + }
  150 + else
  151 + {
  152 + state = OpenDoor;
  153 +
  154 + returnToClockTimer.stop();
  155 +
  156 + ui->animation->clear();
  157 + ui->animation->load(":/images/animation/pull_01.png");
  158 + ui->animation->load(":/images/animation/pull_02.png");
  159 + ui->animation->load(":/images/animation/pull_03.png");
  160 + ui->animation->load(":/images/animation/pull_04.png");
  161 + ui->animation->show();
  162 + ui->animation->start(300);
  163 +
  164 + udp->set(TG_OVEN_MODE, 2);
  165 + }
  166 +}
147 167
148 - udp->set(TG_OVEN_MODE, 2); 168 +void WashWindow::resume()
  169 +{
  170 + if (udp->getData().door_state)
  171 + {
  172 + state = CloseDoor;
  173 + showCloseDoor();
  174 + }
  175 + else
  176 + {
  177 + state = Request;
  178 + request();
  179 + }
149 } 180 }
150 181
151 void WashWindow::stop() 182 void WashWindow::stop()
@@ -217,6 +248,48 @@ void WashWindow::updateView() @@ -217,6 +248,48 @@ void WashWindow::updateView()
217 } 248 }
218 } 249 }
219 250
  251 +void WashWindow::showCloseDoor()
  252 +{
  253 + ui->animation->clear();
  254 + ui->animation->load(":/images/animation/door_big_09.png");
  255 + ui->animation->load(":/images/animation/door_big_08.png");
  256 + ui->animation->load(":/images/animation/door_big_07.png");
  257 + ui->animation->load(":/images/animation/door_big_06.png");
  258 + ui->animation->load(":/images/animation/door_big_05.png");
  259 + ui->animation->load(":/images/animation/door_big_04.png");
  260 + ui->animation->load(":/images/animation/door_big_03.png");
  261 + ui->animation->load(":/images/animation/door_big_02.png");
  262 + ui->animation->load(":/images/animation/door_big_01.png");
  263 + ui->animation->start(300);
  264 + ui->closeDoorArrow->show();
  265 +}
  266 +
  267 +void WashWindow::request()
  268 +{
  269 + udp->set(TG_CLEAN_TYPE, type);
  270 + udp->turnOn(TG_CLEANING);
  271 +
  272 + OvenStatistics::getInstance()->setWashState(true);
  273 +
  274 + SoundPlayer::playStart();
  275 +
  276 + ui->closeDoorArrow->hide();
  277 + ui->animation->clear();
  278 + ui->animation->load(":/images/animation/wash_01.png");
  279 + ui->animation->load(":/images/animation/wash_02.png");
  280 + ui->animation->load(":/images/animation/wash_03.png");
  281 + ui->animation->load(":/images/animation/wash_04.png");
  282 + ui->animation->start(300);
  283 +
  284 + ui->washStepGauge->setValue(0);
  285 + ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다"));
  286 + ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.\n제품 내부의 자동 세척 기능을 실행 중입니다."));
  287 + ui->washStepTypeLabel->setText("");
  288 + ui->washStepCountLabel->setText("");
  289 +
  290 + ui->upperStack->setCurrentIndex(1);
  291 +}
  292 +
220 void WashWindow::onChanged() 293 void WashWindow::onChanged()
221 { 294 {
222 if (state == Idle) 295 if (state == Idle)
@@ -225,51 +298,20 @@ void WashWindow::onChanged() @@ -225,51 +298,20 @@ void WashWindow::onChanged()
225 switch (state) 298 switch (state)
226 { 299 {
227 case Idle: 300 case Idle:
  301 + case CoolDown:
228 return; 302 return;
229 case OpenDoor: 303 case OpenDoor:
230 if (udp->getData().door_state) 304 if (udp->getData().door_state)
231 { 305 {
232 state = CloseDoor; 306 state = CloseDoor;
233 -  
234 - ui->animation->clear();  
235 - ui->animation->load(":/images/animation/door_big_09.png");  
236 - ui->animation->load(":/images/animation/door_big_08.png");  
237 - ui->animation->load(":/images/animation/door_big_07.png");  
238 - ui->animation->load(":/images/animation/door_big_06.png");  
239 - ui->animation->load(":/images/animation/door_big_05.png");  
240 - ui->animation->load(":/images/animation/door_big_04.png");  
241 - ui->animation->load(":/images/animation/door_big_03.png");  
242 - ui->animation->load(":/images/animation/door_big_02.png");  
243 - ui->animation->load(":/images/animation/door_big_01.png");  
244 - ui->closeDoorArrow->show(); 307 + showCloseDoor();
245 } 308 }
246 break; 309 break;
247 case CloseDoor: 310 case CloseDoor:
248 if (!udp->getData().door_state) 311 if (!udp->getData().door_state)
249 { 312 {
250 state = Request; 313 state = Request;
251 -  
252 - SoundPlayer::playStart();  
253 -  
254 - ui->closeDoorArrow->hide();  
255 - ui->animation->clear();  
256 -  
257 - ui->animation->load(":/images/animation/wash_01.png");  
258 - ui->animation->load(":/images/animation/wash_02.png");  
259 - ui->animation->load(":/images/animation/wash_03.png");  
260 - ui->animation->load(":/images/animation/wash_04.png");  
261 - ui->washStepGauge->setValue(0);  
262 - ui->titleLabel->setText(tr("기기의 내부를 세척 중입니다"));  
263 - ui->descLabel->setText(tr("완료될 때까지 문을 열지 마세요.\n기기의 내부의 자동 세척 기능을 실행 중입니다."));  
264 - ui->washStepTypeLabel->setText("");  
265 - ui->washStepCountLabel->setText("");  
266 -  
267 - ui->upperStack->setCurrentIndex(1);  
268 -  
269 - udp->set(TG_CLEAN_TYPE, type);  
270 - udp->turnOn(TG_CLEANING);  
271 -  
272 - OvenStatistics::getInstance()->setWashState(true); 314 + request();
273 } 315 }
274 break; 316 break;
275 case Request: 317 case Request:
@@ -337,6 +379,8 @@ void WashWindow::onChanged() @@ -337,6 +379,8 @@ void WashWindow::onChanged()
337 } 379 }
338 else 380 else
339 { 381 {
  382 + state = Idle;
  383 + SoundPlayer::playStop();
340 OvenStatistics::getInstance()->setWashState(false); 384 OvenStatistics::getInstance()->setWashState(false);
341 385
342 ui->titleLabel->setText(tr("세척이 종료되었습니다")); 386 ui->titleLabel->setText(tr("세척이 종료되었습니다"));
@@ -366,6 +410,7 @@ void WashWindow::on_backButton_clicked() @@ -366,6 +410,7 @@ void WashWindow::on_backButton_clicked()
366 case Running: 410 case Running:
367 stop(); 411 stop();
368 break; 412 break;
  413 + case CoolDown:
369 case Stopping: 414 case Stopping:
370 case RequestClean: 415 case RequestClean:
371 case RunningClean: 416 case RunningClean:
@@ -393,6 +438,7 @@ void WashWindow::on_configButton_clicked() @@ -393,6 +438,7 @@ void WashWindow::on_configButton_clicked()
393 case Running: 438 case Running:
394 stop(); 439 stop();
395 break; 440 break;
  441 + case CoolDown:
396 case Stopping: 442 case Stopping:
397 case RequestClean: 443 case RequestClean:
398 case RunningClean: 444 case RunningClean:
app/gui/oven_control/washwindow.h
@@ -24,11 +24,15 @@ protected: @@ -24,11 +24,15 @@ protected:
24 24
25 private slots: 25 private slots:
26 void start(int type); 26 void start(int type);
  27 + void resume();
27 void stop(); 28 void stop();
28 void returnToClock(); 29 void returnToClock();
29 void updateGauge(); 30 void updateGauge();
30 void updateView(); 31 void updateView();
31 32
  33 + void showCloseDoor();
  34 + void request();
  35 +
32 void onChanged(); 36 void onChanged();
33 37
34 void on_backButton_clicked(); 38 void on_backButton_clicked();
@@ -40,7 +44,7 @@ private: @@ -40,7 +44,7 @@ private:
40 UdpHandler *udp; 44 UdpHandler *udp;
41 45
42 enum State { 46 enum State {
43 - Idle, OpenDoor, CloseDoor, Request, Running, Stopping, 47 + Idle, CoolDown, OpenDoor, CloseDoor, Request, Running, Stopping,
44 RequestClean, RunningClean 48 RequestClean, RunningClean
45 } state = Idle; 49 } state = Idle;
46 50