diff --git a/interface/src/system/SystemStatusForm.tsx b/interface/src/system/SystemStatusForm.tsx index 7c3f431..eb83ae9 100644 --- a/interface/src/system/SystemStatusForm.tsx +++ b/interface/src/system/SystemStatusForm.tsx @@ -7,6 +7,7 @@ import DevicesIcon from '@material-ui/icons/Devices'; import MemoryIcon from '@material-ui/icons/Memory'; import ShowChartIcon from '@material-ui/icons/ShowChart'; import SdStorageIcon from '@material-ui/icons/SdStorage'; +import FolderIcon from '@material-ui/icons/Folder'; import DataUsageIcon from '@material-ui/icons/DataUsage'; import PowerSettingsNewIcon from '@material-ui/icons/PowerSettingsNew'; import RefreshIcon from '@material-ui/icons/Refresh'; @@ -26,6 +27,11 @@ interface SystemStatusFormState { type SystemStatusFormProps = AuthenticatedContextProps & RestFormProps; +function formatNumber(num: number) { + return new Intl.NumberFormat().format(num); +} + + class SystemStatusForm extends Component { state: SystemStatusFormState = { @@ -67,7 +73,7 @@ class SystemStatusForm extends Component - + @@ -76,7 +82,7 @@ class SystemStatusForm extends Component - + @@ -85,7 +91,16 @@ class SystemStatusForm extends Component - + + + + + + + + + + diff --git a/interface/src/system/types.ts b/interface/src/system/types.ts index 323f947..bbd9362 100644 --- a/interface/src/system/types.ts +++ b/interface/src/system/types.ts @@ -8,6 +8,8 @@ export interface SystemStatus { sdk_version: string; flash_chip_size: number; flash_chip_speed: number; + fs_used: number; + fs_total: number; } export interface OTASettings { diff --git a/lib/framework/ESP8266React.cpp b/lib/framework/ESP8266React.cpp index b03a7d1..6ddcf9f 100644 --- a/lib/framework/ESP8266React.cpp +++ b/lib/framework/ESP8266React.cpp @@ -42,11 +42,11 @@ ESP8266React::ESP8266React(AsyncWebServer* server, FS* fs) : }); #else // Serve static resources from /www/ - server->serveStatic("/js/", SPIFFS, "/www/js/"); - server->serveStatic("/css/", SPIFFS, "/www/css/"); - server->serveStatic("/fonts/", SPIFFS, "/www/fonts/"); - server->serveStatic("/app/", SPIFFS, "/www/app/"); - server->serveStatic("/favicon.ico", SPIFFS, "/www/favicon.ico"); + server->serveStatic("/js/", *fs, "/www/js/"); + server->serveStatic("/css/", *fs, "/www/css/"); + server->serveStatic("/fonts/", *fs, "/www/fonts/"); + server->serveStatic("/app/", *fs, "/www/app/"); + server->serveStatic("/favicon.ico", *fs, "/www/favicon.ico"); // Serving all other get requests with "/www/index.htm" // OPTIONS get a straight up 200 response server->onNotFound([](AsyncWebServerRequest* request) { diff --git a/lib/framework/ESP8266React.h b/lib/framework/ESP8266React.h index a4d95f3..3509f0a 100644 --- a/lib/framework/ESP8266React.h +++ b/lib/framework/ESP8266React.h @@ -5,12 +5,10 @@ #ifdef ESP32 #include -#include #include #elif defined(ESP8266) #include #include -#include #endif #include diff --git a/lib/framework/SystemStatus.cpp b/lib/framework/SystemStatus.cpp index cda53c9..28d987a 100644 --- a/lib/framework/SystemStatus.cpp +++ b/lib/framework/SystemStatus.cpp @@ -1,29 +1,42 @@ -#include - -SystemStatus::SystemStatus(AsyncWebServer* server, SecurityManager* securityManager) { - server->on(SYSTEM_STATUS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&SystemStatus::systemStatus, this, std::placeholders::_1), - AuthenticationPredicates::IS_AUTHENTICATED)); -} - -void SystemStatus::systemStatus(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_ESP_STATUS_SIZE); - JsonObject root = response->getRoot(); -#ifdef ESP32 - root["esp_platform"] = "esp32"; - root["max_alloc_heap"] = ESP.getMaxAllocHeap(); -#elif defined(ESP8266) - root["esp_platform"] = "esp8266"; - root["max_alloc_heap"] = ESP.getMaxFreeBlockSize(); -#endif - root["cpu_freq_mhz"] = ESP.getCpuFreqMHz(); - root["free_heap"] = ESP.getFreeHeap(); - root["sketch_size"] = ESP.getSketchSize(); - root["free_sketch_space"] = ESP.getFreeSketchSpace(); - root["sdk_version"] = ESP.getSdkVersion(); - root["flash_chip_size"] = ESP.getFlashChipSize(); - root["flash_chip_speed"] = ESP.getFlashChipSpeed(); - response->setLength(); - request->send(response); -} +#include + +SystemStatus::SystemStatus(AsyncWebServer* server, SecurityManager* securityManager) { + server->on(SYSTEM_STATUS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&SystemStatus::systemStatus, this, std::placeholders::_1), + AuthenticationPredicates::IS_AUTHENTICATED)); +} + +void SystemStatus::systemStatus(AsyncWebServerRequest* request) { + AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_ESP_STATUS_SIZE); + JsonObject root = response->getRoot(); +#ifdef ESP32 + root["esp_platform"] = "esp32"; + root["max_alloc_heap"] = ESP.getMaxAllocHeap(); +#elif defined(ESP8266) + root["esp_platform"] = "esp8266"; + root["max_alloc_heap"] = ESP.getMaxFreeBlockSize(); +#endif + root["cpu_freq_mhz"] = ESP.getCpuFreqMHz(); + root["free_heap"] = ESP.getFreeHeap(); + root["sketch_size"] = ESP.getSketchSize(); + root["free_sketch_space"] = ESP.getFreeSketchSpace(); + root["sdk_version"] = ESP.getSdkVersion(); + root["flash_chip_size"] = ESP.getFlashChipSize(); + root["flash_chip_speed"] = ESP.getFlashChipSpeed(); + +// TODO - Ideally this class will take an *FS and extract the file system information from there. +// ESP8266 and ESP32 do not have feature parity in FS.h which currently makes that difficult. +#ifdef ESP32 + root["fs_total"] = SPIFFS.totalBytes(); + root["fs_used"] = SPIFFS.usedBytes(); +#elif defined(ESP8266) + FSInfo fs_info; + SPIFFS.info(fs_info); + root["fs_total"] = fs_info.totalBytes; + root["fs_used"] = fs_info.usedBytes; +#endif + + response->setLength(); + request->send(response); +} diff --git a/lib/framework/SystemStatus.h b/lib/framework/SystemStatus.h index aa44623..397869b 100644 --- a/lib/framework/SystemStatus.h +++ b/lib/framework/SystemStatus.h @@ -4,9 +4,11 @@ #ifdef ESP32 #include #include +#include #elif defined(ESP8266) #include #include +#include #endif #include