| 39 | } |
| 40 | |
| 41 | static openhd::Config load_or_default() { |
| 42 | try { |
| 43 | openhd::Config ret{}; |
| 44 | if (OHDFilesystemUtil::exists("/usr/local/share/openhd/debug.txt")) { |
| 45 | if (!OHDFilesystemUtil::exists(CONFIG_FILE_PATH)) { |
| 46 | std::cerr << "WARN: No config file [" << CONFIG_FILE_PATH << "] used!" |
| 47 | << std::endl; |
| 48 | return ret; |
| 49 | } else { |
| 50 | std::cout << "WARN: Advanced config file [" << CONFIG_FILE_PATH |
| 51 | << "] used!" << std::endl; |
| 52 | } |
| 53 | } |
| 54 | inih::INIReader r{CONFIG_FILE_PATH}; |
| 55 | if (OHDFilesystemUtil::exists("/usr/local/share/openhd/debug.txt")) { |
| 56 | // Parse WiFi configuration |
| 57 | ret.WIFI_ENABLE_AUTODETECT = |
| 58 | r.Get<bool>("wifi", "WIFI_ENABLE_AUTODETECT", false); |
| 59 | ret.WIFI_WB_LINK_CARDS = |
| 60 | r.GetVector<std::string>("wifi", "WIFI_WB_LINK_CARDS"); |
| 61 | ret.WIFI_WIFI_HOTSPOT_CARD = |
| 62 | r.Get<std::string>("wifi", "WIFI_WIFI_HOTSPOT_CARD", ""); |
| 63 | ret.WIFI_MONITOR_CARD_EMULATE = |
| 64 | r.Get<bool>("wifi", "WIFI_MONITOR_CARD_EMULATE", false); |
| 65 | ret.WIFI_FORCE_NO_LINK_BUT_HOTSPOT = |
| 66 | r.Get<bool>("wifi", "WIFI_FORCE_NO_LINK_BUT_HOTSPOT", false); |
| 67 | ret.WIFI_LOCAL_NETWORK_ENABLE = |
| 68 | r.Get<bool>("wifi", "WIFI_LOCAL_NETWORK_ENABLE", false); |
| 69 | ret.WIFI_LOCAL_NETWORK_SSID = |
| 70 | r.Get<std::string>("wifi", "WIFI_LOCAL_NETWORK_SSID", ""); |
| 71 | ret.WIFI_LOCAL_NETWORK_PASSWORD = |
| 72 | r.Get<std::string>("wifi", "WIFI_LOCAL_NETWORK_PASSWORD", ""); |
| 73 | |
| 74 | // Parse Network configuration |
| 75 | ret.NW_ETHERNET_CARD = |
| 76 | r.Get<std::string>("network", "NW_ETHERNET_CARD", ""); |
| 77 | ret.NW_MANUAL_FORWARDING_IPS = |
| 78 | r.GetVector<std::string>("network", "NW_MANUAL_FORWARDING_IPS"); |
| 79 | ret.NW_FORWARD_TO_LOCALHOST_58XX = |
| 80 | r.Get<bool>("network", "NW_FORWARD_TO_LOCALHOST_58XX", false); |
| 81 | |
| 82 | // Parse Ethernet link configuration |
| 83 | std::cout << "WARN: Parsing Ethernet link configuration" << std::endl; |
| 84 | ret.GROUND_UNIT_IP = r.Get<std::string>("ethernet", "GROUND_UNIT_IP", ""); |
| 85 | std::cout << "DEBUG: GROUND_UNIT_IP: " << ret.GROUND_UNIT_IP << std::endl; |
| 86 | ret.AIR_UNIT_IP = r.Get<std::string>("ethernet", "AIR_UNIT_IP", ""); |
| 87 | std::cout << "DEBUG: AIR_UNIT_IP: " << ret.AIR_UNIT_IP << std::endl; |
| 88 | ret.VIDEO_PORT = r.Get<int>("ethernet", "VIDEO_PORT", 5000); |
| 89 | std::cout << "DEBUG: VIDEO_PORT: " << ret.VIDEO_PORT << std::endl; |
| 90 | ret.TELEMETRY_PORT = r.Get<int>("ethernet", "TELEMETRY_PORT", 5600); |
| 91 | std::cout << "DEBUG: TELEMETRY_PORT: " << ret.TELEMETRY_PORT << std::endl; |
| 92 | |
| 93 | // Parse Ethernet link Microhard configuration |
| 94 | std::cout << "WARN: Parsing Ethernet link Microhard configuration" |
| 95 | << std::endl; |
| 96 | ret.DISABLE_MICROHARD_DETECTION = |
| 97 | r.Get<bool>("microhard", "DISABLE_MICROHARD_DETECTION", false); |
| 98 | std::cout << "DEBUG: DISABLE_MICROHARD_DETECTION: " |