/* ESP800.cpp - ESP3D command class Copyright (c) 2014 Luc Lebosse. All rights reserved. This code is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with This code; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "../../include/esp3d_config.h" #include "../commands.h" #include "../esp3doutput.h" #include "../settings_esp3d.h" #include "../../modules/network/netconfig.h" #include "../../modules/authentication/authentication_service.h" #ifdef FILESYSTEM_FEATURE #include "../../modules/filesystem/esp_filesystem.h" #endif //FILESYSTEM_FEATURE #if defined (WIFI_FEATURE) || defined(ETH_FEATURE) ||defined(BLUETOOTH_FEATURE) #include "../../modules/network/netconfig.h" #if defined (WIFI_FEATURE) #include "../../modules/wifi/wificonfig.h" #endif //WIFI_FEATURE #endif //WIFI_FEATURE || ETH_FEATURE || BLUETOOTH_FEATURE #ifdef HTTP_FEATURE #include "../../modules/http/http_server.h" #endif //HTTP_FEATURE #ifdef TIMESTAMP_FEATURE #include "../../modules/time/time_server.h" #endif //TIMESTAMP_FEATURE #ifdef CAMERA_DEVICE #include "../../modules/camera/camera.h" #endif //CAMERA_DEVICE //get fw version firmare target and fw version //eventually set time with pc time //output is JSON or plain text according parameter //[ESP800] bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type, ESP3DOutput * output) { bool response = true; String parameter; #ifdef AUTHENTICATION_FEATURE if (auth_type == LEVEL_GUEST) { output->printERROR("Wrong authentication!", 401); return false; } #else (void)auth_type; #endif //AUTHENTICATION_FEATURE bool plain = hastag(cmd_params,"plain"); #ifdef TIMESTAMP_FEATURE String newtime = get_param (cmd_params, "time="); String tparm = (timeserver.is_internet_time())?"Auto":"Manual"; if (!timeserver.is_internet_time() && (newtime.length() > 0)) { if (!timeserver.setTime(newtime.c_str())) { tparm="Failed to set"; } } else { if (!timeserver.is_internet_time() && (newtime.length() == 0)) { tparm="Not set"; } } #endif //TIMESTAMP_FEATURE //FW version if (plain) { output->print("FW version:"); } else { output->print("{\"FWVersion\":\""); } output->print(FW_VERSION); if(plain) { output->printLN(""); } else { output->print("\""); } //FW target if (plain) { output->print("FW target:"); } else { output->print(",\"FWTarget\":\""); } output->print(Settings_ESP3D::GetFirmwareTargetShortName()); if(plain) { output->printLN(""); } else { output->print("\""); } //SD connection if (plain) { output->print("SD connection:"); } else { output->print(",\"SDConnection\":\""); } if (Settings_ESP3D::GetSDDevice() == ESP_DIRECT_SD) { output->print("direct"); } else if (Settings_ESP3D::GetSDDevice() == ESP_SHARED_SD) { output->print("shared"); } else { output->print("none"); } if(plain) { output->printLN(""); } else { output->print("\""); } //Authentication if (plain) { output->print("Authentication:"); } else { output->print(",\"Authentication\":\""); } #ifdef AUTHENTICATION_FEATURE output->print("Enabled"); #else output->print("Disabled"); #endif //AUTHENTICATION_FEATURE if(plain) { output->printLN(""); } else { output->print("\""); } #if (defined(WIFI_FEATURE) || defined(ETH_FEATURE)) && defined(HTTP_FEATURE) //Web Communication if (plain) { output->print("Web Communication:"); } else { output->print(",\"WebCommunication\":\""); } #if defined (ASYNCWEBSERVER_FEATURE) output->print("Asynchronous"); #else output->print("Synchronous"); #endif //ASYNCWEBSERVER_FEATURE if(plain) { output->printLN(""); } else { output->print("\""); } //WebSocket IP if (plain) { output->print("Web Socket IP:"); } else { output->print(",\"WebSocketIP\":\""); } output->print(NetConfig::localIP().c_str()); if(plain) { output->printLN(""); } else { output->print("\""); } //WebSocket Port if (plain) { output->print("Web Socket port:"); } else { output->print(",\"WebSocketport\":\""); } #if defined (ASYNCWEBSERVER_FEATURE) output->print(HTTP_Server::port()); #else output->print(HTTP_Server::port() +1); #endif if(plain) { output->printLN(""); } else { output->print("\""); } #endif // (WIFI_FEATURE) || ETH_FEATURE) && HTTP_FEATURE) #if defined(WIFI_FEATURE) || defined(ETH_FEATURE) || defined(BT_FEATURE) //Hostname if (plain) { output->print("Hostname:"); } else { output->print(",\"Hostname\":\""); } output->print(NetConfig::hostname()); if(plain) { output->printLN(""); } else { output->print("\""); } #endif //WIFI_FEATURE|| ETH_FEATURE || BT_FEATURE #if defined(WIFI_FEATURE) if (WiFiConfig::started()) { //WiFi mode if (plain) { output->print("WiFi mode:"); } else { output->print(",\"WiFiMode\":\""); } output->print((WiFi.getMode() == WIFI_AP)?"AP":"STA"); if(plain) { output->printLN(""); } else { output->print("\""); } } #endif //WIFI_FEATURE #if defined(WIFI_FEATURE) || defined(ETH_FEATURE) //Update if (plain) { output->print("Web Update:"); } else { output->print(",\"WebUpdate\":\""); } #ifdef WEB_UPDATE_FEATURE if (ESP_FileSystem::max_update_size()!=0){ output->print("Enabled"); } else { output->print("Disabled"); } #else output->print("Disabled"); #endif //WEB_UPDATE_FEATURE if(plain) { output->printLN(""); } else { output->print("\""); } #endif //WIFI_FEATURE|| ETH_FEATURE //Hostname if (plain) { output->print("Filesystem:"); } else { output->print(",\"Filesystem\":\""); } #if defined(FILESYSTEM_FEATURE) output->print(ESP_FileSystem::FilesystemName()); #else output->print("none"); #endif //FILESYSTEM_FEATURE if(plain) { output->printLN(""); } else { output->print("\""); } //time server if (plain) { output->print("Time:"); } else { output->print(",\"Time\":\""); } #ifdef TIMESTAMP_FEATURE output->print(tparm.c_str()); #else output->print("none"); #endif //TIMESTAMP_FEATURE if(plain) { output->printLN(""); } else { output->print("\""); } #ifdef CAMERA_DEVICE //camera port if (plain) { output->print("Camera port:"); } else { output->print(",\"Cam_port\":\""); } output->print(esp3d_camera.port()); if(plain) { output->printLN(""); } else { output->print("\""); } //camera ID if (plain) { output->print("Camera ID:"); } else { output->print(",\"Cam_ID\":\""); } output->print(esp3d_camera.GetModel()); if(plain) { output->printLN(""); } else { output->print("\""); } //camera Name if (plain) { output->print("Camera Name:"); } else { output->print(",\"Cam_name\":\""); } output->print(esp3d_camera.GetModelString()); if(plain) { output->printLN(""); } else { output->print("\""); } #endif //CAMERA_DEVICE //final if(!plain) { output->printLN("}"); } return response; }