[hal,wpilib,cmd] Update POVs to use enums (#7978)

This commit is contained in:
Joseph Eng
2025-06-29 18:32:26 -07:00
committed by GitHub
parent e13d237390
commit f55564729b
30 changed files with 538 additions and 378 deletions

View File

@@ -467,7 +467,7 @@ Java_edu_wpi_first_hal_simulation_DriverStationDataJNI_setJoystickPOVs
arraySize < HAL_kMaxJoystickPOVs ? arraySize : HAL_kMaxJoystickPOVs;
povs.count = maxCount;
for (int i = 0; i < maxCount; i++) {
povs.povs[i] = arrayRef[i];
povs.povs[i] = static_cast<HAL_JoystickPOV>(arrayRef[i]);
}
}
HALSIM_SetJoystickPOVs(joystickNum, &povs);
@@ -642,13 +642,13 @@ Java_edu_wpi_first_hal_simulation_DriverStationDataJNI_setJoystickAxis
/*
* Class: edu_wpi_first_hal_simulation_DriverStationDataJNI
* Method: setJoystickPOV
* Signature: (III)V
* Signature: (IIB)V
*/
JNIEXPORT void JNICALL
Java_edu_wpi_first_hal_simulation_DriverStationDataJNI_setJoystickPOV
(JNIEnv*, jclass, jint stick, jint pov, jint value)
(JNIEnv*, jclass, jint stick, jint pov, jbyte value)
{
HALSIM_SetJoystickPOV(stick, pov, value);
HALSIM_SetJoystickPOV(stick, pov, static_cast<HAL_JoystickPOV>(value));
}
/*

View File

@@ -88,9 +88,30 @@ struct HAL_JoystickAxes {
};
typedef struct HAL_JoystickAxes HAL_JoystickAxes;
HAL_ENUM_WITH_UNDERLYING_TYPE(HAL_JoystickPOV, uint8_t){
/** Centered */
HAL_JoystickPOV_kCentered = 0x00u,
/** Up */
HAL_JoystickPOV_kUp = 0x01u,
/** Right */
HAL_JoystickPOV_kRight = 0x02u,
/** Down */
HAL_JoystickPOV_kDown = 0x04u,
/** Left */
HAL_JoystickPOV_kLeft = 0x08u,
/** Right-Up */
HAL_JoystickPOV_kRightUp = HAL_JoystickPOV_kRight | HAL_JoystickPOV_kUp,
/** Right-Down */
HAL_JoystickPOV_kRightDown = HAL_JoystickPOV_kRight | HAL_JoystickPOV_kDown,
/** Left-Up */
HAL_JoystickPOV_kLeftUp = HAL_JoystickPOV_kLeft | HAL_JoystickPOV_kUp,
/** Left-Down */
HAL_JoystickPOV_kLeftDown = HAL_JoystickPOV_kLeft | HAL_JoystickPOV_kDown,
};
struct HAL_JoystickPOVs {
int16_t count;
uint8_t povs[HAL_kMaxJoystickPOVs];
HAL_JoystickPOV povs[HAL_kMaxJoystickPOVs];
};
typedef struct HAL_JoystickPOVs HAL_JoystickPOVs;

View File

@@ -73,18 +73,20 @@ typedef HAL_Handle HAL_CANStreamHandle;
typedef int32_t HAL_Bool;
#ifdef __cplusplus
#define HAL_ENUM(name) enum name : int32_t
#define HAL_ENUM_WITH_UNDERLYING_TYPE(name, type) enum name : type
#elif defined(__clang__)
#define HAL_ENUM(name) \
enum name : int32_t; \
typedef enum name name; \
enum name : int32_t
#define HAL_ENUM_WITH_UNDERLYING_TYPE(name, type) \
enum name : type; \
typedef enum name name; \
enum name : type
#else
#define HAL_ENUM(name) \
typedef int32_t name; \
#define HAL_ENUM_WITH_UNDERLYING_TYPE(name, type) \
typedef type name; \
enum name
#endif
#define HAL_ENUM(name) HAL_ENUM_WITH_UNDERLYING_TYPE(name, int32_t)
#ifdef __cplusplus
namespace hal {
/**

View File

@@ -139,7 +139,7 @@ void HALSIM_SetMatchInfo(const HAL_MatchInfo* info);
void HALSIM_SetJoystickButton(int32_t stick, int32_t button, HAL_Bool state);
void HALSIM_SetJoystickAxis(int32_t stick, int32_t axis, double value);
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, int32_t value);
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, HAL_JoystickPOV value);
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);

View File

@@ -251,7 +251,7 @@ void DriverStationData::SetJoystickAxis(int32_t stick, int32_t axis,
}
void DriverStationData::SetJoystickPOV(int32_t stick, int32_t pov,
int32_t value) {
HAL_JoystickPOV value) {
if (stick < 0 || stick >= kNumJoysticks) {
return;
}
@@ -507,7 +507,7 @@ void HALSIM_SetJoystickAxis(int32_t stick, int32_t axis, double value) {
SimDriverStationData->SetJoystickAxis(stick, axis, value);
}
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, int32_t value) {
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, HAL_JoystickPOV value) {
SimDriverStationData->SetJoystickPOV(stick, pov, value);
}

View File

@@ -97,7 +97,7 @@ class DriverStationData {
void SetJoystickButton(int32_t stick, int32_t button, HAL_Bool state);
void SetJoystickAxis(int32_t stick, int32_t axis, double value);
void SetJoystickPOV(int32_t stick, int32_t pov, int32_t value);
void SetJoystickPOV(int32_t stick, int32_t pov, HAL_JoystickPOV value);
void SetJoystickButtons(int32_t stick, uint32_t buttons);
void SetJoystickAxisCount(int32_t stick, int32_t count);
void SetJoystickPOVCount(int32_t stick, int32_t count);

View File

@@ -263,7 +263,7 @@ void JoystickDataCache::Update(const mrc::ControlData& data) {
povs[count].count = newPovs.size();
for (size_t i = 0; i < newPovs.size(); i++) {
povs[count].povs[i] = newPovs[i];
povs[count].povs[i] = static_cast<HAL_JoystickPOV>(newPovs[i]);
}
buttons[count].count = newStick.Buttons.GetMaxAvailableCount();

View File

@@ -82,7 +82,7 @@ void HALSIM_SetJoystickButton(int32_t stick, int32_t button, HAL_Bool state) {}
void HALSIM_SetJoystickAxis(int32_t stick, int32_t axis, double value) {}
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, int32_t value) {}
void HALSIM_SetJoystickPOV(int32_t stick, int32_t pov, HAL_JoystickPOV value) {}
void HALSIM_SetJoystickButtonsValue(int32_t stick, uint32_t buttons) {}