From 4110324b35ade2d8c71377b8aafaa73c1dbd572f Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 23 Oct 2015 12:55:04 -0700 Subject: [PATCH] Add another bit to channel types so we can fit rumble --- libraries/controllers/src/controllers/Input.cpp | 9 ++++----- libraries/controllers/src/controllers/Input.h | 10 ++++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libraries/controllers/src/controllers/Input.cpp b/libraries/controllers/src/controllers/Input.cpp index 4f645c3f95..6f8bd547a2 100644 --- a/libraries/controllers/src/controllers/Input.cpp +++ b/libraries/controllers/src/controllers/Input.cpp @@ -9,10 +9,9 @@ #include "Input.h" namespace controller { - - const uint16_t Input::INVALID_DEVICE = 0xffff; - const uint16_t Input::INVALID_CHANNEL = 0x1fff; - const uint16_t Input::INVALID_TYPE = (uint16_t)ChannelType::INVALID; - const Input Input::INVALID_INPUT = Input(INVALID_DEVICE, INVALID_CHANNEL, ChannelType::INVALID); + const Input Input::INVALID_INPUT = Input(0x7fffffff); + const uint16_t Input::INVALID_DEVICE = Input::INVALID_INPUT.device; + const uint16_t Input::INVALID_CHANNEL = Input::INVALID_INPUT.channel; + const uint16_t Input::INVALID_TYPE = Input::INVALID_INPUT.type; } diff --git a/libraries/controllers/src/controllers/Input.h b/libraries/controllers/src/controllers/Input.h index 7382d365ec..db99e820da 100644 --- a/libraries/controllers/src/controllers/Input.h +++ b/libraries/controllers/src/controllers/Input.h @@ -16,10 +16,12 @@ namespace controller { enum class ChannelType { - INVALID = 0, - BUTTON = 1, + UNKNOWN = 0, + BUTTON, AXIS, POSE, + RUMBLE, + INVALID = 0x7 }; // Input is the unique identifier to find a n input channel of a particular device @@ -30,8 +32,8 @@ struct Input { uint32_t id{ 0 }; // by default Input is 0 meaning invalid struct { uint16_t device; // Up to 64K possible devices - uint16_t channel : 13 ; // 2^13 possible channel per Device - uint16_t type : 2; // 2 bits to store the Type directly in the ID + uint16_t channel : 12 ; // 2^12 possible channel per Device + uint16_t type : 3; // 2 bits to store the Type directly in the ID uint16_t padding : 1; // 2 bits to store the Type directly in the ID }; };