Skip to content

Commit

Permalink
Allowed for max 3 wifi networks, downloadFile()
Browse files Browse the repository at this point in the history
  • Loading branch information
Dakkaron committed Jan 11, 2025
1 parent 419544e commit 9d201f1
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 23 deletions.
2 changes: 2 additions & 0 deletions T-HMI-PEPmonitor/src/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
#define INHALATION_TASK_WARN_TIMEOUT 10000L
#define INHALATION_TASK_END_TIMEOUT 15000L

#define MAX_WIFI_NETWORKS 3

#define GAME_SELECTION_POWEROFF_TIMEOUT 3L*60L*1000L // Power off device if it spends >3 minutes on game selection screen
#define WIN_SCREEN_TIMEOUT 3L*60L*1000L

Expand Down
4 changes: 4 additions & 0 deletions T-HMI-PEPmonitor/src/hardware/sdHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ void readSystemConfig(SystemConfig* systemConfig, String* errorMessage) {
getIniSection(SYSTEM_CONFIG_INI_PATH, "[system]", resBuffer, 1024, errorMessage);
systemConfig->wifiSsid = getIniValueFromSection(resBuffer, "wifiSSID", &ignoreErrors);
systemConfig->wifiPassword = getIniValueFromSection(resBuffer, "wifiPassword", &ignoreErrors);
systemConfig->wifiSsid2 = getIniValueFromSection(resBuffer, "wifiSSID2", &ignoreErrors);
systemConfig->wifiPassword2 = getIniValueFromSection(resBuffer, "wifiPassword2", &ignoreErrors);
systemConfig->wifiSsid3 = getIniValueFromSection(resBuffer, "wifiSSID3", &ignoreErrors);
systemConfig->wifiPassword3 = getIniValueFromSection(resBuffer, "wifiPassword3", &ignoreErrors);
systemConfig->trampolineIp = getIniValueFromSection(resBuffer, "trampolineIp", &ignoreErrors);
systemConfig->touchScreenZThreshold = 2.5*(100-atoi(getIniValueFromSection(resBuffer, "touchScreenSensitivity", &ignoreErrors).c_str()));
systemConfig->simulateTrampoline = stringIsTrue(getIniValueFromSection(resBuffer, "simulateTrampoline", &ignoreErrors), false);
Expand Down
90 changes: 67 additions & 23 deletions T-HMI-PEPmonitor/src/hardware/wifiHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,47 @@ uint8_t startWifi() {
if (wifiConnected) {
return CONNECTION_OK;
}
Serial.println("Starting WIFI");
WiFi.mode(WIFI_STA);
ssid = systemConfig.wifiSsid;
password = systemConfig.wifiPassword;
trampolineIp = systemConfig.trampolineIp;
Serial.println(ssid);
Serial.println(password);
Serial.println(trampolineIp);
WiFi.begin(ssid, password);
Serial.print("Connecting to WIFI");
for (uint8_t i=0;i<WIFI_RETRY_COUNT;i++) {
if (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
for (uint32_t wifiNumber=0; wifiNumber<MAX_WIFI_NETWORKS; wifiNumber++) {
Serial.println("Starting WIFI");
WiFi.mode(WIFI_STA);
switch (wifiNumber) {
case 0:
ssid = systemConfig.wifiSsid;
password = systemConfig.wifiPassword;
break;
case 1:
ssid = systemConfig.wifiSsid2;
password = systemConfig.wifiPassword2;
break;
case 2:
ssid = systemConfig.wifiSsid3;
password = systemConfig.wifiPassword3;
break;
}
trampolineIp = systemConfig.trampolineIp;
Serial.println(ssid);
Serial.println(password);
Serial.println(trampolineIp);
WiFi.begin(ssid, password);
Serial.print("Connecting to WIFI");
for (uint8_t i=0;i<WIFI_RETRY_COUNT;i++) {
if (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
} else {
wifiConnected = true;
break;
}
}
if (wifiConnected) {
Serial.println("done");
return CONNECTION_OK;
} else {
wifiConnected = true;
break;
Serial.println("Failed to connect to WIFI");
return CONNECTION_NOWIFI;
}
}
if (wifiConnected) {
Serial.println("done");
return CONNECTION_OK;
} else {
Serial.println("Failed to connect to WIFI");
return CONNECTION_NOWIFI;
}
return CONNECTION_NOWIFI;
}

uint8_t connectToTrampoline() {
Expand Down Expand Up @@ -159,4 +174,33 @@ void getNTPTime(String* ntpDateString, String* ntpTimeString, String* errorMessa
}
*ntpDateString = String(timeinfo.tm_year+1900) + "-" + String(timeinfo.tm_mon) + "-" + String(timeinfo.tm_mday);
*ntpTimeString = leftPad(String(timeinfo.tm_hour), 2, "0") + ":" + leftPad(String(timeinfo.tm_min), 2, "0");
}

void downloadFile(String url, String filename, String* errorMessage) {
// Get file stream from internet
HTTPClient httpClient;
Serial.println("downloadFile()");
httpClient.begin(url);
int httpCode = httpClient.GET();
WiFiClient* stream = httpClient.getStreamPtr();

// Download data and write into SD card
size_t downloadedDataSize = 0;
const size_t FILE_SIZE = httpClient.getSize();
uint8_t* fileBuffer = new uint8_t[FILE_SIZE+1];
uint8_t* bufferPointer = fileBuffer;
Serial.println("Starting download");
while (downloadedDataSize < FILE_SIZE) {
size_t availableDataSize = stream->available();
stream->readBytes(fileBuffer, FILE_SIZE);
if (availableDataSize > 0) {
stream->readBytes(bufferPointer, availableDataSize);
downloadedDataSize += availableDataSize;
bufferPointer += availableDataSize;
}
}
Serial.println("Downloaded file");
File file = SD_MMC.open(filename, FILE_WRITE, true);
file.write(fileBuffer, FILE_SIZE);
delete[] (fileBuffer);
}
3 changes: 3 additions & 0 deletions T-HMI-PEPmonitor/src/hardware/wifiHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ void getJumpData(JumpData* jumpData);
bool startFetchingNTPTime();
void getNTPTime(String* ntpDateString, String* ntpTimeString, String* errorMessage);

void downloadFile(String url, String filename, String* errorMessage);

uint8_t startWifi();


#endif /* __WIFI_HANDLER_H__ */
4 changes: 4 additions & 0 deletions T-HMI-PEPmonitor/src/systemconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ struct SystemConfig {
String trampolineIp;
String wifiSsid;
String wifiPassword;
String wifiSsid2;
String wifiPassword2;
String wifiSsid3;
String wifiPassword3;
uint8_t touchScreenZThreshold;
bool simulateTrampoline;
bool simulateBlows;
Expand Down

0 comments on commit 9d201f1

Please sign in to comment.