diff options
Diffstat (limited to 'src/input_common/helpers/joycon_protocol/common_protocol.h')
| -rw-r--r-- | src/input_common/helpers/joycon_protocol/common_protocol.h | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/src/input_common/helpers/joycon_protocol/common_protocol.h b/src/input_common/helpers/joycon_protocol/common_protocol.h index 411ec018a..dd667ca2b 100644 --- a/src/input_common/helpers/joycon_protocol/common_protocol.h +++ b/src/input_common/helpers/joycon_protocol/common_protocol.h | |||
| @@ -38,30 +38,30 @@ public: | |||
| 38 | * Sends a request to obtain the joycon type from device | 38 | * Sends a request to obtain the joycon type from device |
| 39 | * @returns controller type of the joycon | 39 | * @returns controller type of the joycon |
| 40 | */ | 40 | */ |
| 41 | DriverResult GetDeviceType(ControllerType& controller_type); | 41 | Common::Input::DriverResult GetDeviceType(ControllerType& controller_type); |
| 42 | 42 | ||
| 43 | /** | 43 | /** |
| 44 | * Verifies and sets the joycon_handle if device is valid | 44 | * Verifies and sets the joycon_handle if device is valid |
| 45 | * @param device info from the driver | 45 | * @param device info from the driver |
| 46 | * @returns success if the device is valid | 46 | * @returns success if the device is valid |
| 47 | */ | 47 | */ |
| 48 | DriverResult CheckDeviceAccess(SDL_hid_device_info* device); | 48 | Common::Input::DriverResult CheckDeviceAccess(SDL_hid_device_info* device); |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| 51 | * Sends a request to set the polling mode of the joycon | 51 | * Sends a request to set the polling mode of the joycon |
| 52 | * @param report_mode polling mode to be set | 52 | * @param report_mode polling mode to be set |
| 53 | */ | 53 | */ |
| 54 | DriverResult SetReportMode(Joycon::ReportMode report_mode); | 54 | Common::Input::DriverResult SetReportMode(Joycon::ReportMode report_mode); |
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * Sends data to the joycon device | 57 | * Sends data to the joycon device |
| 58 | * @param buffer data to be send | 58 | * @param buffer data to be send |
| 59 | */ | 59 | */ |
| 60 | DriverResult SendRawData(std::span<const u8> buffer); | 60 | Common::Input::DriverResult SendRawData(std::span<const u8> buffer); |
| 61 | 61 | ||
| 62 | template <typename Output> | 62 | template <typename Output> |
| 63 | requires std::is_trivially_copyable_v<Output> | 63 | requires std::is_trivially_copyable_v<Output> |
| 64 | DriverResult SendData(const Output& output) { | 64 | Common::Input::DriverResult SendData(const Output& output) { |
| 65 | std::array<u8, sizeof(Output)> buffer; | 65 | std::array<u8, sizeof(Output)> buffer; |
| 66 | std::memcpy(buffer.data(), &output, sizeof(Output)); | 66 | std::memcpy(buffer.data(), &output, sizeof(Output)); |
| 67 | return SendRawData(buffer); | 67 | return SendRawData(buffer); |
| @@ -72,7 +72,8 @@ public: | |||
| 72 | * @param sub_command type of data to be returned | 72 | * @param sub_command type of data to be returned |
| 73 | * @returns a buffer containing the response | 73 | * @returns a buffer containing the response |
| 74 | */ | 74 | */ |
| 75 | DriverResult GetSubCommandResponse(SubCommand sub_command, SubCommandResponse& output); | 75 | Common::Input::DriverResult GetSubCommandResponse(SubCommand sub_command, |
| 76 | SubCommandResponse& output); | ||
| 76 | 77 | ||
| 77 | /** | 78 | /** |
| 78 | * Sends a sub command to the device and waits for it's reply | 79 | * Sends a sub command to the device and waits for it's reply |
| @@ -80,35 +81,35 @@ public: | |||
| 80 | * @param buffer data to be send | 81 | * @param buffer data to be send |
| 81 | * @returns output buffer containing the response | 82 | * @returns output buffer containing the response |
| 82 | */ | 83 | */ |
| 83 | DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer, | 84 | Common::Input::DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer, |
| 84 | SubCommandResponse& output); | 85 | SubCommandResponse& output); |
| 85 | 86 | ||
| 86 | /** | 87 | /** |
| 87 | * Sends a sub command to the device and waits for it's reply and ignores the output | 88 | * Sends a sub command to the device and waits for it's reply and ignores the output |
| 88 | * @param sc sub command to be send | 89 | * @param sc sub command to be send |
| 89 | * @param buffer data to be send | 90 | * @param buffer data to be send |
| 90 | */ | 91 | */ |
| 91 | DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer); | 92 | Common::Input::DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer); |
| 92 | 93 | ||
| 93 | /** | 94 | /** |
| 94 | * Sends a mcu command to the device | 95 | * Sends a mcu command to the device |
| 95 | * @param sc sub command to be send | 96 | * @param sc sub command to be send |
| 96 | * @param buffer data to be send | 97 | * @param buffer data to be send |
| 97 | */ | 98 | */ |
| 98 | DriverResult SendMCUCommand(SubCommand sc, std::span<const u8> buffer); | 99 | Common::Input::DriverResult SendMCUCommand(SubCommand sc, std::span<const u8> buffer); |
| 99 | 100 | ||
| 100 | /** | 101 | /** |
| 101 | * Sends vibration data to the joycon | 102 | * Sends vibration data to the joycon |
| 102 | * @param buffer data to be send | 103 | * @param buffer data to be send |
| 103 | */ | 104 | */ |
| 104 | DriverResult SendVibrationReport(std::span<const u8> buffer); | 105 | Common::Input::DriverResult SendVibrationReport(std::span<const u8> buffer); |
| 105 | 106 | ||
| 106 | /** | 107 | /** |
| 107 | * Reads the SPI memory stored on the joycon | 108 | * Reads the SPI memory stored on the joycon |
| 108 | * @param Initial address location | 109 | * @param Initial address location |
| 109 | * @returns output buffer containing the response | 110 | * @returns output buffer containing the response |
| 110 | */ | 111 | */ |
| 111 | DriverResult ReadRawSPI(SpiAddress addr, std::span<u8> output); | 112 | Common::Input::DriverResult ReadRawSPI(SpiAddress addr, std::span<u8> output); |
| 112 | 113 | ||
| 113 | /** | 114 | /** |
| 114 | * Reads the SPI memory stored on the joycon | 115 | * Reads the SPI memory stored on the joycon |
| @@ -117,37 +118,38 @@ public: | |||
| 117 | */ | 118 | */ |
| 118 | template <typename Output> | 119 | template <typename Output> |
| 119 | requires std::is_trivially_copyable_v<Output> | 120 | requires std::is_trivially_copyable_v<Output> |
| 120 | DriverResult ReadSPI(SpiAddress addr, Output& output) { | 121 | Common::Input::DriverResult ReadSPI(SpiAddress addr, Output& output) { |
| 121 | std::array<u8, sizeof(Output)> buffer; | 122 | std::array<u8, sizeof(Output)> buffer; |
| 122 | output = {}; | 123 | output = {}; |
| 123 | 124 | ||
| 124 | const auto result = ReadRawSPI(addr, buffer); | 125 | const auto result = ReadRawSPI(addr, buffer); |
| 125 | if (result != DriverResult::Success) { | 126 | if (result != Common::Input::DriverResult::Success) { |
| 126 | return result; | 127 | return result; |
| 127 | } | 128 | } |
| 128 | 129 | ||
| 129 | std::memcpy(&output, buffer.data(), sizeof(Output)); | 130 | std::memcpy(&output, buffer.data(), sizeof(Output)); |
| 130 | return DriverResult::Success; | 131 | return Common::Input::DriverResult::Success; |
| 131 | } | 132 | } |
| 132 | 133 | ||
| 133 | /** | 134 | /** |
| 134 | * Enables MCU chip on the joycon | 135 | * Enables MCU chip on the joycon |
| 135 | * @param enable if true the chip will be enabled | 136 | * @param enable if true the chip will be enabled |
| 136 | */ | 137 | */ |
| 137 | DriverResult EnableMCU(bool enable); | 138 | Common::Input::DriverResult EnableMCU(bool enable); |
| 138 | 139 | ||
| 139 | /** | 140 | /** |
| 140 | * Configures the MCU to the corresponding mode | 141 | * Configures the MCU to the corresponding mode |
| 141 | * @param MCUConfig configuration | 142 | * @param MCUConfig configuration |
| 142 | */ | 143 | */ |
| 143 | DriverResult ConfigureMCU(const MCUConfig& config); | 144 | Common::Input::DriverResult ConfigureMCU(const MCUConfig& config); |
| 144 | 145 | ||
| 145 | /** | 146 | /** |
| 146 | * Waits until there's MCU data available. On timeout returns error | 147 | * Waits until there's MCU data available. On timeout returns error |
| 147 | * @param report mode of the expected reply | 148 | * @param report mode of the expected reply |
| 148 | * @returns a buffer containing the response | 149 | * @returns a buffer containing the response |
| 149 | */ | 150 | */ |
| 150 | DriverResult GetMCUDataResponse(ReportMode report_mode_, MCUCommandResponse& output); | 151 | Common::Input::DriverResult GetMCUDataResponse(ReportMode report_mode_, |
| 152 | MCUCommandResponse& output); | ||
| 151 | 153 | ||
| 152 | /** | 154 | /** |
| 153 | * Sends data to the MCU chip and waits for it's reply | 155 | * Sends data to the MCU chip and waits for it's reply |
| @@ -156,15 +158,15 @@ public: | |||
| 156 | * @param buffer data to be send | 158 | * @param buffer data to be send |
| 157 | * @returns output buffer containing the response | 159 | * @returns output buffer containing the response |
| 158 | */ | 160 | */ |
| 159 | DriverResult SendMCUData(ReportMode report_mode, MCUSubCommand sc, std::span<const u8> buffer, | 161 | Common::Input::DriverResult SendMCUData(ReportMode report_mode, MCUSubCommand sc, |
| 160 | MCUCommandResponse& output); | 162 | std::span<const u8> buffer, MCUCommandResponse& output); |
| 161 | 163 | ||
| 162 | /** | 164 | /** |
| 163 | * Wait's until the MCU chip is on the specified mode | 165 | * Wait's until the MCU chip is on the specified mode |
| 164 | * @param report mode of the expected reply | 166 | * @param report mode of the expected reply |
| 165 | * @param MCUMode configuration | 167 | * @param MCUMode configuration |
| 166 | */ | 168 | */ |
| 167 | DriverResult WaitSetMCUMode(ReportMode report_mode, MCUMode mode); | 169 | Common::Input::DriverResult WaitSetMCUMode(ReportMode report_mode, MCUMode mode); |
| 168 | 170 | ||
| 169 | /** | 171 | /** |
| 170 | * Calculates the checksum from the MCU data | 172 | * Calculates the checksum from the MCU data |