#ifndef __CONFIGURATION_H__ #define __CONFIGURATION_H__ #include #include #include #include "types.h" #include ESP_EVENT_DECLARE_BASE(CONFIG_EVENT); #define WIFI_CONFIG_CHANGED_EVENT 1 #define AIS_CONFIG_CHANGED_EVENT 2 #define NMEA_CONFIG_CHANGED_EVENT 3 void config_init(); /*** WiFi Configuration ***/ /** * @brief Returns the WiFi operation mode * * @return wifi_operation_mode_t */ wifi_operation_mode_t config_get_wifi_operation_mode(); /** * @brief Returns the SSID (regardless of mode) * * @return const char* */ const char *config_get_ssid(); /** * @brief Returns the password (if applicable) * * @return const char* */ const char *config_get_password(); /** * @brief Configures the WiFi interface. Will not take effect until reboot. * * @param mode Desired mode * @param ssid Desired SSID * @param password Desired password. May be NULL if not applicable. */ void config_wifi(wifi_operation_mode_t mode, const char *ssid, const char *password); /*** NMEA configuration ***/ /** * @brief Returns NMEA gateway mode * * @return nmea_gateway_mode_t */ nmea_gateway_mode_t config_get_nmea_gateway_mode(); /** * @brief Returns the IP address (not applicable for NMEA_TCP_LISTENER) * * @return const char* */ const char *config_get_nmea_gateway_ip(); /** * @brief Returns the TCP port (applicable to all modes) * * @return uint16_t */ uint16_t config_get_nmea_gateway_port(); /** * @brief Congigures the NMEA gateway * * @param mode Desired mode * @param ip Target IP (for senders only) * @param port TCP port */ void config_nmea_gateway(nmea_gateway_mode_t mode, const char *ip, uint16_t port); /*** Misc ***/ /** * @brief Returns the AP MAC address * * @return const char* */ const char *config_ap_mac_address(); /** * @brief Returns the station MAC address * * @return const char* */ const char *config_st_mac_address(); /** * @brief Resets WiFi configuration to default * */ void config_reset_wifi(); /** * @brief Resets everything to defaults. Will take effect after reboot. * */ void config_reset_all(); /** * @brief Sets a flag that indicates successul association with the target AP * */ void config_set_wifi_success(); /** * @brief Returns true if association with the target AP worked at least once before * * @return true * @return false */ bool config_has_wifi_success(); #endif