Commit b52cba705c4d721283ea3225b1bfee17faf05e8a
Exists in
master
and in
2 other branches
Merge branch 'master' of 192.168.10.12:falinux/1611_0007_prime_oven
Showing
18 changed files
Show diff stats
app/gui/oven_control/config.cpp
| ... | ... | @@ -153,12 +153,12 @@ bool Config::saveConfig(void){ |
| 153 | 153 | } |
| 154 | 154 | |
| 155 | 155 | bool Config::loadConfig(){ |
| 156 | - char buff[sizeof(config_lists)+1]; | |
| 156 | + uint8_t buff[sizeof(config_lists)+1]; | |
| 157 | 157 | qint64 readlen; |
| 158 | 158 | QFile file(CONFIG_FILE_NAME); |
| 159 | 159 | initConfig(); |
| 160 | 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 | 162 | file.close(); |
| 163 | 163 | if(readlen != (sizeof(configlist)+1)){ |
| 164 | 164 | //File size is wrong. apply default config value & save default value; |
| ... | ... | @@ -166,7 +166,7 @@ bool Config::loadConfig(){ |
| 166 | 166 | saveConfig(); |
| 167 | 167 | return false; |
| 168 | 168 | } |
| 169 | - if(buff[sizeof(config_lists)] ==0x9c){ | |
| 169 | + if (buff[sizeof(config_lists)] ==0x9c){ | |
| 170 | 170 | memcpy(configlist.data,buff,sizeof(config_lists)); |
| 171 | 171 | qDebug() << "loading config file success"; |
| 172 | 172 | } | ... | ... |
app/gui/oven_control/configmastervolumedlg.cpp
| 1 | + | |
| 1 | 2 | #include "configmastervolumedlg.h" |
| 2 | 3 | #include "ui_configmastervolumedlg.h" |
| 3 | 4 | |
| ... | ... | @@ -19,8 +20,9 @@ ConfigVolumeDlg::ConfigVolumeDlg(QWidget *parent, ConfigType type) : |
| 19 | 20 | qApp->setActiveWindow(this); |
| 20 | 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 | 28 | if(type == config_keypad_sound2){ | ... | ... |
app/gui/oven_control/configwindow.cpp
| ... | ... | @@ -283,17 +283,18 @@ void ConfigWindow::reloadUi(void){ |
| 283 | 283 | |
| 284 | 284 | Config* cfg = Config::getInstance(); |
| 285 | 285 | QString strtemp=""; |
| 286 | + | |
| 286 | 287 | for(i = 0; i < m_vectorMenuList.count();i++){ |
| 287 | 288 | pw = pws[i]; |
| 288 | 289 | ui->scrollAreaMenuLayout->removeWidget(pw); |
| 289 | - delete pw; | |
| 290 | + pw->deleteLater(); | |
| 290 | 291 | } |
| 291 | 292 | m_vectorMenuList.clear(); |
| 292 | 293 | |
| 293 | 294 | for(i=0;i<m_vectorFavorMenuList.count();i++){ |
| 294 | 295 | fpw = fpws[i]; |
| 295 | 296 | ui->scrollAreaMenuLayout->removeWidget(fpw); |
| 296 | - delete fpw; | |
| 297 | + fpw->deleteLater(); | |
| 297 | 298 | } |
| 298 | 299 | m_vectorFavorMenuList.clear(); |
| 299 | 300 | ... | ... |
app/gui/oven_control/cooldownpopup.cpp
| ... | ... | @@ -6,10 +6,9 @@ |
| 6 | 6 | #include "soundplayer.h" |
| 7 | 7 | #include "stringer.h" |
| 8 | 8 | |
| 9 | -CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : | |
| 9 | +CooldownPopup::CooldownPopup(QWidget *parent, int target) : | |
| 10 | 10 | QWidget(parent), |
| 11 | 11 | ui(new Ui::CooldownPopup), |
| 12 | - oven(oven), | |
| 13 | 12 | showingCurrentTemp(false), |
| 14 | 13 | needCookStarting(false) |
| 15 | 14 | { |
| ... | ... | @@ -17,6 +16,8 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : |
| 17 | 16 | |
| 18 | 17 | setAttribute(Qt::WA_DeleteOnClose); |
| 19 | 18 | |
| 19 | + oven = Oven::getInstance(); | |
| 20 | + | |
| 20 | 21 | lastDisplayedFanLevel = -1; |
| 21 | 22 | lastDisplayedHumidification = !oven->humidification(); |
| 22 | 23 | |
| ... | ... | @@ -33,6 +34,7 @@ CooldownPopup::CooldownPopup(QWidget *parent, Oven *oven) : |
| 33 | 34 | |
| 34 | 35 | ui->tempSlider->setSubPixmap(":/images/slider/sub_red.png"); |
| 35 | 36 | ui->tempSlider->setRange(30, 300); |
| 37 | + ui->tempSlider->setValue(target); | |
| 36 | 38 | |
| 37 | 39 | cookingFanLevel = oven->fan(); |
| 38 | 40 | expectingFanLevel = oven->maxFan(); | ... | ... |
app/gui/oven_control/cooldownpopup.h
app/gui/oven_control/define.h
app/gui/oven_control/errorpopupdlg.cpp
| ... | ... | @@ -5,7 +5,7 @@ |
| 5 | 5 | #include "soundplayer.h" |
| 6 | 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 | 9 | QDialog(parent), |
| 10 | 10 | ui(new Ui::ErrorPopupDlg) |
| 11 | 11 | { |
| ... | ... | @@ -15,14 +15,36 @@ ErrorPopupDlg::ErrorPopupDlg(QWidget *parent, const QString &MsgDesc, const QStr |
| 15 | 15 | this->setWindowFlags(Qt::FramelessWindowHint); |
| 16 | 16 | |
| 17 | 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 | 33 | ui->ctrlWarnDescription->setText(MsgDesc); |
| 19 | 34 | ui->ctrlWarnTitle->setText(MsgTitle); |
| 20 | 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 | 39 | m_bClrCmd = sendClrCmd; |
| 25 | 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 | 50 | ErrorPopupDlg::~ErrorPopupDlg() |
| ... | ... | @@ -32,6 +54,7 @@ ErrorPopupDlg::~ErrorPopupDlg() |
| 32 | 54 | |
| 33 | 55 | void ErrorPopupDlg::on_ctrlOkBtn_clicked() |
| 34 | 56 | { |
| 57 | + SoundPlayer::stop(); | |
| 35 | 58 | emit closedErrorPopup(m_nErrIdx); |
| 36 | 59 | qApp->setActiveWindow(m_pParent); |
| 37 | 60 | this->hide(); | ... | ... |
app/gui/oven_control/errorpopupdlg.h
| ... | ... | @@ -12,7 +12,7 @@ class ErrorPopupDlg : public QDialog |
| 12 | 12 | Q_OBJECT |
| 13 | 13 | |
| 14 | 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 | 16 | ~ErrorPopupDlg(); |
| 17 | 17 | |
| 18 | 18 | signals: | ... | ... |
app/gui/oven_control/fileprocessdlg.cpp
| ... | ... | @@ -658,7 +658,7 @@ void FileProcessDlg::configDownload(){ |
| 658 | 658 | } |
| 659 | 659 | |
| 660 | 660 | void FileProcessDlg::configUpload(){ |
| 661 | - char buff[sizeof(config_lists)+1]; | |
| 661 | + uint8_t buff[sizeof(config_lists)+1]; | |
| 662 | 662 | qint64 readlen; |
| 663 | 663 | QString strUsbPath; |
| 664 | 664 | QString strSrcPath; |
| ... | ... | @@ -668,7 +668,7 @@ void FileProcessDlg::configUpload(){ |
| 668 | 668 | QFile srcFile(strSrcPath); |
| 669 | 669 | //Check Source File is valid this machine |
| 670 | 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 | 672 | srcFile.close(); |
| 673 | 673 | if(readlen != (sizeof(config_lists)+1)) { |
| 674 | 674 | qDebug() << "SRC config.ini file size wrong"; |
| ... | ... | @@ -682,7 +682,7 @@ void FileProcessDlg::configUpload(){ |
| 682 | 682 | QTimer::singleShot(1000,this,SLOT(close())); |
| 683 | 683 | return; |
| 684 | 684 | } |
| 685 | - cfg->copyConfigArea(buff); | |
| 685 | + cfg->copyConfigArea((char *) buff); | |
| 686 | 686 | cfg->saveConfig(); |
| 687 | 687 | cfg->applyConfig(); |
| 688 | 688 | } | ... | ... |
app/gui/oven_control/keepwarmpopup.cpp
app/gui/oven_control/manualcookwindow.cpp
| ... | ... | @@ -988,7 +988,7 @@ void ManualCookWindow::on_cooldownButton_clicked() |
| 988 | 988 | { |
| 989 | 989 | startCookingTimer.stop(); |
| 990 | 990 | |
| 991 | - CooldownPopup *p = new CooldownPopup(this, oven); | |
| 991 | + CooldownPopup *p = new CooldownPopup(this, 30); | |
| 992 | 992 | p->setWindowModality(Qt::WindowModal); |
| 993 | 993 | p->showFullScreen(); |
| 994 | 994 | ... | ... |
app/gui/oven_control/ovenstatics.cpp
| ... | ... | @@ -74,6 +74,7 @@ void OvenStatistics::onDataChanged() |
| 74 | 74 | time(<ime); |
| 75 | 75 | |
| 76 | 76 | if((control.cooking || oven->cooking() || oven->preheating() || oven->cooldown())) cookingstate = 1; |
| 77 | + else if(state.cleaning_sate != 0 ) cookingstate = 2; | |
| 77 | 78 | |
| 78 | 79 | if(oven->cooking() && control.system){ |
| 79 | 80 | if(state.door_state ==1 && curdoorstate==0){ |
| ... | ... | @@ -93,11 +94,11 @@ void OvenStatistics::onDataChanged() |
| 93 | 94 | } |
| 94 | 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 | 103 | errstatetemp = state.sensor_error; |
| 103 | 104 | if(errstatetemp!=0 && errstatetemp != curSensorErrorState ){ |
| ... | ... | @@ -105,11 +106,11 @@ void OvenStatistics::onDataChanged() |
| 105 | 106 | } |
| 106 | 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 | 122 | if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; |
| 122 | 123 | else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; |
| 123 | 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 | 126 | else state = SYS_ON_COOK_OFF; |
| 125 | 127 | |
| 126 | 128 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_1)){ |
| 127 | 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 | 134 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_2)){ |
| 133 | 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 | 140 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_3)){ |
| 139 | 141 | //Reserved allerrornoe 설정 |
| 140 | 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 | 147 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_4)){ |
| 146 | 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 | 153 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_5)){ |
| 152 | 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 | 159 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_6)){ |
| 158 | 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 | 165 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_7)){ |
| 164 | 166 | //Reseved |
| 165 | 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 | 172 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_8)){ |
| 171 | 173 | //Reserved |
| 172 | 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 | 179 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_9)){ |
| 178 | 180 | //Reserved |
| 179 | 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 | 186 | if(errflag & MAKE_MASK(SENSOR_ERR_SENSOR_10)){ |
| 185 | 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 | 199 | if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; |
| 198 | 200 | else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; |
| 199 | 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 | 203 | else state = SYS_ON_COOK_OFF; |
| 201 | 204 | |
| 202 | 205 | if(errflag & MAKE_MASK(COMM_ERR_BUNNER1)){ |
| 203 | 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 | 211 | if(errflag & MAKE_MASK(COMM_ERR_BUNNER2)){ |
| 209 | 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 | 217 | if(errflag & MAKE_MASK(COMM_ERR_BUNNER3)){ |
| 215 | 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 | 223 | if(errflag & MAKE_MASK(COMM_ERR_LOWERFAN)){ |
| 221 | 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 | 229 | if(errflag & MAKE_MASK(COMM_ERR_UPPERFAN)){ |
| 227 | 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 | 242 | if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; |
| 240 | 243 | else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; |
| 241 | 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 | 246 | else state = SYS_ON_COOK_OFF; |
| 243 | 247 | |
| 244 | 248 | if(errflag & MAKE_MASK(STATE_ERR_BUNNER1)){ |
| 245 | 249 | item = &(srvdata->err_log.items.upper_pan_fail); |
| 246 | 250 | strMsg = tr("버너컨트롤러 1 이상 발생하였습니다."); |
| 247 | 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 | 254 | if(errflag & MAKE_MASK(STATE_ERR_BUNNER2)){ |
| 251 | 255 | item = &(srvdata->err_log.items.lower_pan_fail); |
| 252 | 256 | strMsg = tr("버너컨트롤러 2 이상 발생하였습니다."); |
| 253 | 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 | 260 | if(errflag & MAKE_MASK(STATE_ERR_BUNNER3)){ |
| 257 | 261 | item = &(srvdata->err_log.items.steam_pan_fail); |
| 258 | 262 | strMsg = tr("버너컨트롤러 3 이상 발생하였습니다."); |
| 259 | 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 | 266 | if(errflag & MAKE_MASK(STATE_ERR_LOWERFAN)){ |
| 263 | 267 | item = &(srvdata->err_log.items.lower_motor_fail); |
| 264 | 268 | strMsg = tr("하부 FAN 컨트롤러 이상 발생하였습니다."); |
| 265 | 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 | 272 | if(errflag & MAKE_MASK(STATE_ERR_UPPERFAN)){ |
| 269 | 273 | item = &(srvdata->err_log.items.upper_motor_fail); |
| 270 | 274 | strMsg = tr("상부 FAN 컨트롤러 이상 발생하였습니다."); |
| 271 | 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 | 285 | if( control.system==0 && !bCookingState ) state = SYS_OFF_COOK_OFF; |
| 282 | 286 | else if(control.system != 0 && !bCookingState) state = SYS_ON_COOK_OFF; |
| 283 | 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 | 289 | else state = SYS_ON_COOK_OFF; |
| 285 | 290 | |
| 286 | 291 | if( errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER1)){ |
| 287 | 292 | //버너 컨트롤러 1 착화 이상 |
| 288 | 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 | 298 | if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER2)){ |
| 294 | 299 | //버너 컨트롤러 2 착화 이상 |
| 295 | 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 | 305 | if(errflag & MAKE_MASK(SYS_ERR_FIRE_TRIGGER3)){ |
| 301 | 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 | 311 | if(errflag & MAKE_MASK(SYS_ERR_OVNE_TEMP_ALARM)){ |
| 307 | 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 | 317 | if(errflag & MAKE_MASK(SYS_ERR_QUN_TEMP_ALARM)){ |
| 313 | 318 | //퀀칭 온도 센서 과열 |
| 314 | 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 | 324 | if(errflag & MAKE_MASK(SYS_ERR_CENTER_TEMP_ALARM)){ |
| 320 | 325 | //중심 온도 과열 |
| 321 | 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 | 331 | if(errflag & MAKE_MASK(SYS_ERR_WALL_TEMP_ALARM)){ |
| 327 | 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 | 337 | if(errflag & MAKE_MASK(SYS_ERR_STAM_TEMP_ALARM)){ |
| 333 | 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 | 343 | if(errflag & MAKE_MASK(SYS_ERR_WATER_SPLY_FAIL)){ |
| 339 | 344 | //급수 이상 -> 유량 센서 이상 |
| 340 | 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 | 350 | if(errflag & MAKE_MASK(SYS_ERR_WATER_LEVEL_FAIL)){ |
| 346 | 351 | //급수 이상 -> 수위 센서 이상 |
| 347 | 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 | 372 | static int nOneSecCnt=1; |
| 368 | 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 | 384 | ltime = time(NULL); |
| 371 | 385 | |
| 372 | 386 | nOneSecCnt++; |
| ... | ... | @@ -374,11 +388,55 @@ void OvenStatistics::oneSecTimerFired(void){ |
| 374 | 388 | srvdata->saveServiceData(); |
| 375 | 389 | } |
| 376 | 390 | |
| 391 | + | |
| 377 | 392 | if(bDataRefreshed) bDataRefreshed= false; |
| 378 | 393 | else{ |
| 379 | 394 | udp->fillControl(control); |
| 380 | 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 | 441 | if( (state.onoff_state1 & LOAD_STATE1_STEAM_BUNNER) !=0){ |
| 384 | 442 | srvdata->use_log.items.steam_heat +=1; |
| ... | ... | @@ -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 | 614 | QWidget* pParent; |
| 557 | 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 | 652 | case error_type_popclrstopcmd: |
| 595 | 653 | { |
| 596 | 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 | 656 | connect(dlg,SIGNAL(closedErrorPopup(int)), this, SLOT(onErrorPopupClosed(int))); |
| 599 | 657 | m_mapPopupList.insert(erridx,dlg); |
| 600 | 658 | qApp->setActiveWindow(dlg); |
| ... | ... | @@ -610,7 +668,7 @@ void OvenStatistics::processErrorItems(error_item *item, error_exe_type errtype, |
| 610 | 668 | //EngineerMenuWindow *w = new EngineerMenuWindow(0); |
| 611 | 669 | //w->showFullScreen(); |
| 612 | 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 | 672 | connect(dlg,SIGNAL(closedErrorPopup(int)),this,SLOT(onErrorPopupClosed(int))); |
| 615 | 673 | m_mapPopupList.insert(erridx,dlg); |
| 616 | 674 | dlg->showFullScreen(); | ... | ... |
app/gui/oven_control/ovenstatics.h
| ... | ... | @@ -12,8 +12,8 @@ |
| 12 | 12 | |
| 13 | 13 | |
| 14 | 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 | 18 | #define SYS_ERR_MAX 10 |
| 19 | 19 | |
| ... | ... | @@ -93,7 +93,8 @@ enum sys_state_type{ |
| 93 | 93 | SYS_OFF_COOK_OFF=0, |
| 94 | 94 | SYS_ON_COOK_OFF=1, |
| 95 | 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 | 100 | enum sys_error_id{ |
| ... | ... | @@ -155,6 +156,12 @@ enum error_exe_type{ |
| 155 | 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 | 166 | enum wash_mode_type{ |
| 160 | 167 | wash_mode_nocleanser=1, |
| ... | ... | @@ -211,35 +218,48 @@ public: |
| 211 | 218 | |
| 212 | 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 | 263 | {0x000d, //ele_10 |
| 244 | 264 | 0x001f, //ele_20 |
| 245 | 265 | 0x000d, //ele_24 |
| ... | ... | @@ -252,7 +272,20 @@ private: |
| 252 | 272 | 0x001f, //lng_20 |
| 253 | 273 | 0x000d, //lng_24 |
| 254 | 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 | 289 | {0x000d, //ele_10 |
| 257 | 290 | 0x001f, //ele_20 |
| 258 | 291 | 0x000d, //ele_24 |
| ... | ... | @@ -265,7 +298,8 @@ private: |
| 265 | 298 | 0x001f, //lng_20 |
| 266 | 299 | 0x000d, //lng_24 |
| 267 | 300 | 0x001f //lng_40 |
| 268 | - }}; | |
| 301 | + } // washing state | |
| 302 | + }; | |
| 269 | 303 | // const uint32_t sensor_err_mask[MAX_MODEL_COUNT] = {0x0213, //ele10 |
| 270 | 304 | // 0x0213, //ele 20 |
| 271 | 305 | // 0x0213, //ele 24 |
| ... | ... | @@ -280,60 +314,89 @@ private: |
| 280 | 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 | 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 | 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 | 402 | const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047 |
| ... | ... | @@ -344,6 +407,8 @@ private: |
| 344 | 407 | {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd, |
| 345 | 408 | error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_ON state |
| 346 | 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 | 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 | 416 | {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF |
| 352 | 417 | {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF |
| 353 | 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 | 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 | 424 | {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF |
| 359 | 425 | {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, //SYS_ON_COO_OFF |
| 360 | 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 | 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 | 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 | 434 | {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd, |
| 368 | 435 | error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_popclrstopcmd}, // SYS_ON_COOK_OFF state |
| 369 | 436 | {error_type_popclrstopcmd,error_type_popclrstopcmd,error_type_allnone,error_type_popclrstopcmd,error_type_popclrstopcmd, |
| 370 | 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 | 440 | {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk, |
| 372 | 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 | 459 | const uint8_t sensorTypeInfo[MAX_LOG_SENSOR] = { |
| 376 | 460 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 377 | 461 | 1, 1, 2, 0, 1, 1 |
| ... | ... | @@ -409,7 +493,7 @@ private: |
| 409 | 493 | void processCommError(uint16_t errflag,time_t ltime); |
| 410 | 494 | void processSensorError(uint16_t errflag, time_t ltime); |
| 411 | 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 | 498 | public: |
| 415 | 499 | bool loadWashState(void){return srvdata->loadWashState();} | ... | ... |
app/gui/oven_control/realtimesensorwindow.h
app/gui/oven_control/servicedata.cpp
| ... | ... | @@ -79,7 +79,7 @@ bool ServiceData::loadServiceData(void){ |
| 79 | 79 | if(fd>0){ |
| 80 | 80 | memset(buffs,0x00,FRAM_SIZE); |
| 81 | 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 | 83 | qDebug() << "service data read incorrected!"; |
| 84 | 84 | close(fd); |
| 85 | 85 | return saveServiceData(); | ... | ... |
app/gui/oven_control/servicepassinputdlg.cpp
| ... | ... | @@ -19,8 +19,10 @@ ServicePassInputDlg::ServicePassInputDlg(QWidget *parent, service_pass_type mode |
| 19 | 19 | ui->ctrProgressBar->setFocus(); |
| 20 | 20 | |
| 21 | 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 | 26 | ui->ctrProgressBar->setMaxProgress(0,MAX_PASSWORD); |
| 25 | 27 | m_nCurInputCount = 0; |
| 26 | 28 | memset(m_strInputPass, 0x00, MAX_PASSWORD+1); | ... | ... |
app/gui/oven_control/washwindow.cpp
| ... | ... | @@ -9,6 +9,7 @@ |
| 9 | 9 | #include "configwindow.h" |
| 10 | 10 | #include "mainwindow.h" |
| 11 | 11 | #include "ovenstatics.h" |
| 12 | +#include "cooldownpopup.h" | |
| 12 | 13 | |
| 13 | 14 | WashWindow::WashWindow(QWidget *parent) : |
| 14 | 15 | QMainWindow(parent), |
| ... | ... | @@ -73,9 +74,11 @@ WashWindow::WashWindow(QWidget *parent) : |
| 73 | 74 | ui->animation->load(":/images/animation/wash_02.png"); |
| 74 | 75 | ui->animation->load(":/images/animation/wash_03.png"); |
| 75 | 76 | ui->animation->load(":/images/animation/wash_04.png"); |
| 77 | + ui->animation->show(); | |
| 78 | + ui->animation->start(300); | |
| 76 | 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 | 82 | ui->washStepTypeLabel->setText(""); |
| 80 | 83 | ui->washStepCountLabel->setText(""); |
| 81 | 84 | |
| ... | ... | @@ -85,6 +88,7 @@ WashWindow::WashWindow(QWidget *parent) : |
| 85 | 88 | |
| 86 | 89 | WashWindow::~WashWindow() |
| 87 | 90 | { |
| 91 | + udp->turnOff(TG_CLEANING); | |
| 88 | 92 | delete ui; |
| 89 | 93 | } |
| 90 | 94 | |
| ... | ... | @@ -131,21 +135,48 @@ void WashWindow::start(int type) |
| 131 | 135 | if (type < 1 || type > 5) |
| 132 | 136 | return; |
| 133 | 137 | |
| 134 | - state = OpenDoor; | |
| 135 | - | |
| 136 | 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 | 182 | void WashWindow::stop() |
| ... | ... | @@ -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 | 293 | void WashWindow::onChanged() |
| 221 | 294 | { |
| 222 | 295 | if (state == Idle) |
| ... | ... | @@ -225,51 +298,20 @@ void WashWindow::onChanged() |
| 225 | 298 | switch (state) |
| 226 | 299 | { |
| 227 | 300 | case Idle: |
| 301 | + case CoolDown: | |
| 228 | 302 | return; |
| 229 | 303 | case OpenDoor: |
| 230 | 304 | if (udp->getData().door_state) |
| 231 | 305 | { |
| 232 | 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 | 309 | break; |
| 247 | 310 | case CloseDoor: |
| 248 | 311 | if (!udp->getData().door_state) |
| 249 | 312 | { |
| 250 | 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 | 316 | break; |
| 275 | 317 | case Request: |
| ... | ... | @@ -337,6 +379,8 @@ void WashWindow::onChanged() |
| 337 | 379 | } |
| 338 | 380 | else |
| 339 | 381 | { |
| 382 | + state = Idle; | |
| 383 | + SoundPlayer::playStop(); | |
| 340 | 384 | OvenStatistics::getInstance()->setWashState(false); |
| 341 | 385 | |
| 342 | 386 | ui->titleLabel->setText(tr("세척이 종료되었습니다")); |
| ... | ... | @@ -366,6 +410,7 @@ void WashWindow::on_backButton_clicked() |
| 366 | 410 | case Running: |
| 367 | 411 | stop(); |
| 368 | 412 | break; |
| 413 | + case CoolDown: | |
| 369 | 414 | case Stopping: |
| 370 | 415 | case RequestClean: |
| 371 | 416 | case RunningClean: |
| ... | ... | @@ -393,6 +438,7 @@ void WashWindow::on_configButton_clicked() |
| 393 | 438 | case Running: |
| 394 | 439 | stop(); |
| 395 | 440 | break; |
| 441 | + case CoolDown: | |
| 396 | 442 | case Stopping: |
| 397 | 443 | case RequestClean: |
| 398 | 444 | case RunningClean: | ... | ... |
app/gui/oven_control/washwindow.h
| ... | ... | @@ -24,11 +24,15 @@ protected: |
| 24 | 24 | |
| 25 | 25 | private slots: |
| 26 | 26 | void start(int type); |
| 27 | + void resume(); | |
| 27 | 28 | void stop(); |
| 28 | 29 | void returnToClock(); |
| 29 | 30 | void updateGauge(); |
| 30 | 31 | void updateView(); |
| 31 | 32 | |
| 33 | + void showCloseDoor(); | |
| 34 | + void request(); | |
| 35 | + | |
| 32 | 36 | void onChanged(); |
| 33 | 37 | |
| 34 | 38 | void on_backButton_clicked(); |
| ... | ... | @@ -40,7 +44,7 @@ private: |
| 40 | 44 | UdpHandler *udp; |
| 41 | 45 | |
| 42 | 46 | enum State { |
| 43 | - Idle, OpenDoor, CloseDoor, Request, Running, Stopping, | |
| 47 | + Idle, CoolDown, OpenDoor, CloseDoor, Request, Running, Stopping, | |
| 44 | 48 | RequestClean, RunningClean |
| 45 | 49 | } state = Idle; |
| 46 | 50 | ... | ... |