diff --git a/components/CommandManager/CommandManager/CommandManager.cpp b/components/CommandManager/CommandManager/CommandManager.cpp index 7255b1d..9787d3d 100644 --- a/components/CommandManager/CommandManager/CommandManager.cpp +++ b/components/CommandManager/CommandManager/CommandManager.cpp @@ -6,11 +6,11 @@ std::unordered_map commandTypeMap = { {"pause", CommandType::PAUSE}, {"set_wifi", CommandType::SET_WIFI}, {"update_wifi", CommandType::UPDATE_WIFI}, - {"set_streaming_mode", CommandType::SET_STREAMING_MODE}, {"update_ota_credentials", CommandType::UPDATE_OTA_CREDENTIALS}, {"delete_network", CommandType::DELETE_NETWORK}, {"update_ap_wifi", CommandType::UPDATE_AP_WIFI}, {"set_mdns", CommandType::SET_MDNS}, + {"get_mdns_name", CommandType::GET_MDNS_NAME}, {"update_camera", CommandType::UPDATE_CAMERA}, {"restart_camera", CommandType::RESTART_CAMERA}, {"save_config", CommandType::SAVE_CONFIG}, @@ -24,8 +24,8 @@ std::unordered_map commandTypeMap = { {"switch_mode", CommandType::SWITCH_MODE}, {"get_device_mode", CommandType::GET_DEVICE_MODE}, {"set_led_duty_cycle", CommandType::SET_LED_DUTY_CYCLE}, - {"get_led_duty_cycle", CommandType::GET_LED_DUTY_CYCLE}, - {"get_serial", CommandType::GET_SERIAL}, + {"get_led_duty_cycle", CommandType::GET_LED_DUTY_CYCLE}, + {"get_serial", CommandType::GET_SERIAL}, }; std::function CommandManager::createCommand(const CommandType type, std::string_view json) const @@ -37,9 +37,8 @@ std::function CommandManager::createCommand(const CommandType t case CommandType::PAUSE: return [json] { return PauseCommand(json); }; - case CommandType::SET_STREAMING_MODE: - return [this, json] - { return setDeviceModeCommand(this->registry, json); }; + return [json] + { return PauseCommand(json); }; case CommandType::UPDATE_OTA_CREDENTIALS: return [this, json] { return updateOTACredentialsCommand(this->registry, json); }; @@ -58,6 +57,9 @@ std::function CommandManager::createCommand(const CommandType t case CommandType::SET_MDNS: return [this, json] { return setMDNSCommand(this->registry, json); }; + case CommandType::GET_MDNS_NAME: + return [this] + { return getMDNSNameCommand(this->registry); }; case CommandType::UPDATE_CAMERA: return [this, json] { return updateCameraCommand(this->registry, json); }; diff --git a/components/CommandManager/CommandManager/CommandManager.hpp b/components/CommandManager/CommandManager/CommandManager.hpp index 53eeb7c..a4fde07 100644 --- a/components/CommandManager/CommandManager/CommandManager.hpp +++ b/components/CommandManager/CommandManager/CommandManager.hpp @@ -27,11 +27,11 @@ enum class CommandType PAUSE, SET_WIFI, UPDATE_OTA_CREDENTIALS, - SET_STREAMING_MODE, UPDATE_WIFI, DELETE_NETWORK, UPDATE_AP_WIFI, SET_MDNS, + GET_MDNS_NAME, UPDATE_CAMERA, RESTART_CAMERA, SAVE_CONFIG, diff --git a/components/CommandManager/CommandManager/commands/device_commands.hpp b/components/CommandManager/CommandManager/commands/device_commands.hpp index 3d3f36f..06e7751 100644 --- a/components/CommandManager/CommandManager/commands/device_commands.hpp +++ b/components/CommandManager/CommandManager/commands/device_commands.hpp @@ -9,8 +9,6 @@ #include #include -CommandResult setDeviceModeCommand(std::shared_ptr registry, std::string_view jsonPayload); - CommandResult updateOTACredentialsCommand(std::shared_ptr registry, std::string_view jsonPayload); CommandResult updateLEDDutyCycleCommand(std::shared_ptr registry, std::string_view jsonPayload); diff --git a/components/CommandManager/CommandManager/commands/mdns_commands.cpp b/components/CommandManager/CommandManager/commands/mdns_commands.cpp index c098506..923c5bd 100644 --- a/components/CommandManager/CommandManager/commands/mdns_commands.cpp +++ b/components/CommandManager/CommandManager/commands/mdns_commands.cpp @@ -31,3 +31,12 @@ CommandResult setMDNSCommand(std::shared_ptr registry, std:: return CommandResult::getSuccessResult("Config updated"); } + +CommandResult getMDNSNameCommand(std::shared_ptr registry) +{ + const auto projectConfig = registry->resolve(DependencyType::project_config); + auto mdnsConfig = projectConfig->getMDNSConfig(); + + auto result = std::format("{{ \"hostname\": \"{}\" }}", mdnsConfig.hostname); + return CommandResult::getSuccessResult(result); +} \ No newline at end of file diff --git a/components/CommandManager/CommandManager/commands/mdns_commands.hpp b/components/CommandManager/CommandManager/commands/mdns_commands.hpp index b40e641..64b2cf9 100644 --- a/components/CommandManager/CommandManager/commands/mdns_commands.hpp +++ b/components/CommandManager/CommandManager/commands/mdns_commands.hpp @@ -8,4 +8,5 @@ #include "DependencyRegistry.hpp" std::optional parseMDNSCommandPayload(std::string_view jsonPayload); -CommandResult setMDNSCommand(std::shared_ptr registry, std::string_view jsonPayload); \ No newline at end of file +CommandResult setMDNSCommand(std::shared_ptr registry, std::string_view jsonPayload); +CommandResult getMDNSNameCommand(std::shared_ptr registry); \ No newline at end of file diff --git a/tools/openiris_setup.py b/tools/openiris_setup.py index 9dc6ead..30b6ff8 100644 --- a/tools/openiris_setup.py +++ b/tools/openiris_setup.py @@ -410,14 +410,31 @@ class OpenIrisDevice: print(f"āŒ Failed to parse mode response: {e}") return "unknown" + def get_mdns_name(self) -> str: + """Get the current MDNS name""" + response = self.send_command("get_mdns_name") + if "error" in response: + print(f"āŒ Failed to get device name: {response['error']}") + return "unknown" + + try: + results = response.get("results", []) + if results: + result_data = json.loads(results[0]) + name_data = json.loads(result_data["result"]) + return name_data.get("hostname", "unknown") + except Exception as e: + print(f"āŒ Failed to parse name response: {e}") + return "unknown" + def set_led_duty_cycle(self, duty_cycle): """Sets the PWN duty cycle of the LED""" print(f"🌟 Setting LED duty cycle to {duty_cycle}%...") response = self.send_command("set_led_duty_cycle", {"dutyCycle": duty_cycle}) - if "error" in response: + if "error" in response: print(f"āŒ Failed to set LED duty cycle: {response['error']}") return False - + print("āœ… LED duty cycle set successfully") return True @@ -689,10 +706,13 @@ def configure_wifi(device: OpenIrisDevice, args = None): def configure_mdns(device: OpenIrisDevice, args = None): + current_name = device.get_mdns_name() + print(f"\nšŸ“ Current device name: {current_name} \n") print("šŸ’” Please enter your preferred device name, your board will be accessible under http://.local/") print("šŸ’” Please avoid spaces and special characters") print(" To back out, enter `back`") print("\n Note, this will also modify the name of the UVC device") + while True: name_choice = input("\nDevice name: ").strip() if any(space in name_choice for space in string.whitespace): @@ -910,7 +930,7 @@ def set_led_duty_cycle(device: OpenIrisDevice, args=None): input_data = input("Enter LED external PWM duty cycle (0-100) or `back` to exit: \n") if input_data.lower() == "back": break - + try: duty_cycle = int(input_data) except ValueError: