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 |
deleted file mode 100644 |
index e4b98ff7fe217697e324e2a46c37506616f1fd76..0000000000000000000000000000000000000000 |
--- a/content/browser/gamepad/xbox_data_fetcher_mac.h |
+++ /dev/null |
@@ -1,190 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CONTENT_BROWSER_GAMEPAD_XBOX_DATA_FETCHER_MAC_H_ |
-#define CONTENT_BROWSER_GAMEPAD_XBOX_DATA_FETCHER_MAC_H_ |
- |
-#include <CoreFoundation/CoreFoundation.h> |
-#include <IOKit/IOKitLib.h> |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <memory> |
-#include <set> |
- |
-#include "base/mac/scoped_cftyperef.h" |
-#include "base/mac/scoped_ioobject.h" |
-#include "base/mac/scoped_ioplugininterface.h" |
-#include "base/macros.h" |
- |
-class XboxController { |
- public: |
- enum ControllerType { |
- UNKNOWN_CONTROLLER, |
- XBOX_360_CONTROLLER, |
- XBOX_ONE_CONTROLLER |
- }; |
- |
- enum LEDPattern { |
- LED_OFF = 0, |
- |
- // 2 quick flashes, then a series of slow flashes (about 1 per second). |
- LED_FLASH = 1, |
- |
- // Flash three times then hold the LED on. This is the standard way to tell |
- // the player which player number they are. |
- LED_FLASH_TOP_LEFT = 2, |
- LED_FLASH_TOP_RIGHT = 3, |
- LED_FLASH_BOTTOM_LEFT = 4, |
- LED_FLASH_BOTTOM_RIGHT = 5, |
- |
- // Simply turn on the specified LED and turn all other LEDs off. |
- LED_HOLD_TOP_LEFT = 6, |
- LED_HOLD_TOP_RIGHT = 7, |
- LED_HOLD_BOTTOM_LEFT = 8, |
- LED_HOLD_BOTTOM_RIGHT = 9, |
- |
- LED_ROTATE = 10, |
- |
- LED_FLASH_FAST = 11, |
- LED_FLASH_SLOW = 12, // Flash about once per 3 seconds |
- |
- // Flash alternating LEDs for a few seconds, then flash all LEDs about once |
- // per second |
- LED_ALTERNATE_PATTERN = 13, |
- |
- // 14 is just another boring flashing speed. |
- |
- // Flash all LEDs once then go black. |
- LED_FLASH_ONCE = 15, |
- |
- LED_NUM_PATTERNS |
- }; |
- |
- struct Data { |
- bool buttons[15]; |
- float triggers[2]; |
- float axes[4]; |
- }; |
- |
- class Delegate { |
- public: |
- virtual void XboxControllerGotData(XboxController* controller, |
- const Data& data) = 0; |
- virtual void XboxControllerError(XboxController* controller) = 0; |
- }; |
- |
- explicit XboxController(Delegate* delegate_); |
- virtual ~XboxController(); |
- |
- bool OpenDevice(io_service_t service); |
- |
- void SetLEDPattern(LEDPattern pattern); |
- |
- 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 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_; |
- |
- // Handle for the interface on the device which sends button and analog data. |
- // The other interfaces (for the ChatPad and headset) are ignored. |
- base::mac::ScopedIOPluginInterface<struct IOUSBInterfaceStruct300> interface_; |
- |
- bool device_is_open_; |
- bool interface_is_open_; |
- |
- base::ScopedCFTypeRef<CFRunLoopSourceRef> source_; |
- |
- // This will be set to the max packet size reported by the interface, which |
- // is 32 bytes. I would have expected USB to do message framing itself, but |
- // somehow we still sometimes (rarely!) get packets off the interface which |
- // aren't correctly framed. The 360 controller frames its packets with a 2 |
- // byte header (type, total length) so we can reframe the packet data |
- // ourselves. |
- uint16_t read_buffer_size_; |
- std::unique_ptr<uint8_t[]> read_buffer_; |
- |
- // The pattern that the LEDs on the device are currently displaying, or |
- // LED_NUM_PATTERNS if unknown. |
- LEDPattern led_pattern_; |
- |
- UInt32 location_id_; |
- |
- Delegate* delegate_; |
- |
- ControllerType controller_type_; |
- int read_endpoint_; |
- int control_endpoint_; |
- |
- DISALLOW_COPY_AND_ASSIGN(XboxController); |
-}; |
- |
-class XboxDataFetcher : public XboxController::Delegate { |
- public: |
- class Delegate { |
- public: |
- virtual void XboxDeviceAdd(XboxController* device) = 0; |
- virtual void XboxDeviceRemove(XboxController* device) = 0; |
- virtual void XboxValueChanged(XboxController* device, |
- const XboxController::Data& data) = 0; |
- }; |
- |
- explicit XboxDataFetcher(Delegate* 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); |
- |
- private: |
- static void DeviceAdded(void* context, io_iterator_t iterator); |
- static void DeviceRemoved(void* context, io_iterator_t iterator); |
- void AddController(XboxController* controller); |
- void RemoveController(XboxController* controller); |
- void RemoveControllerByLocationID(uint32_t id); |
- void XboxControllerGotData(XboxController* controller, |
- const XboxController::Data& data) override; |
- void XboxControllerError(XboxController* controller) override; |
- |
- Delegate* delegate_; |
- |
- std::set<XboxController*> controllers_; |
- |
- bool listening_; |
- |
- // port_ owns source_, so this doesn't need to be a ScopedCFTypeRef, but we |
- // do need to maintain a reference to it so we can invalidate it. |
- CFRunLoopSourceRef source_; |
- IONotificationPortRef port_; |
- 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); |
-}; |
- |
-#endif // CONTENT_BROWSER_GAMEPAD_XBOX_DATA_FETCHER_MAC_H_ |