| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- #include "defines.h"
- #include "Helper.h"
- #include "network_init.h"
- #include <string>
- #include <stdio.h>
- #include <esp_wifi.h>
- #include <esp_event.h>
- #include <esp_log.h>
- #include <esp_system.h>
- #include <nvs_flash.h>
- #include <sys/param.h>
- #include <esp_netif.h>
- #include <esp_eth.h>
- #include <netdb.h>
- #include <esp_http_server.h>
- #include "time_sntp.h"
- #include "server_main.h"
- #include "server_remote.h"
- #include "server_file.h"
- #include "server_ota.h"
- #include "server_camera.h"
- #include "server_mqtt.h"
- #include "read_network_config.h"
- #include "connect_wifi_ap.h"
- #include "connect_wifi_sta.h"
- #if (CONFIG_ETH_ENABLED && CONFIG_ETH_USE_SPI_ETHERNET && CONFIG_ETH_SPI_ETHERNET_W5500)
- #include "connect_eth.h"
- #endif
- #include "MainFlowControl.h"
- #include "ClassLogFile.h"
- #include "basic_auth.h"
- #include "statusled.h"
- static const char *TAG = "NETWORK INIT";
- // httpd_handle_t my_httpd_server = NULL;
- esp_err_t init_network(void)
- {
- esp_err_t retVal = ESP_OK;
- TickType_t xDelay = 500 / portTICK_PERIOD_MS;
- // network_config.connection_type = NETWORK_CONNECTION_WIFI_AP_SETUP;
- // network_config.connection_type = NETWORK_CONNECTION_WIFI_AP;
- network_config.connection_type = NETWORK_CONNECTION_WIFI_STA;
- // network_config.connection_type = NETWORK_CONNECTION_DISCONNECT;
- // Read Network parameter and start it
- // ********************************************
- int iNetworkStatus = LoadNetworkFromFile(NETWORK_CONFIG_FILE);
- // Network config available (0) or SSID/password not configured (-2)
- if (file_exists(CONFIG_FILE) && ((iNetworkStatus == 0) || (iNetworkStatus == -2)))
- {
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Network config loaded, init Network...");
- if (network_config.connection_type == NETWORK_CONNECTION_WIFI_AP_SETUP)
- {
- retVal = wifi_init_ap();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi AP init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_remote_server();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Remote Server init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Wifi AP Setup Initialized");
- }
- else if (network_config.connection_type == NETWORK_CONNECTION_WIFI_AP)
- {
- retVal = wifi_init_ap();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi AP init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_webserver();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi AP Webserver init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Wifi AP Webserver Initialized");
- }
- else if (network_config.connection_type == NETWORK_CONNECTION_WIFI_STA)
- {
- if (iNetworkStatus == -2)
- {
- network_config.connection_type = NETWORK_CONNECTION_WIFI_AP_SETUP;
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "SSID or password not configured!");
- set_status_led(WLAN_INIT, 2, true);
- retVal = wifi_init_ap();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi AP init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_remote_server();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Remote Server init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Wifi AP Setup Initialized");
- }
- else
- {
- retVal = wifi_init_sta();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi STA init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_webserver();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi STA Webserver init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Wifi STA Webserver Initialized");
- }
- }
- #if (CONFIG_ETH_ENABLED && CONFIG_ETH_USE_SPI_ETHERNET && CONFIG_ETH_SPI_ETHERNET_W5500)
- else if (network_config.connection_type == NETWORK_CONNECTION_ETH)
- {
- retVal = eth_init_W5500();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Ethernet init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_webserver();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Ethernet Webserver init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Ethernet Webserver Initialized");
- }
- #endif // (CONFIG_ETH_ENABLED && CONFIG_ETH_USE_SPI_ETHERNET && CONFIG_ETH_SPI_ETHERNET_W5500)
- else if (network_config.connection_type == NETWORK_CONNECTION_DISCONNECT)
- {
- // esp_wifi_deinit();
- // esp_wifi_set_mode(WIFI_MODE_NULL);
- // esp_wifi_stop();
- return ESP_OK;
- }
- }
- // network.ini not available (-1) and config.ini not available
- else
- {
- network_config.connection_type = NETWORK_CONNECTION_WIFI_AP_SETUP;
- retVal = wifi_init_ap();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Wifi AP init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- vTaskDelay(xDelay);
- retVal = init_remote_server();
- if (retVal != ESP_OK)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "Remote Server init failed. Device init aborted!");
- set_status_led(WLAN_INIT, 3, true);
- return retVal;
- }
- LogFile.WriteToFile(ESP_LOG_INFO, TAG, "Wifi AP Setup Initialized");
- }
- init_basic_auth();
- ESP_LOGD(TAG, "main: sleep for: %ldms", (long)xDelay * CONFIG_FREERTOS_HZ / portTICK_PERIOD_MS);
- vTaskDelay(xDelay);
- return retVal;
- }
- esp_err_t init_webserver(void)
- {
- // Start webserver + register handler
- // ********************************************
- ESP_LOGD(TAG, "starting servers");
- // my_httpd_server = start_webserver();
- httpd_handle_t my_httpd_server = start_webserver();
- if (my_httpd_server == NULL)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "start webserver failed");
- return ESP_FAIL;
- }
- camera_register_uri(my_httpd_server);
- main_flow_register_uri(my_httpd_server);
- file_server_register_uri(my_httpd_server, "/sdcard");
- ota_register_uri(my_httpd_server);
- mqtt_register_uri(my_httpd_server);
- gpio_handler_create(my_httpd_server);
- ESP_LOGD(TAG, "Before reg main server uri");
- webserver_register_uri(my_httpd_server, "/sdcard");
- return ESP_OK;
- }
- esp_err_t init_remote_server(void)
- {
- // Start ap server + register handler
- // ********************************************
- ESP_LOGD(TAG, "starting ap servers");
- // my_httpd_server = start_remote_webserver();
- httpd_handle_t my_httpd_server = start_webserver();
- if (my_httpd_server == NULL)
- {
- LogFile.WriteToFile(ESP_LOG_ERROR, TAG, "start remote server failed");
- return ESP_FAIL;
- }
- ESP_LOGD(TAG, "Before reg ap server uri");
- remote_webserver_register_uri(my_httpd_server);
- return ESP_OK;
- }
|