Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Unified Diff: content/browser/gamepad/xbox_data_fetcher_mac.h

Issue 2081583002: Migrating majority of gamepad from content/browser/ to device/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final tweaks Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « content/browser/gamepad/raw_input_data_fetcher_win.cc ('k') | content/browser/gamepad/xbox_data_fetcher_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698