aboutsummaryrefslogtreecommitdiff
path: root/src/input_common/helpers/joycon_protocol/common_protocol.h
diff options
context:
space:
mode:
authorNarr the Reg <juangerman-13@hotmail.com>2023-01-27 22:30:44 -0600
committergerman77 <juangerman-13@hotmail.com>2023-01-29 20:12:58 -0600
commitc318a4c80b4b6eef9f8020f452573ef5c80f6716 (patch)
treeea031039eb63ef385ceeb0a5c0694baa9e8da8be /src/input_common/helpers/joycon_protocol/common_protocol.h
parent11fea5deea6dd72badbed521ac5639a48d591dc6 (diff)
input_common: joycon: Remove Magic numbers from common protocol
Diffstat (limited to 'src/input_common/helpers/joycon_protocol/common_protocol.h')
-rw-r--r--src/input_common/helpers/joycon_protocol/common_protocol.h31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/input_common/helpers/joycon_protocol/common_protocol.h b/src/input_common/helpers/joycon_protocol/common_protocol.h
index 188f6ecfa6..f44f73ba4e 100644
--- a/src/input_common/helpers/joycon_protocol/common_protocol.h
+++ b/src/input_common/helpers/joycon_protocol/common_protocol.h
@@ -57,22 +57,31 @@ public:
* Sends data to the joycon device
* @param buffer data to be send
*/
- DriverResult SendData(std::span<const u8> buffer);
+ DriverResult SendRawData(std::span<const u8> buffer);
+
+ template <typename Output>
+ requires std::is_trivially_copyable_v<Output>
+ DriverResult SendData(const Output& output) {
+ std::array<u8, sizeof(Output)> buffer;
+ std::memcpy(buffer.data(), &output, sizeof(Output));
+ return SendRawData(buffer);
+ }
/**
* Waits for incoming data of the joycon device that matchs the subcommand
* @param sub_command type of data to be returned
- * @returns a buffer containing the responce
+ * @returns a buffer containing the response
*/
- DriverResult GetSubCommandResponse(SubCommand sub_command, std::vector<u8>& output);
+ DriverResult GetSubCommandResponse(SubCommand sub_command, SubCommandResponse& output);
/**
* Sends a sub command to the device and waits for it's reply
* @param sc sub command to be send
* @param buffer data to be send
- * @returns output buffer containing the responce
+ * @returns output buffer containing the response
*/
- DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer, std::vector<u8>& output);
+ DriverResult SendSubCommand(SubCommand sc, std::span<const u8> buffer,
+ SubCommandResponse& output);
/**
* Sends a sub command to the device and waits for it's reply and ignores the output
@@ -97,14 +106,14 @@ public:
/**
* Reads the SPI memory stored on the joycon
* @param Initial address location
- * @returns output buffer containing the responce
+ * @returns output buffer containing the response
*/
DriverResult ReadRawSPI(SpiAddress addr, std::span<u8> output);
/**
* Reads the SPI memory stored on the joycon
* @param Initial address location
- * @returns output object containing the responce
+ * @returns output object containing the response
*/
template <typename Output>
requires std::is_trivially_copyable_v<Output>
@@ -136,19 +145,19 @@ public:
/**
* Waits until there's MCU data available. On timeout returns error
* @param report mode of the expected reply
- * @returns a buffer containing the responce
+ * @returns a buffer containing the response
*/
- DriverResult GetMCUDataResponse(ReportMode report_mode_, std::vector<u8>& output);
+ DriverResult GetMCUDataResponse(ReportMode report_mode_, MCUCommandResponse& output);
/**
* Sends data to the MCU chip and waits for it's reply
* @param report mode of the expected reply
* @param sub command to be send
* @param buffer data to be send
- * @returns output buffer containing the responce
+ * @returns output buffer containing the response
*/
DriverResult SendMCUData(ReportMode report_mode, SubCommand sc, std::span<const u8> buffer,
- std::vector<u8>& output);
+ MCUCommandResponse& output);
/**
* Wait's until the MCU chip is on the specified mode