Commit 0603c0b43139fff062723a8880431bf2226aa50a
1 parent
5adb1f52f8
Exists in
master
and in
2 other branches
rtc 설정을 시스템에서 하도록 수정
- system.h, system.c 수정
Showing
9 changed files
with
60 additions
and
8 deletions
Show diff stats
app/gui/oven_control/config.cpp
... | ... | @@ -265,7 +265,6 @@ bool Config::loadFavorite(void){ |
265 | 265 | itemp = strTemp.toInt(&rst,10); |
266 | 266 | if(rst && itemp < (uint32_t)config_invalid) { |
267 | 267 | m_setFavorite.insert(itemp); |
268 | - qDebug()<< "load favorite index " << itemp; | |
269 | 268 | } |
270 | 269 | } |
271 | 270 | file.close(); |
... | ... | @@ -328,9 +327,6 @@ void Config::execConfigWindow(QWidget *parent, Define::ConfigType idx){ |
328 | 327 | QDialog *dlg; |
329 | 328 | bool bUsbDetect = false; |
330 | 329 | switch(idx){ |
331 | - case config_datetime: | |
332 | - dlg = new ConfigDateTimeDlg(parent); | |
333 | - break; | |
334 | 330 | case config_language: |
335 | 331 | dlg = new ConfigLanguageDlg(parent); |
336 | 332 | break; | ... | ... |
app/gui/oven_control/config.h
app/gui/oven_control/configdatetimedlg.cpp
1 | +#include <QDateTime> | |
1 | 2 | #include "configdatetimedlg.h" |
2 | 3 | #include "ui_configdatetimedlg.h" |
4 | +#include "system.h" | |
5 | + | |
3 | 6 | |
4 | 7 | ConfigDateTimeDlg::ConfigDateTimeDlg(QWidget *parent) : |
5 | 8 | QDialog(parent), |
... | ... | @@ -9,6 +12,14 @@ ConfigDateTimeDlg::ConfigDateTimeDlg(QWidget *parent) : |
9 | 12 | this->setWindowFlags( Qt::FramelessWindowHint); |
10 | 13 | this->setAttribute( Qt::WA_DeleteOnClose); |
11 | 14 | ui->ctrSpBxYear->setFormatterWidth(4); |
15 | + QDateTime dt_tm = QDateTime::currentDateTime(); | |
16 | + QDate dt_ = dt_tm.date(); | |
17 | + QTime tm_ = dt_tm.time(); | |
18 | + ui->ctrSpBxYear->setValue(dt_.year()); | |
19 | + ui->ctrSpBxMonth->setValue(dt_.month()); | |
20 | + ui->ctrSpBxDay->setValue(dt_.day()); | |
21 | + ui->ctrSpBxHour->setValue(tm_.hour()); | |
22 | + ui->ctrSpBxMin->setValue(tm_.minute()); | |
12 | 23 | } |
13 | 24 | |
14 | 25 | ConfigDateTimeDlg::~ConfigDateTimeDlg() |
... | ... | @@ -18,6 +29,15 @@ ConfigDateTimeDlg::~ConfigDateTimeDlg() |
18 | 29 | |
19 | 30 | void ConfigDateTimeDlg::on_ctrBtnOk_clicked() |
20 | 31 | { |
32 | + time_t tm_t; | |
33 | + QDate dt_(ui->ctrSpBxYear->value(), ui->ctrSpBxMonth->value(), ui->ctrSpBxDay->value()); | |
34 | + QTime tm_(ui->ctrSpBxHour->value(), ui->ctrSpBxMin->value()); | |
35 | + QDateTime dt_tm; | |
36 | + dt_tm.setTime(tm_); | |
37 | + dt_tm.setDate(dt_); | |
38 | + tm_t = (time_t)dt_tm.toTime_t(); | |
39 | + System::setRtcTime(dt_tm); | |
40 | + stime(&tm_t); | |
21 | 41 | this->accept(); |
22 | 42 | } |
23 | 43 | ... | ... |
app/gui/oven_control/configdatetimedlg.h
app/gui/oven_control/configwindow.cpp
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | #include "config.h" |
8 | 8 | #include "configinfodlg.h" |
9 | 9 | #include "yesnopopupdlg.h" |
10 | +#include "configdatetimedlg.h" | |
10 | 11 | |
11 | 12 | |
12 | 13 | |
... | ... | @@ -102,6 +103,11 @@ void ConfigWindow::onConfigBtnClicked(uint16_t id){ |
102 | 103 | Config *cfg = Config::getInstance(); |
103 | 104 | QDialog* dlg; |
104 | 105 | switch(id){ |
106 | + case config_datetime: | |
107 | + dlg = new ConfigDateTimeDlg(this); | |
108 | + dlg->show(); | |
109 | + if(m_nCurConfigPos != config_menu_favorite) reloadValue(); | |
110 | + break; | |
105 | 111 | case config_enter_engineer_mode: |
106 | 112 | { |
107 | 113 | EngineerMenuWindow *w = new EngineerMenuWindow(this); | ... | ... |
app/gui/oven_control/rtc_control.cpp
app/gui/oven_control/rtc_control.h
app/gui/oven_control/system.cpp
1 | 1 | #include "system.h" |
2 | +#include <sys/ioctl.h> | |
3 | +#include <unistd.h> | |
4 | +#include <fcntl.h> | |
5 | +#include <linux/rtc.h> | |
2 | 6 | |
3 | 7 | void System::setIP(System::IPData &data) |
4 | 8 | { |
... | ... | @@ -27,3 +31,26 @@ void System::setVolume(int percentage) |
27 | 31 | QString command = QString("/usr/bin/amixer -c 0 sset 'PCM',0 %1% %1% on").arg(percentage); |
28 | 32 | system(command.toLocal8Bit().constData()); |
29 | 33 | } |
34 | + | |
35 | + | |
36 | + | |
37 | + | |
38 | +bool System::setRtcTime(QDateTime dt_tm){ | |
39 | + int fd; | |
40 | + rtc_time rt; | |
41 | + rt.tm_year = dt_tm.date().year() - 1900; | |
42 | + rt.tm_mon = dt_tm.date().month()-1; | |
43 | + rt.tm_mday = dt_tm.date().day(); | |
44 | + rt.tm_hour = dt_tm.time().hour(); | |
45 | + rt.tm_min = dt_tm.time().minute(); | |
46 | + rt.tm_sec = 0; | |
47 | + | |
48 | + fd = open("/dev/rtc0", O_WRONLY); | |
49 | + if(fd <0){ | |
50 | + return false; | |
51 | + }{ | |
52 | + ioctl(fd, RTC_SET_TIME, &rt); | |
53 | + close(fd); | |
54 | + return true; | |
55 | + } | |
56 | +} | ... | ... |
app/gui/oven_control/system.h
... | ... | @@ -3,6 +3,7 @@ |
3 | 3 | |
4 | 4 | |
5 | 5 | #include <QtCore> |
6 | +#include <QDateTime> | |
6 | 7 | |
7 | 8 | namespace System { |
8 | 9 | struct IPData |
... | ... | @@ -17,6 +18,9 @@ void setIP(IPData &data); |
17 | 18 | void setBacklight(int level); |
18 | 19 | |
19 | 20 | void setVolume(int percentage); |
21 | + | |
22 | +bool setRtcTime(QDateTime dt_tm); | |
23 | + | |
20 | 24 | } |
21 | 25 | |
22 | 26 | #endif // SYSTEM_H | ... | ... |