Home | History | Annotate | Download | only in hid
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "device/hid/hid_utils_mac.h"
      6 
      7 #include "base/mac/foundation_util.h"
      8 #include "base/strings/sys_string_conversions.h"
      9 
     10 namespace device {
     11 
     12 int32_t GetHidIntProperty(IOHIDDeviceRef device, CFStringRef key) {
     13   int32_t value;
     14   if (TryGetHidIntProperty(device, key, &value))
     15     return value;
     16   return 0;
     17 }
     18 
     19 std::string GetHidStringProperty(IOHIDDeviceRef device, CFStringRef key) {
     20   std::string value;
     21   TryGetHidStringProperty(device, key, &value);
     22   return value;
     23 }
     24 
     25 bool TryGetHidIntProperty(IOHIDDeviceRef device,
     26                           CFStringRef key,
     27                           int32_t* result) {
     28   CFNumberRef ref = base::mac::CFCast<CFNumberRef>(
     29       IOHIDDeviceGetProperty(device, key));
     30   return ref && CFNumberGetValue(ref, kCFNumberSInt32Type, result);
     31 }
     32 
     33 bool TryGetHidStringProperty(IOHIDDeviceRef device,
     34                              CFStringRef key,
     35                              std::string* result) {
     36   CFStringRef ref = base::mac::CFCast<CFStringRef>(
     37       IOHIDDeviceGetProperty(device, key));
     38   if (!ref) {
     39     return false;
     40   }
     41   *result = base::SysCFStringRefToUTF8(ref);
     42   return true;
     43 }
     44 
     45 }  // namespace device
     46