diff --git a/VoidLink/Input/Controller.h b/VoidLink/Input/Controller.h index ea6bad27..d3a042f3 100644 --- a/VoidLink/Input/Controller.h +++ b/VoidLink/Input/Controller.h @@ -21,6 +21,13 @@ typedef struct { float lastY; } controller_touch_context_t; +typedef NS_ENUM(NSInteger, ControllerDeviceBatteryState) { + ControllerDeviceBatteryStateUnknown = -1, + ControllerDeviceBatteryStateDischarging, + ControllerDeviceBatteryStateCharging, + ControllerDeviceBatteryStateFull +}; + @property (nullable, nonatomic, retain) GCController* gamepad; @property (nonatomic) int playerIndex; @property (nonatomic) int lastButtonFlags; @@ -53,7 +60,7 @@ typedef struct { #endif @property (nonatomic) NSTimer* _Nullable batteryTimer; -@property (nonatomic) GCDeviceBatteryState lastBatteryState; // to be wrapped for compatibility +@property (nonatomic) ControllerDeviceBatteryState lastBatteryState; // self defined enum for compatibility @property (nonatomic) float lastBatteryLevel; @property (nonatomic) BOOL reportedArrival; diff --git a/VoidLink/Input/ControllerSupport.m b/VoidLink/Input/ControllerSupport.m index aff83d3d..adb84c74 100644 --- a/VoidLink/Input/ControllerSupport.m +++ b/VoidLink/Input/ControllerSupport.m @@ -569,7 +569,7 @@ static const double MOUSE_SPEED_DIVISOR = 1.25; if (controller.gamepad.battery) { // Poll for updated battery status every 30 seconds controller.batteryTimer = [NSTimer scheduledTimerWithTimeInterval:30 repeats:YES block:^(NSTimer *timer) { - if (controller.lastBatteryState != controller.gamepad.battery.batteryState || + if ((GCDeviceBatteryState)controller.lastBatteryState != controller.gamepad.battery.batteryState || controller.lastBatteryLevel != controller.gamepad.battery.batteryLevel) { uint8_t batteryState; @@ -591,7 +591,7 @@ static const double MOUSE_SPEED_DIVISOR = 1.25; LiSendControllerBatteryEvent(controller.playerIndex, batteryState, (uint8_t)(controller.gamepad.battery.batteryLevel * 100)); - controller.lastBatteryState = controller.gamepad.battery.batteryState; + controller.lastBatteryState = (ControllerDeviceBatteryState)controller.gamepad.battery.batteryState; controller.lastBatteryLevel = controller.gamepad.battery.batteryLevel; } }];