You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
1.7 KiB
C++

#include "comm.h"
void CommunicationsController::initOta() {
ArduinoOTA.setHostname(WIFI_SSID);
ArduinoOTA.setPassword(WIFI_PASSWORD);
ArduinoOTA.begin();
}
void CommunicationsController::initWifi() {
WiFiSettings.hostname = WIFI_SSID;
WiFiSettings.password = WIFI_PASSWORD;
WiFiSettings.onPortalWaitLoop = []() {
ArduinoOTA.handle();
};
WiFiSettings.connect();
}
void CommunicationsController::init() {
initOta();
initWifi();
while (WiFi.status() != WL_CONNECTED);
WebMonitor.begin();
l4sServer.begin();
}
byte CommunicationsController::process(float *azimuth, float *altitude) {
ArduinoOTA.handle();
create_connection();
if (l4s) {
while (l4s.connected()) {
handle_client();
byte resp = parseLook4Sat(azimuth, altitude);
ArduinoOTA.handle();
if (resp == 1) {
return 1;
}
}
}
return 0;
}
void CommunicationsController::handle_client() {
l4s.flush();
received = recv();
}
byte CommunicationsController::parseLook4Sat(float* azimuth, float* altitude) {
String tmp = received.substring(9);
int spaceIndex = tmp.indexOf(' ');
if (spaceIndex != -1) {
*azimuth = tmp.substring(0, spaceIndex).toFloat();
*altitude = tmp.substring(spaceIndex+1).toFloat();
return 1;
}
return 0;
}
void CommunicationsController::create_connection() {
l4s = l4sServer.accept();
}
String CommunicationsController::recv() {
String rec = "";
while (l4s.available()) {
rec += (char)(l4s.read());
}
if (rec.length() == 0) {
rec = "Ç";
}
return rec;
}