Index: content/browser/gamepad/xbox_data_fetcher_mac.h |
diff --git a/content/browser/gamepad/xbox_data_fetcher_mac.h b/content/browser/gamepad/xbox_data_fetcher_mac.h |
index ca8f7fcd88c11eff14f8365a701fa2bbe01d95f3..99a68f209bd1b6b934b9e4a0aff1362875ebeead 100644 |
--- a/content/browser/gamepad/xbox_data_fetcher_mac.h |
+++ b/content/browser/gamepad/xbox_data_fetcher_mac.h |
@@ -18,6 +18,12 @@ |
class XboxController { |
public: |
+ enum ControllerType { |
+ UNKNOWN_CONTROLLER, |
+ XBOX_360_CONTROLLER, |
+ XBOX_ONE_CONTROLLER |
+ }; |
+ |
enum LEDPattern { |
LED_OFF = 0, |
@@ -77,16 +83,20 @@ class XboxController { |
UInt32 location_id() { return location_id_; } |
int GetVendorId() const; |
int GetProductId() const; |
+ ControllerType GetControllerType() const; |
private: |
static void WriteComplete(void* context, IOReturn result, void* arg0); |
static void GotData(void* context, IOReturn result, void* arg0); |
- void ProcessPacket(size_t length); |
+ void ProcessXbox360Packet(size_t length); |
+ void ProcessXboxOnePacket(size_t length); |
void QueueRead(); |
void IOError(); |
+ void WriteXboxOneInit(); |
+ |
// Handle for the USB device. IOUSBDeviceStruct320 is the latest version of |
// the device API that is supported on Mac OS 10.6. |
base::mac::ScopedIOPluginInterface<struct IOUSBDeviceStruct320> device_; |
@@ -117,6 +127,10 @@ class XboxController { |
Delegate* delegate_; |
+ ControllerType controller_type_; |
+ int read_endpoint_; |
+ int control_endpoint_; |
+ |
DISALLOW_COPY_AND_ASSIGN(XboxController); |
}; |
@@ -134,6 +148,11 @@ class XboxDataFetcher : public XboxController::Delegate { |
virtual ~XboxDataFetcher(); |
bool RegisterForNotifications(); |
+ bool RegisterForDeviceNotifications( |
+ int vendor_id, |
+ int product_id, |
+ base::mac::ScopedIOObject<io_iterator_t>* added_iter, |
+ base::mac::ScopedIOObject<io_iterator_t>* removed_iter); |
void UnregisterFromNotifications(); |
XboxController* ControllerForLocation(UInt32 location_id); |
@@ -158,8 +177,10 @@ class XboxDataFetcher : public XboxController::Delegate { |
// do need to maintain a reference to it so we can invalidate it. |
CFRunLoopSourceRef source_; |
IONotificationPortRef port_; |
- base::mac::ScopedIOObject<io_iterator_t> device_added_iter_; |
- base::mac::ScopedIOObject<io_iterator_t> device_removed_iter_; |
+ base::mac::ScopedIOObject<io_iterator_t> xbox_360_device_added_iter_; |
+ base::mac::ScopedIOObject<io_iterator_t> xbox_360_device_removed_iter_; |
+ base::mac::ScopedIOObject<io_iterator_t> xbox_one_device_added_iter_; |
+ base::mac::ScopedIOObject<io_iterator_t> xbox_one_device_removed_iter_; |
DISALLOW_COPY_AND_ASSIGN(XboxDataFetcher); |
}; |