| Index: device/gamepad/xbox_data_fetcher_mac.cc
|
| diff --git a/content/browser/gamepad/xbox_data_fetcher_mac.cc b/device/gamepad/xbox_data_fetcher_mac.cc
|
| similarity index 78%
|
| rename from content/browser/gamepad/xbox_data_fetcher_mac.cc
|
| rename to device/gamepad/xbox_data_fetcher_mac.cc
|
| index 7ef35318d1847cea3fc16d818564430f16229e7f..4c526a7c4c58335e3b7c0fb53f1090527bda13ce 100644
|
| --- a/content/browser/gamepad/xbox_data_fetcher_mac.cc
|
| +++ b/device/gamepad/xbox_data_fetcher_mac.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/browser/gamepad/xbox_data_fetcher_mac.h"
|
| +#include "device/gamepad/xbox_data_fetcher_mac.h"
|
|
|
| #include <algorithm>
|
| #include <cmath>
|
| @@ -49,20 +49,20 @@ enum {
|
|
|
| #pragma pack(push, 1)
|
| struct Xbox360ButtonData {
|
| - bool dpad_up : 1;
|
| - bool dpad_down : 1;
|
| - bool dpad_left : 1;
|
| + bool dpad_up : 1;
|
| + bool dpad_down : 1;
|
| + bool dpad_left : 1;
|
| bool dpad_right : 1;
|
|
|
| - bool start : 1;
|
| - bool back : 1;
|
| - bool stick_left_click : 1;
|
| + bool start : 1;
|
| + bool back : 1;
|
| + bool stick_left_click : 1;
|
| bool stick_right_click : 1;
|
|
|
| - bool bumper_left : 1;
|
| + bool bumper_left : 1;
|
| bool bumper_right : 1;
|
| - bool guide : 1;
|
| - bool dummy1 : 1; // Always 0.
|
| + bool guide : 1;
|
| + bool dummy1 : 1; // Always 0.
|
|
|
| bool a : 1;
|
| bool b : 1;
|
| @@ -83,24 +83,24 @@ struct Xbox360ButtonData {
|
| };
|
|
|
| struct XboxOneButtonData {
|
| - bool sync : 1;
|
| + bool sync : 1;
|
| bool dummy1 : 1; // Always 0.
|
| - bool start : 1;
|
| - bool back : 1;
|
| + bool start : 1;
|
| + bool back : 1;
|
|
|
| bool a : 1;
|
| bool b : 1;
|
| bool x : 1;
|
| bool y : 1;
|
|
|
| - bool dpad_up : 1;
|
| - bool dpad_down : 1;
|
| - bool dpad_left : 1;
|
| + bool dpad_up : 1;
|
| + bool dpad_down : 1;
|
| + bool dpad_left : 1;
|
| bool dpad_right : 1;
|
|
|
| - bool bumper_left : 1;
|
| - bool bumper_right : 1;
|
| - bool stick_left_click : 1;
|
| + bool bumper_left : 1;
|
| + bool bumper_right : 1;
|
| + bool stick_left_click : 1;
|
| bool stick_right_click : 1;
|
|
|
| uint16_t trigger_left;
|
| @@ -166,13 +166,14 @@ float NormalizeTrigger(uint8_t value) {
|
| }
|
|
|
| float NormalizeXboxOneTrigger(uint16_t value) {
|
| - return value < kXboxOneTriggerDeadzone ? 0 :
|
| - static_cast<float>(value - kXboxOneTriggerDeadzone) /
|
| - (kXboxOneTriggerMax - kXboxOneTriggerDeadzone);
|
| + return value < kXboxOneTriggerDeadzone
|
| + ? 0
|
| + : static_cast<float>(value - kXboxOneTriggerDeadzone) /
|
| + (kXboxOneTriggerMax - kXboxOneTriggerDeadzone);
|
| }
|
|
|
| void NormalizeXbox360ButtonData(const Xbox360ButtonData& data,
|
| - XboxController::Data* normalized_data) {
|
| + XboxController::Data* normalized_data) {
|
| normalized_data->buttons[0] = data.a;
|
| normalized_data->buttons[1] = data.b;
|
| normalized_data->buttons[2] = data.x;
|
| @@ -190,20 +191,14 @@ void NormalizeXbox360ButtonData(const Xbox360ButtonData& data,
|
| normalized_data->buttons[14] = data.guide;
|
| normalized_data->triggers[0] = NormalizeTrigger(data.trigger_left);
|
| normalized_data->triggers[1] = NormalizeTrigger(data.trigger_right);
|
| - NormalizeAxis(data.stick_left_x,
|
| - data.stick_left_y,
|
| - kLeftThumbDeadzone,
|
| - &normalized_data->axes[0],
|
| - &normalized_data->axes[1]);
|
| - NormalizeAxis(data.stick_right_x,
|
| - data.stick_right_y,
|
| - kRightThumbDeadzone,
|
| - &normalized_data->axes[2],
|
| - &normalized_data->axes[3]);
|
| + NormalizeAxis(data.stick_left_x, data.stick_left_y, kLeftThumbDeadzone,
|
| + &normalized_data->axes[0], &normalized_data->axes[1]);
|
| + NormalizeAxis(data.stick_right_x, data.stick_right_y, kRightThumbDeadzone,
|
| + &normalized_data->axes[2], &normalized_data->axes[3]);
|
| }
|
|
|
| void NormalizeXboxOneButtonData(const XboxOneButtonData& data,
|
| - XboxController::Data* normalized_data) {
|
| + XboxController::Data* normalized_data) {
|
| normalized_data->buttons[0] = data.a;
|
| normalized_data->buttons[1] = data.b;
|
| normalized_data->buttons[2] = data.x;
|
| @@ -221,16 +216,10 @@ void NormalizeXboxOneButtonData(const XboxOneButtonData& data,
|
| normalized_data->buttons[14] = data.sync;
|
| normalized_data->triggers[0] = NormalizeXboxOneTrigger(data.trigger_left);
|
| normalized_data->triggers[1] = NormalizeXboxOneTrigger(data.trigger_right);
|
| - NormalizeAxis(data.stick_left_x,
|
| - data.stick_left_y,
|
| - kLeftThumbDeadzone,
|
| - &normalized_data->axes[0],
|
| - &normalized_data->axes[1]);
|
| - NormalizeAxis(data.stick_right_x,
|
| - data.stick_right_y,
|
| - kRightThumbDeadzone,
|
| - &normalized_data->axes[2],
|
| - &normalized_data->axes[3]);
|
| + NormalizeAxis(data.stick_left_x, data.stick_left_y, kLeftThumbDeadzone,
|
| + &normalized_data->axes[0], &normalized_data->axes[1]);
|
| + NormalizeAxis(data.stick_right_x, data.stick_right_y, kRightThumbDeadzone,
|
| + &normalized_data->axes[2], &normalized_data->axes[3]);
|
| }
|
|
|
| } // namespace
|
| @@ -246,8 +235,7 @@ XboxController::XboxController(Delegate* delegate)
|
| delegate_(delegate),
|
| controller_type_(UNKNOWN_CONTROLLER),
|
| read_endpoint_(0),
|
| - control_endpoint_(0) {
|
| -}
|
| + control_endpoint_(0) {}
|
|
|
| XboxController::~XboxController() {
|
| if (source_)
|
| @@ -259,22 +247,18 @@ XboxController::~XboxController() {
|
| }
|
|
|
| bool XboxController::OpenDevice(io_service_t service) {
|
| - IOCFPlugInInterface **plugin;
|
| + IOCFPlugInInterface** plugin;
|
| SInt32 score; // Unused, but required for IOCreatePlugInInterfaceForService.
|
| - kern_return_t kr =
|
| - IOCreatePlugInInterfaceForService(service,
|
| - kIOUSBDeviceUserClientTypeID,
|
| - kIOCFPlugInInterfaceID,
|
| - &plugin,
|
| - &score);
|
| + kern_return_t kr = IOCreatePlugInInterfaceForService(
|
| + service, kIOUSBDeviceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin,
|
| + &score);
|
| if (kr != KERN_SUCCESS)
|
| return false;
|
| base::mac::ScopedIOPluginInterface<IOCFPlugInInterface> plugin_ref(plugin);
|
|
|
| - HRESULT res =
|
| - (*plugin)->QueryInterface(plugin,
|
| - CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID320),
|
| - (LPVOID *)&device_);
|
| + HRESULT res = (*plugin)->QueryInterface(
|
| + plugin, CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID320),
|
| + (LPVOID*)&device_);
|
| if (!SUCCEEDED(res) || !device_)
|
| return false;
|
|
|
| @@ -358,12 +342,10 @@ bool XboxController::OpenDevice(io_service_t service) {
|
| // endpoint. This is the same process as earlier: first make a
|
| // PluginInterface from the io_service then make the InterfaceInterface from
|
| // that.
|
| - IOCFPlugInInterface **plugin_interface;
|
| - kr = IOCreatePlugInInterfaceForService(usb_interface,
|
| - kIOUSBInterfaceUserClientTypeID,
|
| - kIOCFPlugInInterfaceID,
|
| - &plugin_interface,
|
| - &score);
|
| + IOCFPlugInInterface** plugin_interface;
|
| + kr = IOCreatePlugInInterfaceForService(
|
| + usb_interface, kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID,
|
| + &plugin_interface, &score);
|
| if (kr != KERN_SUCCESS || !plugin_interface)
|
| return false;
|
| base::mac::ScopedIOPluginInterface<IOCFPlugInInterface> interface_ref(
|
| @@ -377,10 +359,10 @@ bool XboxController::OpenDevice(io_service_t service) {
|
| } while ((usb_interface = IOIteratorNext(iter)));
|
|
|
| // Actually create the interface.
|
| - res = (*plugin_interface)->QueryInterface(
|
| - plugin_interface,
|
| - CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID300),
|
| - (LPVOID *)&interface_);
|
| + res = (*plugin_interface)
|
| + ->QueryInterface(plugin_interface,
|
| + CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID300),
|
| + (LPVOID*)&interface_);
|
|
|
| if (!SUCCEEDED(res) || !interface_)
|
| return false;
|
| @@ -412,13 +394,9 @@ bool XboxController::OpenDevice(io_service_t service) {
|
| uint16_t max_packet_size;
|
| uint8_t interval;
|
|
|
| - kr = (*interface_)->GetPipeProperties(interface_,
|
| - i,
|
| - &direction,
|
| - &number,
|
| - &transfer_type,
|
| - &max_packet_size,
|
| - &interval);
|
| + kr = (*interface_)
|
| + ->GetPipeProperties(interface_, i, &direction, &number,
|
| + &transfer_type, &max_packet_size, &interval);
|
| if (kr != KERN_SUCCESS || transfer_type != kUSBInterrupt) {
|
| return false;
|
| }
|
| @@ -456,12 +434,10 @@ void XboxController::SetLEDPattern(LEDPattern pattern) {
|
| buffer[0] = static_cast<UInt8>(CONTROL_MESSAGE_SET_LED);
|
| buffer[1] = length;
|
| buffer[2] = static_cast<UInt8>(pattern);
|
| - kern_return_t kr = (*interface_)->WritePipeAsync(interface_,
|
| - control_endpoint_,
|
| - buffer,
|
| - (UInt32)length,
|
| - WriteComplete,
|
| - buffer);
|
| + kern_return_t kr =
|
| + (*interface_)
|
| + ->WritePipeAsync(interface_, control_endpoint_, buffer,
|
| + (UInt32)length, WriteComplete, buffer);
|
| if (kr != KERN_SUCCESS) {
|
| delete[] buffer;
|
| IOError();
|
| @@ -586,12 +562,10 @@ void XboxController::ProcessXboxOnePacket(size_t length) {
|
| }
|
|
|
| void XboxController::QueueRead() {
|
| - kern_return_t kr = (*interface_)->ReadPipeAsync(interface_,
|
| - read_endpoint_,
|
| - read_buffer_.get(),
|
| - read_buffer_size_,
|
| - GotData,
|
| - this);
|
| + kern_return_t kr =
|
| + (*interface_)
|
| + ->ReadPipeAsync(interface_, read_endpoint_, read_buffer_.get(),
|
| + read_buffer_size_, GotData, this);
|
| if (kr != KERN_SUCCESS)
|
| IOError();
|
| }
|
| @@ -608,12 +582,10 @@ void XboxController::WriteXboxOneInit() {
|
| UInt8* buffer = new UInt8[length];
|
| buffer[0] = 0x05;
|
| buffer[1] = 0x20;
|
| - kern_return_t kr = (*interface_)->WritePipeAsync(interface_,
|
| - control_endpoint_,
|
| - buffer,
|
| - (UInt32)length,
|
| - WriteComplete,
|
| - buffer);
|
| + kern_return_t kr =
|
| + (*interface_)
|
| + ->WritePipeAsync(interface_, control_endpoint_, buffer,
|
| + (UInt32)length, WriteComplete, buffer);
|
| if (kr != KERN_SUCCESS) {
|
| delete[] buffer;
|
| IOError();
|
| @@ -624,11 +596,7 @@ void XboxController::WriteXboxOneInit() {
|
| //-----------------------------------------------------------------------------
|
|
|
| XboxDataFetcher::XboxDataFetcher(Delegate* delegate)
|
| - : delegate_(delegate),
|
| - listening_(false),
|
| - source_(NULL),
|
| - port_(NULL) {
|
| -}
|
| + : delegate_(delegate), listening_(false), source_(NULL), port_(NULL) {}
|
|
|
| XboxDataFetcher::~XboxDataFetcher() {
|
| while (!controllers_.empty()) {
|
| @@ -659,11 +627,9 @@ void XboxDataFetcher::DeviceRemoved(void* context, io_iterator_t iterator) {
|
| while ((ref = IOIteratorNext(iterator))) {
|
| base::mac::ScopedIOObject<io_service_t> scoped_ref(ref);
|
| base::ScopedCFTypeRef<CFNumberRef> number(
|
| - base::mac::CFCastStrict<CFNumberRef>(
|
| - IORegistryEntryCreateCFProperty(ref,
|
| - CFSTR(kUSBDevicePropertyLocationID),
|
| - kCFAllocatorDefault,
|
| - kNilOptions)));
|
| + base::mac::CFCastStrict<CFNumberRef>(IORegistryEntryCreateCFProperty(
|
| + ref, CFSTR(kUSBDevicePropertyLocationID), kCFAllocatorDefault,
|
| + kNilOptions)));
|
| UInt32 location_id = 0;
|
| CFNumberGetValue(number, kCFNumberSInt32Type, &location_id);
|
| fetcher->RemoveControllerByLocationID(location_id);
|
| @@ -684,15 +650,13 @@ bool XboxDataFetcher::RegisterForNotifications() {
|
| listening_ = true;
|
|
|
| if (!RegisterForDeviceNotifications(
|
| - kVendorMicrosoft, kProductXboxOneController,
|
| - &xbox_one_device_added_iter_,
|
| - &xbox_one_device_removed_iter_))
|
| + kVendorMicrosoft, kProductXboxOneController,
|
| + &xbox_one_device_added_iter_, &xbox_one_device_removed_iter_))
|
| return false;
|
|
|
| if (!RegisterForDeviceNotifications(
|
| - kVendorMicrosoft, kProductXbox360Controller,
|
| - &xbox_360_device_added_iter_,
|
| - &xbox_360_device_removed_iter_))
|
| + kVendorMicrosoft, kProductXbox360Controller,
|
| + &xbox_360_device_added_iter_, &xbox_360_device_removed_iter_))
|
| return false;
|
|
|
| return true;
|
| @@ -703,10 +667,10 @@ bool XboxDataFetcher::RegisterForDeviceNotifications(
|
| int product_id,
|
| base::mac::ScopedIOObject<io_iterator_t>* added_iter,
|
| base::mac::ScopedIOObject<io_iterator_t>* removed_iter) {
|
| - base::ScopedCFTypeRef<CFNumberRef> vendor_cf(CFNumberCreate(
|
| - kCFAllocatorDefault, kCFNumberSInt32Type, &vendor_id));
|
| - base::ScopedCFTypeRef<CFNumberRef> product_cf(CFNumberCreate(
|
| - kCFAllocatorDefault, kCFNumberSInt32Type, &product_id));
|
| + base::ScopedCFTypeRef<CFNumberRef> vendor_cf(
|
| + CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &vendor_id));
|
| + base::ScopedCFTypeRef<CFNumberRef> product_cf(
|
| + CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &product_id));
|
| base::ScopedCFTypeRef<CFMutableDictionaryRef> matching_dict(
|
| IOServiceMatching(kIOUSBDeviceClassName));
|
| if (!matching_dict)
|
| @@ -720,11 +684,8 @@ bool XboxDataFetcher::RegisterForDeviceNotifications(
|
| CFRetain(matching_dict);
|
| io_iterator_t device_added_iter;
|
| IOReturn ret;
|
| - ret = IOServiceAddMatchingNotification(port_,
|
| - kIOFirstMatchNotification,
|
| - matching_dict,
|
| - DeviceAdded,
|
| - this,
|
| + ret = IOServiceAddMatchingNotification(port_, kIOFirstMatchNotification,
|
| + matching_dict, DeviceAdded, this,
|
| &device_added_iter);
|
| added_iter->reset(device_added_iter);
|
| if (ret != kIOReturnSuccess) {
|
| @@ -735,11 +696,8 @@ bool XboxDataFetcher::RegisterForDeviceNotifications(
|
|
|
| CFRetain(matching_dict);
|
| io_iterator_t device_removed_iter;
|
| - ret = IOServiceAddMatchingNotification(port_,
|
| - kIOTerminatedNotification,
|
| - matching_dict,
|
| - DeviceRemoved,
|
| - this,
|
| + ret = IOServiceAddMatchingNotification(port_, kIOTerminatedNotification,
|
| + matching_dict, DeviceRemoved, this,
|
| &device_removed_iter);
|
| removed_iter->reset(device_removed_iter);
|
| if (ret != kIOReturnSuccess) {
|
| @@ -763,8 +721,7 @@ void XboxDataFetcher::UnregisterFromNotifications() {
|
|
|
| XboxController* XboxDataFetcher::ControllerForLocation(UInt32 location_id) {
|
| for (std::set<XboxController*>::iterator i = controllers_.begin();
|
| - i != controllers_.end();
|
| - ++i) {
|
| + i != controllers_.end(); ++i) {
|
| if ((*i)->location_id() == location_id)
|
| return *i;
|
| }
|
| @@ -788,8 +745,7 @@ void XboxDataFetcher::RemoveController(XboxController* controller) {
|
| void XboxDataFetcher::RemoveControllerByLocationID(uint32_t location_id) {
|
| XboxController* controller = NULL;
|
| for (std::set<XboxController*>::iterator i = controllers_.begin();
|
| - i != controllers_.end();
|
| - ++i) {
|
| + i != controllers_.end(); ++i) {
|
| if ((*i)->location_id() == location_id) {
|
| controller = *i;
|
| break;
|
|
|