Blame view

app/gui/oven_control/ovencontroller.cpp 2.99 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
57
58
59
  }
  
  void OvenController::setHumidity(int percentage)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
60
      qDebug() << "Set Humidity" << percentage;
8c2952457   김태훈   응용 프로그램 추가
61
62
63
64
65
      udp->set(TG_HUMIDITY, percentage);
  }
  
  void OvenController::setTemp(int celsius)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
66
      qDebug() << "Set Temperature" << celsius;
8c2952457   김태훈   응용 프로그램 추가
67
68
      udp->set(TG_HEAT, celsius);
  }
43d009fb5   김태훈   오븐 제어 인터페이스에 시간 설...
69
70
  void OvenController::setTime(int secs)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
71
      qDebug() << "Set Time" << secs;
43d009fb5   김태훈   오븐 제어 인터페이스에 시간 설...
72
73
      udp->set(TG_TIME, secs);
  }
8c2952457   김태훈   응용 프로그램 추가
74
75
  void OvenController::setInterTemp(int celsius)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
76
      qDebug() << "Set Core Temperature" << celsius;
8c2952457   김태훈   응용 프로그램 추가
77
78
79
80
81
      udp->set(TG_INNER_TEMP, celsius);
  }
  
  void OvenController::setFan(int rpm)
  {
bc13b09fb   김태훈   디버깅 메시지 추가
82
      qDebug() << "Set Fan RPM" << rpm;
8c2952457   김태훈   응용 프로그램 추가
83
84
85
86
87
      udp->set(TG_CONV_RPM, rpm);
  }
  
  void OvenController::startCooking()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
88
      qDebug() << "Start Cooking";
8c2952457   김태훈   응용 프로그램 추가
89
      udp->set(TG_OVEN_MODE, 1);
366850165   김태훈   연동 시험 결과 반영
90
      udp->set(TG_TIME, 1440);
8c2952457   김태훈   응용 프로그램 추가
91
92
93
94
95
96
      udp->turnOn(TG_SYSTEM);
      udp->turnOn(TG_COOKING);
  }
  
  void OvenController::stopCooking()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
97
      qDebug() << "Stop Cooking";
8c2952457   김태훈   응용 프로그램 추가
98
99
100
101
102
      udp->turnOff(TG_COOKING);
  }
  
  void OvenController::startPreheating()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
103
      qDebug() << "Start Preheating";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
104
      udp->set(TG_OVEN_MODE, 1);
99b8066f4   김태훈   V0.1.1
105
      udp->set(TG_TIME, 1440);
8c2952457   김태훈   응용 프로그램 추가
106
107
108
109
110
111
      udp->turnOn(TG_SYSTEM);
      udp->turnOn(TG_PREHEAT);
  }
  
  void OvenController::stopPreheating()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
112
      qDebug() << "Stop Preheating";
8c2952457   김태훈   응용 프로그램 추가
113
114
115
116
117
      udp->turnOff(TG_PREHEAT);
  }
  
  void OvenController::startCooldown()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
118
      qDebug() << "Start Cooldown";
8c2952457   김태훈   응용 프로그램 추가
119
120
121
122
123
      udp->turnOn(TG_COOLDOWN);
  }
  
  void OvenController::stopCooldown()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
124
      qDebug() << "Stop Cooldown";
8c2952457   김태훈   응용 프로그램 추가
125
126
127
128
129
      udp->turnOff(TG_COOLDOWN);
  }
  
  void OvenController::startHumidification()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
130
      qDebug() << "Start Humidification";
8c2952457   김태훈   응용 프로그램 추가
131
132
133
134
135
      udp->turnOn(TG_INNERWATER);
  }
  
  void OvenController::stopHumidification()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
136
      qDebug() << "Stop Humidification";
8c2952457   김태훈   응용 프로그램 추가
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
      udp->turnOff(TG_INNERWATER);
  }
  
  void OvenController::startWashing()
  {
  
  }
  
  void OvenController::stopWashing()
  {
  
  }
  
  void OvenController::openDamper()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
152
      qDebug() << "Open Damper";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
153
      udp->turnOn(TG_OUTHUMIDITY);
8c2952457   김태훈   응용 프로그램 추가
154
155
156
157
  }
  
  void OvenController::closeDamper()
  {
bc13b09fb   김태훈   디버깅 메시지 추가
158
      qDebug() << "Close Damper";
6eb13ba2e   김태훈   예열 팝업 동작 보완 및 동작 ...
159
      udp->turnOff(TG_OUTHUMIDITY);
8c2952457   김태훈   응용 프로그램 추가
160
  }