Blame view

app/gui/oven_control/ovencontroller.cpp 3.34 KB
8c2952457   김태훈   응용 프로그램 추가
1
  #include "ovencontroller.h"
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
2
3
  OvenController::OvenController(QObject *parent, Oven *oven) : OvenInterface(parent),
      oven(oven)
8c2952457   김태훈   응용 프로그램 추가
4
  {
6f96c947a   김태훈   GUI 0.1.4
5
6
      bzero(&control, sizeof(control));
      bzero(&state, sizeof(state));
8c2952457   김태훈   응용 프로그램 추가
7
8
9
10
11
12
13
14
15
16
  }
  
  void OvenController::setUdpHandler(UdpHandler *udp)
  {
      this->udp = udp;
      connect(udp, SIGNAL(changed()), this, SLOT(onDataChanged()));
  }
  
  void OvenController::onDataChanged()
  {
d66d7f5b4   김태훈   GUI 버전 0.1.2
17
      bool opened = state.door_state != 0;
8c2952457   김태훈   응용 프로그램 추가
18
19
      udp->fillControl(control);
      udp->fillData(state);
d66d7f5b4   김태훈   GUI 버전 0.1.2
20
21
22
23
24
25
26
27
28
29
30
  
      if (opened)
      {
          if (state.door_state == 0)
              emit doorClosed();
      }
      else
      {
          if (state.door_state != 0)
              emit doorOpened();
      }
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
31
32
33
34
  
      oven->setCurrentHumidity(currentHumidity());
      oven->setCurrentTemp(currentTemp());
      oven->setCurrentInterTemp(currentInterTemp());
8c2952457   김태훈   응용 프로그램 추가
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  }
  
  int OvenController::currentTemp()
  {
      return state.curr_heat;
  }
  
  
  int OvenController::currentHumidity()
  {
      return state.curr_humidity;
  }
  
  int OvenController::currentInterTemp()
  {
6f96c947a   김태훈   GUI 0.1.4
50
      return state.sensor6;
8c2952457   김태훈   응용 프로그램 추가
51
52
53
54
  }
  
  bool OvenController::door()
  {
d66d7f5b4   김태훈   GUI 버전 0.1.2
55
      return state.door_state != 0;
8c2952457   김태훈   응용 프로그램 추가
56
  }
dedc5eee3   김태훈   프로토콜 변경 반영
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  void OvenController::setMode(Define::Mode mode)
  {
      int m;
      switch (mode)
      {
      case Define::SteamMode:
          m = 2;
          break;
      case Define::DryMode:
          m = 0;
          break;
      case Define::CombiMode:
          m = 1;
          break;
      default:
          return;
      }
  
      qDebug() << "Set Mode" << m;
      udp->set(TG_COOK_MODE, m);
  }
8c2952457   김태훈   응용 프로그램 추가
78
79
  void OvenController::setHumidity(int percentage)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
80
      qDebug() << "Set Humidity" << percentage;
8c2952457   김태훈   응용 프로그램 추가
81
82
83
84
85
      udp->set(TG_HUMIDITY, percentage);
  }
  
  void OvenController::setTemp(int celsius)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
86
      qDebug() << "Set Temperature" << celsius;
8c2952457   김태훈   응용 프로그램 추가
87
88
      udp->set(TG_HEAT, celsius);
  }
43d009fb5   김태훈   오븐 제어 인터페이스에 시간 설...
89
90
  void OvenController::setTime(int secs)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
91
      qDebug() << "Set Time" << secs;
43d009fb5   김태훈   오븐 제어 인터페이스에 시간 설...
92
93
      udp->set(TG_TIME, secs);
  }
8c2952457   김태훈   응용 프로그램 추가
94
95
  void OvenController::setInterTemp(int celsius)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
96
      qDebug() << "Set Core Temperature" << celsius;
8c2952457   김태훈   응용 프로그램 추가
97
98
99
100
101
      udp->set(TG_INNER_TEMP, celsius);
  }
  
  void OvenController::setFan(int rpm)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
102
      qDebug() << "Set Fan RPM" << rpm;
8c2952457   김태훈   응용 프로그램 추가
103
104
105
106
107
      udp->set(TG_CONV_RPM, rpm);
  }
  
  void OvenController::startCooking()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
108
      qDebug() << "Start Cooking";
8c2952457   김태훈   응용 프로그램 추가
109
      udp->set(TG_OVEN_MODE, 1);
366850165   김태훈   연동 시험 결과 반영
110
      udp->set(TG_TIME, 1440);
8c2952457   김태훈   응용 프로그램 추가
111
112
113
114
115
116
      udp->turnOn(TG_SYSTEM);
      udp->turnOn(TG_COOKING);
  }
  
  void OvenController::stopCooking()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
117
      qDebug() << "Stop Cooking";
8c2952457   김태훈   응용 프로그램 추가
118
119
120
121
122
      udp->turnOff(TG_COOKING);
  }
  
  void OvenController::startPreheating()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
123
      qDebug() << "Start Preheating";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
124
      udp->set(TG_OVEN_MODE, 1);
99b8066f4   김태훈   V0.1.1
125
      udp->set(TG_TIME, 1440);
8c2952457   김태훈   응용 프로그램 추가
126
127
128
129
130
131
      udp->turnOn(TG_SYSTEM);
      udp->turnOn(TG_PREHEAT);
  }
  
  void OvenController::stopPreheating()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
132
      qDebug() << "Stop Preheating";
8c2952457   김태훈   응용 프로그램 추가
133
134
135
136
137
      udp->turnOff(TG_PREHEAT);
  }
  
  void OvenController::startCooldown()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
138
      qDebug() << "Start Cooldown";
8c2952457   김태훈   응용 프로그램 추가
139
140
141
142
143
      udp->turnOn(TG_COOLDOWN);
  }
  
  void OvenController::stopCooldown()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
144
      qDebug() << "Stop Cooldown";
8c2952457   김태훈   응용 프로그램 추가
145
146
147
148
149
      udp->turnOff(TG_COOLDOWN);
  }
  
  void OvenController::startHumidification()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
150
      qDebug() << "Start Humidification";
8c2952457   김태훈   응용 프로그램 추가
151
152
153
154
155
      udp->turnOn(TG_INNERWATER);
  }
  
  void OvenController::stopHumidification()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
156
      qDebug() << "Stop Humidification";
8c2952457   김태훈   응용 프로그램 추가
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
      udp->turnOff(TG_INNERWATER);
  }
  
  void OvenController::startWashing()
  {
  
  }
  
  void OvenController::stopWashing()
  {
  
  }
  
  void OvenController::openDamper()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
172
      qDebug() << "Open Damper";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
173
      udp->turnOn(TG_OUTHUMIDITY);
8c2952457   김태훈   응용 프로그램 추가
174
175
176
177
  }
  
  void OvenController::closeDamper()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
178
      qDebug() << "Close Damper";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
179
      udp->turnOff(TG_OUTHUMIDITY);
8c2952457   김태훈   응용 프로그램 추가
180
  }