diff --git a/Project/applications/smartcities/callbacks.c b/Project/applications/smartcities/callbacks.c index 70bb0c5..3891d2e 100644 --- a/Project/applications/smartcities/callbacks.c +++ b/Project/applications/smartcities/callbacks.c @@ -8,14 +8,23 @@ void dhcp_connect_result_cb(int result) libwismart_GetCurrentIP(&ip,NULL,NULL); printf("IP: %d.%d.%d.%d \r\n",ip.addr[3],ip.addr[2],ip.addr[1],ip.addr[0]); connected = 1; + retries = 0; } else if(result==LIBWISMART_DHCP_TIMEOUT) { printf("DHCP timeout\r\n"); + if(++retries == MAX_RETRIES) + { + timeout = 1; + } } else { printf("DHCP error\r\n"); + if(++retries == MAX_RETRIES) + { + timeout = 1; + } } } @@ -25,7 +34,20 @@ void wifi_connect_result_cb(int result) if(result==WISMART_WIFI_CONN_TIMEOUT){ timeout=1; } - printf("WiFi Connect indication: %s\r\n", (result == WISMART_WIFI_CONNECTED) ? "Connected": "Failed\r\n"); + printf("WiFi Connect indication: "); + if(result == WISMART_WIFI_CONNECTED) + { + printf("Connected\r\n"); + retries = 0; + } + else + { + printf("Failed\r\n"); + if(++retries == MAX_RETRIES) + { + timeout = 1; + } + } } void wifi_connect_ap_result_cb(int result) diff --git a/Project/applications/smartcities/configServer.c b/Project/applications/smartcities/configServer.c index 6204c6e..4008864 100644 --- a/Project/applications/smartcities/configServer.c +++ b/Project/applications/smartcities/configServer.c @@ -56,9 +56,11 @@ void configServer_setClientParameters() CONFIG_SERVER_DBG("radPass : %s\r\n",arg_radPassStr); CONFIG_SERVER_DBG("geoloc : %s\r\n",arg_geoLocalizationStr); - char localization[32]; - strcpy(localization,arg_geoLocalizationStr); - libwismart_RegistrySet(&geo,&localization[0]); + config_params_t config; + strcpy(config.user,arg_radUserStr); + strcpy(config.password,arg_radPassStr); + strcpy(config.localization,arg_geoLocalizationStr); + libwismart_RegistrySet(&geo,&config); /* Value validation */ if((strlen((char*)arg_networkNameStr) > 32) || (strlen((char*)arg_networkNameStr) == 0)) @@ -85,8 +87,6 @@ void configServer_setClientParameters() libwismart_ProfileSet_Str("wepkey", (char*)arg_passphraseStr); libwismart_ProfileSet_Str("passphrase", (char*)arg_passphraseStr); libwismart_ProfileSet_Int("security", (uint16_t) PROFILE_SECURITY_WPA_WPA2); - libwismart_ProfileSet_Str("gateway", (char*)arg_radUserStr); //NO ME ARREPIENTO DE ESTO - libwismart_ProfileSet_Str("netmask", (char*)arg_radPassStr); //NI DE ESTO } else { @@ -173,8 +173,8 @@ uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllo libwismart_ProfileGet_Int("profile_enabled", &profile_enabled); - if(strcmp((char*)varName,"WIFI_MODE") == 0){ - uint16_t wifi_mode; + if(strcmp((char*)varName,"WIFI_SECURITY") == 0){ + uint16_t security; /* Alocate space for the value */ value = chHeapAlloc(NULL, 100); @@ -182,16 +182,19 @@ uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllo return WISMART_SERVER_ERR_MEM; } - if(profile_enabled == PROFILE_ENABLED) { - libwismart_ProfileGet_Int("wifi_mode", &wifi_mode); - if(wifi_mode == PROFILE_WIFI_MODE_SOFTAP){ - strcpy((char*)value, "SoftAp"); - }else{ - strcpy((char*)value, "Client"); + libwismart_ProfileGet_Int("security", &security); + if(security == PROFILE_SECURITY_OPEN) + { + strcpy(value,"Open"); + } + else if(security == PROFILE_SECURITY_WPA_WPA2) + { + strcpy(value,"WPA/WPA2"); + } + else + { + strcpy(value,"WEP"); } - }else{ - strcpy((char*)value, "N/A"); - } /* * Instruct server to automatically free the memory by calling the @@ -211,12 +214,8 @@ uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllo return WISMART_SERVER_ERR_MEM; } - if(profile_enabled == PROFILE_ENABLED) { - libwismart_ProfileGet_Str("ssid", (char*)value); - }else{ - strcpy((char*)value, "N/A"); - } - + libwismart_ProfileGet_Str("ssid", (char*)value); + /* * Instruct server to automatically free the memory by calling the * appropriate free() function when the request is replied. @@ -259,6 +258,65 @@ uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllo return WISMART_SERVER_ERR_OK; } + + if(strcmp((char*)varName,"WIFI_RADUSER") == 0){ + /* Alocate space for the value */ + value = chHeapAlloc(NULL, 100); + if(value == NULL){ + return WISMART_SERVER_ERR_MEM; + } + + libwismart_ProfileGet_Str("gateway", (char*)value); + + /* + * Instruct server to automatically free the memory by calling the + * appropriate free() function when the request is replied. + */ + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC; + (*varValue) = value; + + return WISMART_SERVER_ERR_OK; + } + + if(strcmp((char*)varName,"WIFI_RADPASS") == 0){ + /* Alocate space for the value */ + value = chHeapAlloc(NULL, 100); + if(value == NULL){ + return WISMART_SERVER_ERR_MEM; + } + + libwismart_ProfileGet_Str("netmask", (char*)value); + + /* + * Instruct server to automatically free the memory by calling the + * appropriate free() function when the request is replied. + */ + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC; + (*varValue) = value; + + return WISMART_SERVER_ERR_OK; + } + + if(strcmp((char*)varName,"WIFI_GEOLOC") == 0){ + /* Alocate space for the value */ + value = chHeapAlloc(NULL, 100); + char geoloc[32]; + if(value == NULL){ + return WISMART_SERVER_ERR_MEM; + } + + libwismart_RegistryGet(&geo,&geoloc); + strcpy(value,geoloc); + + /* + * Instruct server to automatically free the memory by calling the + * appropriate free() function when the request is replied. + */ + *varAllocType = WISMART_SERVER_ALLOC_DYNAMIC; + (*varValue) = value; + + return WISMART_SERVER_ERR_OK; + } /* We should never reach here */ diff --git a/Project/applications/smartcities/include/callbacks.h b/Project/applications/smartcities/include/callbacks.h index 71923ac..1bb2ecb 100644 --- a/Project/applications/smartcities/include/callbacks.h +++ b/Project/applications/smartcities/include/callbacks.h @@ -7,6 +7,7 @@ #define WIFI_MODE_CLIENT 1 #define WIFI_MODE_SOFTAP 2 +#define MAX_RETRIES 5 void dhcp_connect_result_cb(int result); void wifi_connect_result_cb(int result); @@ -19,5 +20,6 @@ void printWifiInfo(uint8_t wifiMode); extern uint8_t connected; extern uint8_t timeout; +extern uint8_t retries; #endif \ No newline at end of file diff --git a/Project/applications/smartcities/include/configServer.h b/Project/applications/smartcities/include/configServer.h index a7b3dad..433bcc2 100644 --- a/Project/applications/smartcities/include/configServer.h +++ b/Project/applications/smartcities/include/configServer.h @@ -24,6 +24,12 @@ void configServer_rebootTimerHandler(void *arg); int configServer_hex2bin(char *hex, char *buf, size_t hexLen); uint32_t configServer_dynamicCb(char* varName, char** varValue, uint8_t* varAllocType); +typedef struct { + char user[64]; + char password[64]; + char localization[32]; +} config_params_t; + extern wismart_registryKey_t geo; #define SECURITY_TYPE_OPEN "open" diff --git a/Project/applications/smartcities/makefsdata/fs/en_index.html b/Project/applications/smartcities/makefsdata/fs/en_index.html index eebeedb..9da3f27 100644 --- a/Project/applications/smartcities/makefsdata/fs/en_index.html +++ b/Project/applications/smartcities/makefsdata/fs/en_index.html @@ -27,9 +27,12 @@
Registry Configuration:
-
Mode:
$_DYNAMIC[WIFI_MODE]
+
Mode:
$_DYNAMIC[WIFI_SECURITY]
Network Name:
$_DYNAMIC[WIFI_SSID]
Passphrase:
$_DYNAMIC[WIFI_PASSPHRASE]
+
RADIUS User:
$_DYNAMIC[WIFI_RADUSER]
+
RADIUS Pass:
$_DYNAMIC[WIFI_RADPASS]
+
Coordinates:
$_DYNAMIC[WIFI_GEOLOC]
diff --git a/Project/applications/smartcities/makefsdata/fsdata.c b/Project/applications/smartcities/makefsdata/fsdata.c index a59c287..ab32ffe 100644 --- a/Project/applications/smartcities/makefsdata/fsdata.c +++ b/Project/applications/smartcities/makefsdata/fsdata.c @@ -915,7 +915,26 @@ static const char data_en_index_html[] = { 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b, - 0x57, 0x49, 0x46, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5d, + 0x57, 0x49, 0x46, 0x49, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, + 0x49, 0x54, 0x59, 0x5d, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, + 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, + 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, + 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, + 0x3e, 0xd, 0xa, 0x9, 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3a, 0x31, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, + 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, + 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, + 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, + 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32, + 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, + 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b, + 0x57, 0x49, 0x46, 0x49, 0x5f, 0x53, 0x53, 0x49, 0x44, 0x5d, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, @@ -925,16 +944,54 @@ static const char data_en_index_html[] = { 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, - 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x4e, 0x61, 0x6d, 0x65, - 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32, 0x35, 0x30, 0x70, 0x78, - 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, - 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, - 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59, - 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b, 0x57, 0x49, 0x46, 0x49, - 0x5f, 0x53, 0x53, 0x49, 0x44, 0x5d, 0x3c, 0x2f, 0x64, 0x69, + 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e, 0x50, 0x61, + 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x3a, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x3a, 0x32, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, + 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, + 0x6b, 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, + 0x4d, 0x49, 0x43, 0x5b, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x50, + 0x41, 0x53, 0x53, 0x50, 0x48, 0x52, 0x41, 0x53, 0x45, 0x5d, + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, + 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, + 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, + 0x9, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, + 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, + 0x39, 0x2c, 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e, 0x52, 0x41, + 0x44, 0x49, 0x55, 0x53, 0x20, 0x55, 0x73, 0x65, 0x72, 0x3a, + 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, + 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3a, 0x32, 0x35, 0x30, 0x70, 0x78, 0x3b, + 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, + 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, + 0x63, 0x6b, 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59, 0x4e, + 0x41, 0x4d, 0x49, 0x43, 0x5b, 0x57, 0x49, 0x46, 0x49, 0x5f, + 0x52, 0x41, 0x44, 0x55, 0x53, 0x45, 0x52, 0x5d, 0x3c, 0x2f, + 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, + 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, + 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x9, 0x3c, + 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, + 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x31, 0x35, 0x30, + 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, + 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, + 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, + 0x33, 0x36, 0x29, 0x3b, 0x22, 0x3e, 0x52, 0x41, 0x44, 0x49, + 0x55, 0x53, 0x20, 0x50, 0x61, 0x73, 0x73, 0x3a, 0x3c, 0x2f, + 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, + 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3a, 0x32, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, + 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, + 0x3b, 0x22, 0x3e, 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x5b, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x52, 0x41, + 0x44, 0x50, 0x41, 0x53, 0x53, 0x5d, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, @@ -944,32 +1001,32 @@ static const char data_en_index_html[] = { 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x72, 0x67, 0x62, 0x28, 0x35, 0x35, 0x2c, 0x34, 0x39, 0x2c, 0x33, 0x36, - 0x29, 0x3b, 0x22, 0x3e, 0x50, 0x61, 0x73, 0x73, 0x70, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, - 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, - 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x32, - 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, 0x74, - 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, 0x3e, - 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5b, - 0x57, 0x49, 0x46, 0x49, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x50, - 0x48, 0x52, 0x41, 0x53, 0x45, 0x5d, 0x3c, 0x2f, 0x64, 0x69, + 0x29, 0x3b, 0x22, 0x3e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, - 0x6c, 0x65, 0x3d, 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, - 0x62, 0x6f, 0x74, 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, - 0x69, 0x76, 0x3e, 0xd, 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, - 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, - 0x76, 0x3e, 0xd, 0xa, 0x9, 0xd, 0xa, 0x3c, 0x64, 0x69, - 0x76, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74, - 0x65, 0x72, 0x22, 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, - 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, - 0x64, 0x46, 0x6f, 0x6e, 0x74, 0x22, 0x3e, 0x43, 0x6f, 0x70, - 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x26, 0x63, 0x6f, 0x70, - 0x79, 0x3b, 0x32, 0x30, 0x31, 0x33, 0x3c, 0x2f, 0x64, 0x69, - 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, - 0x76, 0x3e, 0xd, 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, - 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, - 0x74, 0x6d, 0x6c, 0x3e, 0xd, 0xa, 0xd, 0xa, }; + 0x6c, 0x65, 0x3d, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, + 0x32, 0x35, 0x30, 0x70, 0x78, 0x3b, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x3a, 0x6c, 0x65, 0x66, 0x74, 0x3b, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x3a, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x3b, 0x22, + 0x3e, 0x24, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, + 0x5b, 0x57, 0x49, 0x46, 0x49, 0x5f, 0x47, 0x45, 0x4f, 0x4c, + 0x4f, 0x43, 0x5d, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0x3c, + 0x64, 0x69, 0x76, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x3d, + 0x22, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x3a, 0x62, 0x6f, 0x74, + 0x68, 0x3b, 0x22, 0x3e, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, + 0xd, 0xa, 0x9, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, + 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, + 0xa, 0x9, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x69, + 0x64, 0x3d, 0x22, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x22, + 0x3e, 0xd, 0xa, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d, 0x65, 0x64, 0x46, 0x6f, + 0x6e, 0x74, 0x22, 0x3e, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x26, 0x63, 0x6f, 0x70, 0x79, 0x3b, 0x32, + 0x30, 0x31, 0x33, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, + 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xd, + 0xa, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, + 0x79, 0x3e, 0xd, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, + 0x3e, 0xd, 0xa, 0xd, 0xa, }; static const char data_en_reboot_html[] = { /* /en_reboot.html */