From 0fe11746fcb37de2465cdbbe74be6ad4a59228e5 Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Sun, 3 Nov 2019 07:04:28 +0100 Subject: Address review comments --- src/input_common/udp/protocol.h | 101 +++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 47 deletions(-) (limited to 'src/input_common/udp/protocol.h') diff --git a/src/input_common/udp/protocol.h b/src/input_common/udp/protocol.h index d31bbeb89..1b521860a 100644 --- a/src/input_common/udp/protocol.h +++ b/src/input_common/udp/protocol.h @@ -26,15 +26,15 @@ enum class Type : u32 { }; struct Header { - u32_le magic; - u16_le protocol_version; - u16_le payload_length; - u32_le crc; - u32_le id; + u32_le magic{}; + u16_le protocol_version{}; + u16_le payload_length{}; + u32_le crc{}; + u32_le id{}; ///> In the protocol, the type of the packet is not part of the header, but its convenient to ///> include in the header so the callee doesn't have to duplicate the type twice when building ///> the data - Type type; + Type type{}; }; static_assert(sizeof(Header) == 20, "UDP Message Header struct has wrong size"); static_assert(std::is_trivially_copyable_v
, "UDP Message Header is not trivially copyable"); @@ -45,7 +45,7 @@ constexpr MacAddress EMPTY_MAC_ADDRESS = {0, 0, 0, 0, 0, 0}; #pragma pack(push, 1) template struct Message { - Header header; + Header header{}; T data; }; #pragma pack(pop) @@ -64,7 +64,7 @@ struct Version {}; */ constexpr u32 MAX_PORTS = 4; struct PortInfo { - u32_le pad_count; ///> Number of ports to request data for + u32_le pad_count{}; ///> Number of ports to request data for std::array port; }; static_assert(std::is_trivially_copyable_v, @@ -82,9 +82,9 @@ struct PadData { Mac, }; /// Determines which method will be used as a look up for the controller - Flags flags; + Flags flags{}; /// Index of the port of the controller to retrieve data about - u8 port_id; + u8 port_id{}; /// Mac address of the controller to retrieve data about MacAddress mac; }; @@ -113,20 +113,20 @@ Message Create(const T data, const u32 client_id = 0) { namespace Response { struct Version { - u16_le version; + u16_le version{}; }; static_assert(sizeof(Version) == 2, "UDP Response Version struct has wrong size"); static_assert(std::is_trivially_copyable_v, "UDP Response Version is not trivially copyable"); struct PortInfo { - u8 id; - u8 state; - u8 model; - u8 connection_type; + u8 id{}; + u8 state{}; + u8 model{}; + u8 connection_type{}; MacAddress mac; - u8 battery; - u8 is_pad_active; + u8 battery{}; + u8 is_pad_active{}; }; static_assert(sizeof(PortInfo) == 12, "UDP Response PortInfo struct has wrong size"); static_assert(std::is_trivially_copyable_v, @@ -134,10 +134,10 @@ static_assert(std::is_trivially_copyable_v, #pragma pack(push, 1) struct PadData { - PortInfo info; - u32_le packet_counter; + PortInfo info{}; + u32_le packet_counter{}; - u16_le digital_button; + u16_le digital_button{}; // The following union isn't trivially copyable but we don't use this input anyway. // union DigitalButton { // u16_le button; @@ -161,46 +161,46 @@ struct PadData { u8 home; /// If the device supports a "click" on the touchpad, this will change to 1 when a click happens - u8 touch_hard_press; - u8 left_stick_x; - u8 left_stick_y; - u8 right_stick_x; - u8 right_stick_y; + u8 touch_hard_press{}; + u8 left_stick_x{}; + u8 left_stick_y{}; + u8 right_stick_x{}; + u8 right_stick_y{}; struct AnalogButton { - u8 button_8; - u8 button_7; - u8 button_6; - u8 button_5; - u8 button_12; - u8 button_11; - u8 button_10; - u8 button_9; - u8 button_16; - u8 button_15; - u8 button_14; - u8 button_13; + u8 button_8{}; + u8 button_7{}; + u8 button_6{}; + u8 button_5{}; + u8 button_12{}; + u8 button_11{}; + u8 button_10{}; + u8 button_9{}; + u8 button_16{}; + u8 button_15{}; + u8 button_14{}; + u8 button_13{}; } analog_button; struct TouchPad { - u8 is_active; - u8 id; - u16_le x; - u16_le y; + u8 is_active{}; + u8 id{}; + u16_le x{}; + u16_le y{}; } touch_1, touch_2; u64_le motion_timestamp; struct Accelerometer { - float x; - float y; - float z; + float x{}; + float y{}; + float z{}; } accel; struct Gyroscope { - float pitch; - float yaw; - float roll; + float pitch{}; + float yaw{}; + float roll{}; } gyro; }; #pragma pack(pop) @@ -212,6 +212,13 @@ static_assert(std::is_trivially_copyable_v, static_assert(sizeof(Message) == MAX_PACKET_SIZE, "UDP MAX_PACKET_SIZE is no longer larger than Message"); +static_assert(sizeof(PadData::AnalogButton) == 12, + "UDP Response AnalogButton struct has wrong size "); +static_assert(sizeof(PadData::TouchPad) == 6, "UDP Response TouchPad struct has wrong size "); +static_assert(sizeof(PadData::Accelerometer) == 12, + "UDP Response Accelerometer struct has wrong size "); +static_assert(sizeof(PadData::Gyroscope) == 12, "UDP Response Gyroscope struct has wrong size "); + /** * Create a Response Message from the data * @param data array of bytes sent from the server -- cgit v1.2.3