-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
96 lines (86 loc) · 3.29 KB
/
Copy pathmain.cpp
File metadata and controls
96 lines (86 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <pico/stdlib.h>
#include <pico/cyw43_arch.h>
#include <plog/Init.h>
#include <plog/Log.h>
#include <plog/Appenders/ConsoleAppender.h>
#include <plog/Formatters/FuncMessageFormatter.h>
#include "coap/CoapServer.h"
#include "common/Constants.hpp"
#include "datasource/AdcDataSource.hpp"
#include "repository/BelimoRepository.hpp"
#include "repository/BurningRepository.hpp"
#include "repository/TemperatureRepository.hpp"
#include "repository/WifiRepository.hpp"
#include "service/Http.hpp"
#include "service/Persistence.hpp"
#include "service/Time.hpp"
#include "usecase/ConnectWifi.hpp"
#include "usecase/RespondMdns.hpp"
#include "usecase/ScanWifi.hpp"
#include "usecase/SetHostName.hpp"
#include "usecase/SyncTime.hpp"
int main() {
stdio_init_all();
static plog::ConsoleAppender<plog::FuncMessageFormatter> consoleAppender;
plog::init(plog::debug, &consoleAppender);
// Initialise the Wi-Fi chip
if (cyw43_arch_init()) {
printf("Wi-Fi init failed\n");
return -1;
}
// Enable wifi station
cyw43_arch_enable_sta_mode();
Persistence persistence;
AdcDataSource adcDataSource;
VoltageRepository voltageRepository(adcDataSource, 3.2f);
BelimoRepository belimoRepository(voltageRepository);
BurningRepository burningRepository(belimoRepository, persistence);
Time timer;
WifiRepository wifiRepository;
ScanWifi scanWifi(wifiRepository);
ConnectWifi connectWifi({{ "Kay-Fi", "Katha1203" },
{ "Kay-Done", "Katha1203" },
{ "Kay-Ller", "Katha1203" }
},
wifiRepository);
SyncTime syncTime;
SetHostName setHostName;
PLOGI << "host name: " << setHostName.hostName();
//RespondMdns respondMdns(setHostName.hostName());
CoapServer coapServer(setHostName.hostName());
Http serveHttp(burningRepository, persistence);
connectWifi.on<WifiConnected>([&](const ConnectWifi& self, WifiConnected& event) {
syncTime();
});
syncTime.on<TimeSynced>([&](const SyncTime& self, TimeSynced& event) {
timer.startAlt(intervalSeconds); // startAlt instead of start
});
timer.on<Timer>([&](const Time& self, Timer& event) {
PLOGD << "host name: " << setHostName.hostName();
PLOGD << "timer: " << event.ts;
burningRepository.measure();
connectWifi();
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, !connectWifi.isConnected());
});
std::map<std::string, std::pair<uint16_t, uint16_t>> data;
voltageRepository.on<std::pair<uint8_t, uint16_t>>(
[&](const VoltageRepository& self, std::pair<uint8_t, uint16_t>& event) {
if (event.first > 1) return; // only channels 0 and 1
if (event.first == 0) {
data["flap"].first = event.second;
} else if (event.first == 1) {
data["flap"].second = event.second;
coapServer.send(data);
LOGI << "coap data> flap position primary: " << data["flap"].first
<< ", secondary: " << data["flap"].second;
}
});
scanWifi();
connectWifi();
while(true) {
sleep_ms(1000);
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, connectWifi.isConnected());
}
return 0;
}