From 47cc71ea01fb2f4f7bcbecc32c1048dda1c7d46b Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sun, 23 Aug 2020 23:17:03 -0700 Subject: [PATCH] [hal] Add HALSIM_GetJoystickCounts --- .../athena/mockdata/DriverStationData.cpp | 7 +++++++ .../hal/simulation/DriverStationData.h | 2 ++ .../native/sim/mockdata/DriverStationData.cpp | 21 +++++++++++++++++++ .../sim/mockdata/DriverStationDataInternal.h | 2 ++ 4 files changed, 32 insertions(+) diff --git a/hal/src/main/native/athena/mockdata/DriverStationData.cpp b/hal/src/main/native/athena/mockdata/DriverStationData.cpp index 12373963d8..b4695ba406 100644 --- a/hal/src/main/native/athena/mockdata/DriverStationData.cpp +++ b/hal/src/main/native/athena/mockdata/DriverStationData.cpp @@ -95,6 +95,13 @@ void HALSIM_SetJoystickPOVCount(int32_t stick, int32_t count) {} void HALSIM_SetJoystickButtonCount(int32_t stick, int32_t count) {} +void HALSIM_GetJoystickCounts(int32_t stick, int32_t* axisCount, + int32_t* buttonCount, int32_t* povCount) { + *axisCount = 0; + *buttonCount = 0; + *povCount = 0; +} + void HALSIM_SetJoystickIsXbox(int32_t stick, HAL_Bool isXbox) {} void HALSIM_SetJoystickType(int32_t stick, int32_t type) {} diff --git a/hal/src/main/native/include/hal/simulation/DriverStationData.h b/hal/src/main/native/include/hal/simulation/DriverStationData.h index 3315e0f4ed..536738bd51 100644 --- a/hal/src/main/native/include/hal/simulation/DriverStationData.h +++ b/hal/src/main/native/include/hal/simulation/DriverStationData.h @@ -143,6 +143,8 @@ void HALSIM_SetJoystickButtonsValue(int32_t stick, uint32_t buttons); void HALSIM_SetJoystickAxisCount(int32_t stick, int32_t count); void HALSIM_SetJoystickPOVCount(int32_t stick, int32_t count); void HALSIM_SetJoystickButtonCount(int32_t stick, int32_t count); +void HALSIM_GetJoystickCounts(int32_t stick, int32_t* axisCount, + int32_t* buttonCount, int32_t* povCount); void HALSIM_SetJoystickIsXbox(int32_t stick, HAL_Bool isXbox); void HALSIM_SetJoystickType(int32_t stick, int32_t type); diff --git a/hal/src/main/native/sim/mockdata/DriverStationData.cpp b/hal/src/main/native/sim/mockdata/DriverStationData.cpp index 1c7a436758..6250e02887 100644 --- a/hal/src/main/native/sim/mockdata/DriverStationData.cpp +++ b/hal/src/main/native/sim/mockdata/DriverStationData.cpp @@ -274,6 +274,21 @@ void DriverStationData::SetJoystickButtonCount(int32_t stick, int32_t count) { m_joystickDescriptorCallbacks(stick, &m_joystickData[stick].descriptor); } +void DriverStationData::GetJoystickCounts(int32_t stick, int32_t* axisCount, + int32_t* buttonCount, + int32_t* povCount) { + if (stick < 0 || stick >= kNumJoysticks) { + *axisCount = 0; + *buttonCount = 0; + *povCount = 0; + return; + } + std::scoped_lock lock(m_joystickDataMutex); + *axisCount = m_joystickData[stick].axes.count; + *buttonCount = m_joystickData[stick].buttons.count; + *povCount = m_joystickData[stick].povs.count; +} + void DriverStationData::SetJoystickIsXbox(int32_t stick, HAL_Bool isXbox) { if (stick < 0 || stick >= kNumJoysticks) return; std::scoped_lock lock(m_joystickDataMutex); @@ -467,6 +482,12 @@ void HALSIM_SetJoystickButtonCount(int32_t stick, int32_t count) { SimDriverStationData->SetJoystickButtonCount(stick, count); } +void HALSIM_GetJoystickCounts(int32_t stick, int32_t* axisCount, + int32_t* buttonCount, int32_t* povCount) { + SimDriverStationData->GetJoystickCounts(stick, axisCount, buttonCount, + povCount); +} + void HALSIM_SetJoystickIsXbox(int32_t stick, HAL_Bool isXbox) { SimDriverStationData->SetJoystickIsXbox(stick, isXbox); } diff --git a/hal/src/main/native/sim/mockdata/DriverStationDataInternal.h b/hal/src/main/native/sim/mockdata/DriverStationDataInternal.h index 71ea9cc436..2a507420b1 100644 --- a/hal/src/main/native/sim/mockdata/DriverStationDataInternal.h +++ b/hal/src/main/native/sim/mockdata/DriverStationDataInternal.h @@ -105,6 +105,8 @@ class DriverStationData { void SetJoystickAxisCount(int32_t stick, int32_t count); void SetJoystickPOVCount(int32_t stick, int32_t count); void SetJoystickButtonCount(int32_t stick, int32_t count); + void GetJoystickCounts(int32_t stick, int32_t* axisCount, + int32_t* buttonCount, int32_t* povCount); void SetJoystickIsXbox(int32_t stick, HAL_Bool isXbox); void SetJoystickType(int32_t stick, int32_t type);