From 72e5920240381cbe775dc38fcdff88cf46b55101 Mon Sep 17 00:00:00 2001
From: german77 <juangerman-13@hotmail.com>
Date: Sun, 17 Oct 2021 00:33:00 -0500
Subject: [PATCH] core/hid: Documment some files

---
 src/core/hid/emulated_console.h    |  69 +++++++++++---
 src/core/hid/emulated_controller.h | 148 +++++++++++++++++++++++++----
 src/core/hid/emulated_devices.cpp  |  16 +++-
 src/core/hid/emulated_devices.h    |  84 ++++++++++++----
 4 files changed, 265 insertions(+), 52 deletions(-)

diff --git a/src/core/hid/emulated_console.h b/src/core/hid/emulated_console.h
index d9e275042c..7d6cf95069 100644
--- a/src/core/hid/emulated_console.h
+++ b/src/core/hid/emulated_console.h
@@ -38,9 +38,10 @@ struct TouchFinger {
     Common::Point<float> position{};
     u32_le id{};
     bool pressed{};
-    Core::HID::TouchAttribute attribute{};
+    TouchAttribute attribute{};
 };
 
+// Contains all motion related data that is used on the services
 struct ConsoleMotion {
     bool is_at_rest{};
     Common::Vec3f accel{};
@@ -57,7 +58,7 @@ struct ConsoleStatus {
     ConsoleMotionValues motion_values{};
     TouchValues touch_values{};
 
-    // Data for Nintendo devices;
+    // Data for HID services
     ConsoleMotion motion_state{};
     TouchFingerState touch_state{};
 };
@@ -75,52 +76,90 @@ struct ConsoleUpdateCallback {
 class EmulatedConsole {
 public:
     /**
-     * TODO: Write description
-     *
-     * @param npad_id_type
+     * Contains all input data related to the console like motion and touch input
      */
-    explicit EmulatedConsole();
+    EmulatedConsole();
     ~EmulatedConsole();
 
     YUZU_NON_COPYABLE(EmulatedConsole);
     YUZU_NON_MOVEABLE(EmulatedConsole);
 
-    void ReloadFromSettings();
-    void ReloadInput();
+    /// Removes all callbacks created from input devices
     void UnloadInput();
 
+    /// Sets the emulated console into configuring mode. Locking all HID service events from being
+    /// moddified
     void EnableConfiguration();
+
+    /// Returns the emulated console to the normal behaivour
     void DisableConfiguration();
+
+    /// Returns true if the emulated console is on configuring mode
     bool IsConfiguring() const;
+
+    /// Reload all input devices
+    void ReloadInput();
+
+    /// Overrides current mapped devices with the stored configuration and reloads all input devices
+    void ReloadFromSettings();
+
+    /// Saves the current mapped configuration
     void SaveCurrentConfig();
+
+    /// Reverts any mapped changes made that weren't saved
     void RestoreConfig();
 
+    // Returns the current mapped motion device
     Common::ParamPackage GetMotionParam() const;
 
+    /**
+     * Updates the current mapped motion device
+     * @param ParamPackage with controller data to be mapped
+     */
     void SetMotionParam(Common::ParamPackage param);
 
+    /// Returns the latest status of motion input from the console with parameters
     ConsoleMotionValues GetMotionValues() const;
+
+    /// Returns the latest status of touch input from the console with parameters
     TouchValues GetTouchValues() const;
 
+    /// Returns the latest status of motion input from the console
     ConsoleMotion GetMotion() const;
+
+    /// Returns the latest status of touch input from the console
     TouchFingerState GetTouch() const;
 
+    /**
+     * Adds a callback to the list of events
+     * @param ConsoleUpdateCallback that will be triggered
+     * @return an unique key corresponding to the callback index in the list
+     */
     int SetCallback(ConsoleUpdateCallback update_callback);
+
+    /**
+     * Removes a callback from the list stopping any future events to this object
+     * @param Key corresponding to the callback index in the list
+     */
     void DeleteCallback(int key);
 
 private:
     /**
-     * Sets the status of a button. Applies toggle properties to the output.
-     *
-     * @param A CallbackStatus and a button index number
+     * Updates the motion status of the console
+     * @param A CallbackStatus containing gyro and accelerometer data
      */
     void SetMotion(Input::CallbackStatus callback);
+
+    /**
+     * Updates the touch status of the console
+     * @param callback: A CallbackStatus containing the touch position
+     * @param index: Finger ID to be updated
+     */
     void SetTouch(Input::CallbackStatus callback, std::size_t index);
 
     /**
-     * Triggers a callback that something has changed
-     *
-     * @param Input type of the trigger
+     * Triggers a callback that something has changed on the console status
+     * @param Input type of the event to trigger
      */
     void TriggerOnChange(ConsoleTriggerType type);
 
@@ -136,6 +175,8 @@ private:
     mutable std::mutex mutex;
     std::unordered_map<int, ConsoleUpdateCallback> callback_list;
     int last_callback_key = 0;
+
+    // Stores the current status of all console input
     ConsoleStatus console;
 };
 
diff --git a/src/core/hid/emulated_controller.h b/src/core/hid/emulated_controller.h
index 322d2cab04..096fe17052 100644
--- a/src/core/hid/emulated_controller.h
+++ b/src/core/hid/emulated_controller.h
@@ -87,7 +87,7 @@ struct ControllerStatus {
     BatteryValues battery_values{};
     VibrationValues vibration_values{};
 
-    // Data for Nintendo devices
+    // Data for HID serices
     NpadButtonState npad_button_state{};
     DebugPadButton debug_pad_button_state{};
     AnalogSticks analog_stick_state{};
@@ -118,9 +118,8 @@ struct ControllerUpdateCallback {
 class EmulatedController {
 public:
     /**
-     * TODO: Write description
-     *
-     * @param npad_id_type
+     * Contains all input data related to this controller. Like buttons, joysticks, motion.
+     * @param Npad id type for this specific controller
      */
     explicit EmulatedController(NpadIdType npad_id_type_);
     ~EmulatedController();
@@ -128,86 +127,197 @@ public:
     YUZU_NON_COPYABLE(EmulatedController);
     YUZU_NON_MOVEABLE(EmulatedController);
 
+    /// Converts the controller type from settings to npad type
     static NpadType MapSettingsTypeToNPad(Settings::ControllerType type);
+
+    /// Converts npad type to the equivalent of controller type from settings
     static Settings::ControllerType MapNPadToSettingsType(NpadType type);
 
-    /// Gets the NpadIdType for this controller.
+    /// Gets the NpadIdType for this controller
     NpadIdType GetNpadIdType() const;
 
-    /// Sets the NpadType for this controller.
+    /// Sets the NpadType for this controller
     void SetNpadType(NpadType npad_type_);
 
-    /// Gets the NpadType for this controller.
+    /// Gets the NpadType for this controller
     NpadType GetNpadType() const;
 
-    /// Gets the NpadType for this controller.
-    LedPattern GetLedPattern() const;
-
+    /// Sets the connected status to true
     void Connect();
+
+    /// Sets the connected status to false
     void Disconnect();
 
+    /// Returns true if the controller has the connected status
     bool IsConnected() const;
+
+    /// Returns true if vibration is enabled
     bool IsVibrationEnabled() const;
 
-    void ReloadFromSettings();
-    void ReloadInput();
+    /// Removes all callbacks created from input devices
     void UnloadInput();
 
+    /// Sets the emulated console into configuring mode. Locking all HID service events from being
+    /// moddified
     void EnableConfiguration();
+
+    /// Returns the emulated console to the normal behaivour
     void DisableConfiguration();
+
+    /// Returns true if the emulated device is on configuring mode
     bool IsConfiguring() const;
+
+    /// Reload all input devices
+    void ReloadInput();
+
+    /// Overrides current mapped devices with the stored configuration and reloads all input devices
+    void ReloadFromSettings();
+
+    /// Saves the current mapped configuration
     void SaveCurrentConfig();
+
+    /// Reverts any mapped changes made that weren't saved
     void RestoreConfig();
 
+    /// Returns a vector of mapped devices from the mapped button and stick parameters
     std::vector<Common::ParamPackage> GetMappedDevices() const;
 
+    // Returns the current mapped button device
     Common::ParamPackage GetButtonParam(std::size_t index) const;
+
+    // Returns the current mapped stick device
     Common::ParamPackage GetStickParam(std::size_t index) const;
+
+    // Returns the current mapped motion device
     Common::ParamPackage GetMotionParam(std::size_t index) const;
 
+    /**
+     * Updates the current mapped button device
+     * @param ParamPackage with controller data to be mapped
+     */
     void SetButtonParam(std::size_t index, Common::ParamPackage param);
+
+    /**
+     * Updates the current mapped stick device
+     * @param ParamPackage with controller data to be mapped
+     */
     void SetStickParam(std::size_t index, Common::ParamPackage param);
+
+    /**
+     * Updates the current mapped motion device
+     * @param ParamPackage with controller data to be mapped
+     */
     void SetMotionParam(std::size_t index, Common::ParamPackage param);
 
+    /// Returns the latest button status from the controller with parameters
     ButtonValues GetButtonsValues() const;
+
+    /// Returns the latest analog stick status from the controller with parameters
     SticksValues GetSticksValues() const;
+
+    /// Returns the latest trigger status from the controller with parameters
     TriggerValues GetTriggersValues() const;
+
+    /// Returns the latest motion status from the controller with parameters
     ControllerMotionValues GetMotionValues() const;
+
+    /// Returns the latest color status from the controller with parameters
     ColorValues GetColorsValues() const;
+
+    /// Returns the latest battery status from the controller with parameters
     BatteryValues GetBatteryValues() const;
 
+    /// Returns the latest status of button input for the npad service
     NpadButtonState GetNpadButtons() const;
+
+    /// Returns the latest status of button input for the debug pad service
     DebugPadButton GetDebugPadButtons() const;
+
+    /// Returns the latest status of stick input from the mouse
     AnalogSticks GetSticks() const;
+
+    /// Returns the latest status of trigger input from the mouse
     NpadGcTriggerState GetTriggers() const;
+
+    /// Returns the latest status of motion input from the mouse
     MotionState GetMotions() const;
+
+    /// Returns the latest color value from the controller
     ControllerColors GetColors() const;
+
+    /// Returns the latest battery status from the controller
     BatteryLevelState GetBattery() const;
 
+    /*
+     * Sends a specific vibration to the output device
+     * @return returns true if vibration had no errors
+     */
     bool SetVibration(std::size_t device_index, VibrationValue vibration);
+
+    /*
+     * Sends a small vibration to the output device
+     * @return returns true if SetVibration was successfull
+     */
     bool TestVibration(std::size_t device_index);
 
+    /// Returns the led pattern corresponding to this emulated controller
+    LedPattern GetLedPattern() const;
+
+    /// Asks the output device to change the player led pattern
     void SetLedPattern();
 
+    /**
+     * Adds a callback to the list of events
+     * @param ConsoleUpdateCallback that will be triggered
+     * @return an unique key corresponding to the callback index in the list
+     */
     int SetCallback(ControllerUpdateCallback update_callback);
+
+    /**
+     * Removes a callback from the list stopping any future events to this object
+     * @param Key corresponding to the callback index in the list
+     */
     void DeleteCallback(int key);
 
 private:
     /**
-     * Sets the status of a button. Applies toggle properties to the output.
-     *
-     * @param A CallbackStatus and a button index number
+     * Updates the button status of the controller
+     * @param callback: A CallbackStatus containing the button status
+     * @param index: Button ID of the to be updated
      */
     void SetButton(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the analog stick status of the controller
+     * @param callback: A CallbackStatus containing the analog stick status
+     * @param index: stick ID of the to be updated
+     */
     void SetStick(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the trigger status of the controller
+     * @param callback: A CallbackStatus containing the trigger status
+     * @param index: trigger ID of the to be updated
+     */
     void SetTrigger(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the motion status of the controller
+     * @param callback: A CallbackStatus containing gyro and accelerometer data
+     * @param index: motion ID of the to be updated
+     */
     void SetMotion(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the battery status of the controller
+     * @param callback: A CallbackStatus containing the battery status
+     * @param index: Button ID of the to be updated
+     */
     void SetBattery(Input::CallbackStatus callback, std::size_t index);
 
     /**
-     * Triggers a callback that something has changed
-     *
-     * @param Input type of the trigger
+     * Triggers a callback that something has changed on the controller status
+     * @param Input type of the event to trigger
      */
     void TriggerOnChange(ControllerTriggerType type);
 
@@ -235,6 +345,8 @@ private:
     mutable std::mutex mutex;
     std::unordered_map<int, ControllerUpdateCallback> callback_list;
     int last_callback_key = 0;
+
+    // Stores the current status of all controller input
     ControllerStatus controller;
 };
 
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp
index 3caf90714a..54a753d8a5 100644
--- a/src/core/hid/emulated_devices.cpp
+++ b/src/core/hid/emulated_devices.cpp
@@ -114,7 +114,7 @@ Common::ParamPackage EmulatedDevices::GetMouseButtonParam(std::size_t index) con
     return mouse_button_params[index];
 }
 
-void EmulatedDevices::SetButtonParam(std::size_t index, Common::ParamPackage param) {
+void EmulatedDevices::SetMouseButtonParam(std::size_t index, Common::ParamPackage param) {
     if (index >= mouse_button_params.size()) {
         return;
     }
@@ -132,7 +132,7 @@ void EmulatedDevices::SetKeyboardButton(Input::CallbackStatus callback, std::siz
     auto& current_status = device_status.keyboard_values[index];
     current_status.toggle = new_status.toggle;
 
-    // Update button status with current
+    // Update button status with current status
     if (!current_status.toggle) {
         current_status.locked = false;
         if (current_status.value != new_status.value) {
@@ -147,7 +147,7 @@ void EmulatedDevices::SetKeyboardButton(Input::CallbackStatus callback, std::siz
             value_changed = true;
         }
 
-        // Unlock button ready for next press
+        // Unlock button, ready for next press
         if (!new_status.value && current_status.locked) {
             current_status.locked = false;
         }
@@ -168,7 +168,7 @@ void EmulatedDevices::SetKeyboardButton(Input::CallbackStatus callback, std::siz
     //    interface_status.keyboard_state.a.Assign(current_status.value);
     //    break;
     //    ....
-    //}
+    // }
 
     TriggerOnChange(DeviceTriggerType::Keyboard);
 }
@@ -303,6 +303,14 @@ void EmulatedDevices::SetMouseButton(Input::CallbackStatus callback, std::size_t
     TriggerOnChange(DeviceTriggerType::Mouse);
 }
 
+KeyboardValues EmulatedDevices::GetKeyboardValues() const {
+    return device_status.keyboard_values;
+}
+
+KeyboardModifierValues EmulatedDevices::GetKeyboardModdifierValues() const {
+    return device_status.keyboard_moddifier_values;
+}
+
 MouseButtonValues EmulatedDevices::GetMouseButtonsValues() const {
     return device_status.mouse_button_values;
 }
diff --git a/src/core/hid/emulated_devices.h b/src/core/hid/emulated_devices.h
index 6f728eff55..c6c19fae4e 100644
--- a/src/core/hid/emulated_devices.h
+++ b/src/core/hid/emulated_devices.h
@@ -45,7 +45,7 @@ struct DeviceStatus {
     KeyboardModifierValues keyboard_moddifier_values{};
     MouseButtonValues mouse_button_values{};
 
-    // Data for Nintendo devices
+    // Data for HID serices
     KeyboardKey keyboard_state{};
     KeyboardModifier keyboard_moddifier_state{};
     MouseButton mouse_button_state{};
@@ -65,58 +65,108 @@ struct InterfaceUpdateCallback {
 class EmulatedDevices {
 public:
     /**
-     * TODO: Write description
-     *
-     * @param npad_id_type
+     * Contains all input data related to external devices that aren't necesarily a controller
+     * like keyboard and mouse
      */
-    explicit EmulatedDevices();
+    EmulatedDevices();
     ~EmulatedDevices();
 
     YUZU_NON_COPYABLE(EmulatedDevices);
     YUZU_NON_MOVEABLE(EmulatedDevices);
 
-    void ReloadFromSettings();
-    void ReloadInput();
+    /// Removes all callbacks created from input devices
     void UnloadInput();
 
+    /// Sets the emulated console into configuring mode. Locking all HID service events from being
+    /// moddified
     void EnableConfiguration();
+
+    /// Returns the emulated console to the normal behaivour
     void DisableConfiguration();
+
+    /// Returns true if the emulated device is on configuring mode
     bool IsConfiguring() const;
+
+    /// Reload all input devices
+    void ReloadInput();
+
+    /// Overrides current mapped devices with the stored configuration and reloads all input devices
+    void ReloadFromSettings();
+
+    /// Saves the current mapped configuration
     void SaveCurrentConfig();
-    void RestoreConfig();
 
-    std::vector<Common::ParamPackage> GetMappedDevices() const;
+    /// Reverts any mapped changes made that weren't saved
+    void RestoreConfig();
 
+    /// Returns the current mapped motion device
     Common::ParamPackage GetMouseButtonParam(std::size_t index) const;
 
-    void SetButtonParam(std::size_t index, Common::ParamPackage param);
+    /**
+     * Updates the current mapped mouse button device
+     * @param ParamPackage with controller data to be mapped
+     */
+    void SetMouseButtonParam(std::size_t index, Common::ParamPackage param);
 
+    /// Returns the latest status of button input from the keyboard with parameters
     KeyboardValues GetKeyboardValues() const;
+
+    /// Returns the latest status of button input from the keyboard modifiers with parameters
     KeyboardModifierValues GetKeyboardModdifierValues() const;
+
+    /// Returns the latest status of button input from the mouse with parameters
     MouseButtonValues GetMouseButtonsValues() const;
 
+    /// Returns the latest status of button input from the keyboard
     KeyboardKey GetKeyboard() const;
+
+    /// Returns the latest status of button input from the keyboard modifiers
     KeyboardModifier GetKeyboardModifier() const;
+
+    /// Returns the latest status of button input from the mouse
     MouseButton GetMouseButtons() const;
+
+    /// Returns the latest mouse coordinates
     MousePosition GetMousePosition() const;
 
+    /**
+     * Adds a callback to the list of events
+     * @param ConsoleUpdateCallback that will be triggered
+     * @return an unique key corresponding to the callback index in the list
+     */
     int SetCallback(InterfaceUpdateCallback update_callback);
+
+    /**
+     * Removes a callback from the list stopping any future events to this object
+     * @param Key corresponding to the callback index in the list
+     */
     void DeleteCallback(int key);
 
 private:
     /**
-     * Sets the status of a button. Applies toggle properties to the output.
-     *
-     * @param A CallbackStatus and a button index number
+     * Updates the touch status of the console
+     * @param callback: A CallbackStatus containing the key status
+     * @param index: key ID to be updated
      */
     void SetKeyboardButton(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the touch status of the console
+     * @param callback: A CallbackStatus containing the modifier key status
+     * @param index: modifier key ID to be updated
+     */
     void SetKeyboardModifier(Input::CallbackStatus callback, std::size_t index);
+
+    /**
+     * Updates the touch status of the console
+     * @param callback: A CallbackStatus containing the button status
+     * @param index: Button ID of the to be updated
+     */
     void SetMouseButton(Input::CallbackStatus callback, std::size_t index);
 
     /**
-     * Triggers a callback that something has changed
-     *
-     * @param Input type of the trigger
+     * Triggers a callback that something has changed on the device status
+     * @param Input type of the event to trigger
      */
     void TriggerOnChange(DeviceTriggerType type);
 
@@ -131,6 +181,8 @@ private:
     mutable std::mutex mutex;
     std::unordered_map<int, InterfaceUpdateCallback> callback_list;
     int last_callback_key = 0;
+
+    // Stores the current status of all external device input
     DeviceStatus device_status;
 };
 
-- 
GitLab