18 #include "PlatformDefs.h"    20 #include "utils/StringUtils.h"    32 constexpr 
auto JOYSTICK_NO_PORT_REQUESTED = -1;
    34 enum PeripheralBusType
    36   PERIPHERAL_BUS_UNKNOWN = 0,
    42   PERIPHERAL_BUS_ANDROID,
    44 #if defined(TARGET_DARWIN)    45   PERIPHERAL_BUS_GCCONTROLLER,
    47   PERIPHERAL_BUS_APPLICATION,
    50 enum PeripheralFeature
    70   PERIPHERAL_UNKNOWN = 0,
    85 using PeripheralPtr = std::shared_ptr<CPeripheral>;
    86 using PeripheralVector = std::vector<PeripheralPtr>;
    88 class CPeripheralAddon;
    89 using PeripheralAddonPtr = std::shared_ptr<CPeripheralAddon>;
    90 using PeripheralAddonVector = std::vector<PeripheralAddonPtr>;
    92 class CEventPollHandle;
    93 using EventPollHandlePtr = std::unique_ptr<CEventPollHandle>;
    95 class CEventLockHandle;
    96 using EventLockHandlePtr = std::unique_ptr<CEventLockHandle>;
   106   std::shared_ptr<CSetting> m_setting;
   112   std::vector<PeripheralID> m_PeripheralID;
   113   PeripheralBusType m_busType;
   114   PeripheralType m_class;
   115   std::string m_strDeviceName;
   116   PeripheralType m_mappedTo;
   117   std::map<std::string, PeripheralDeviceSetting> m_settings;
   123   static const char* TypeToString(
const PeripheralType type)
   127       case PERIPHERAL_BLUETOOTH:
   131       case PERIPHERAL_DISK:
   137       case PERIPHERAL_NYXBOARD:
   139       case PERIPHERAL_TUNER:
   141       case PERIPHERAL_IMON:
   143       case PERIPHERAL_JOYSTICK:
   145       case PERIPHERAL_KEYBOARD:
   147       case PERIPHERAL_MOUSE:
   154   static PeripheralType GetTypeFromString(
const std::string& strType)
   156     std::string strTypeLowerCase(strType);
   157     StringUtils::ToLower(strTypeLowerCase);
   159     if (strTypeLowerCase == 
"bluetooth")
   160       return PERIPHERAL_BLUETOOTH;
   161     else if (strTypeLowerCase == 
"cec")
   162       return PERIPHERAL_CEC;
   163     else if (strTypeLowerCase == 
"disk")
   164       return PERIPHERAL_DISK;
   165     else if (strTypeLowerCase == 
"hid")
   166       return PERIPHERAL_HID;
   167     else if (strTypeLowerCase == 
"nic")
   168       return PERIPHERAL_NIC;
   169     else if (strTypeLowerCase == 
"nyxboard")
   170       return PERIPHERAL_NYXBOARD;
   171     else if (strTypeLowerCase == 
"tuner")
   172       return PERIPHERAL_TUNER;
   173     else if (strTypeLowerCase == 
"imon")
   174       return PERIPHERAL_IMON;
   175     else if (strTypeLowerCase == 
"joystick")
   176       return PERIPHERAL_JOYSTICK;
   177     else if (strTypeLowerCase == 
"keyboard")
   178       return PERIPHERAL_KEYBOARD;
   179     else if (strTypeLowerCase == 
"mouse")
   180       return PERIPHERAL_MOUSE;
   182     return PERIPHERAL_UNKNOWN;
   185   static const char* BusTypeToString(
const PeripheralBusType type)
   189       case PERIPHERAL_BUS_USB:
   191       case PERIPHERAL_BUS_PCI:
   193       case PERIPHERAL_BUS_CEC:
   195       case PERIPHERAL_BUS_ADDON:
   197 #ifdef TARGET_ANDROID   198       case PERIPHERAL_BUS_ANDROID:
   201 #if defined(TARGET_DARWIN)   202       case PERIPHERAL_BUS_GCCONTROLLER:
   203         return "darwin_gccontroller";
   205       case PERIPHERAL_BUS_APPLICATION:
   206         return "application";
   212   static PeripheralBusType GetBusTypeFromString(
const std::string& strType)
   214     std::string strTypeLowerCase(strType);
   215     StringUtils::ToLower(strTypeLowerCase);
   217     if (strTypeLowerCase == 
"usb")
   218       return PERIPHERAL_BUS_USB;
   219     else if (strTypeLowerCase == 
"pci")
   220       return PERIPHERAL_BUS_PCI;
   221     else if (strTypeLowerCase == 
"cec")
   222       return PERIPHERAL_BUS_CEC;
   223     else if (strTypeLowerCase == 
"addon")
   224       return PERIPHERAL_BUS_ADDON;
   225 #ifdef TARGET_ANDROID   226     else if (strTypeLowerCase == 
"android")
   227       return PERIPHERAL_BUS_ANDROID;
   229 #if defined(TARGET_DARWIN)   230     else if (strTypeLowerCase == 
"darwin_gccontroller")
   231       return PERIPHERAL_BUS_GCCONTROLLER;
   233     else if (strTypeLowerCase == 
"application")
   234       return PERIPHERAL_BUS_APPLICATION;
   236     return PERIPHERAL_BUS_UNKNOWN;
   239   static const char* FeatureToString(
const PeripheralFeature type)
   249       case FEATURE_NYXBOARD:
   253       case FEATURE_BLUETOOTH:
   259       case FEATURE_JOYSTICK:
   263       case FEATURE_POWER_OFF:
   265       case FEATURE_KEYBOARD:
   269       case FEATURE_UNKNOWN:
   275   static PeripheralFeature GetFeatureTypeFromString(
const std::string& strType)
   277     std::string strTypeLowerCase(strType);
   278     StringUtils::ToLower(strTypeLowerCase);
   280     if (strTypeLowerCase == 
"hid")
   282     else if (strTypeLowerCase == 
"cec")
   284     else if (strTypeLowerCase == 
"disk")
   286     else if (strTypeLowerCase == 
"nyxboard")
   287       return FEATURE_NYXBOARD;
   288     else if (strTypeLowerCase == 
"bluetooth")
   289       return FEATURE_BLUETOOTH;
   290     else if (strTypeLowerCase == 
"tuner")
   291       return FEATURE_TUNER;
   292     else if (strTypeLowerCase == 
"imon")
   294     else if (strTypeLowerCase == 
"joystick")
   295       return FEATURE_JOYSTICK;
   296     else if (strTypeLowerCase == 
"rumble")
   297       return FEATURE_RUMBLE;
   298     else if (strTypeLowerCase == 
"poweroff")
   299       return FEATURE_POWER_OFF;
   300     else if (strTypeLowerCase == 
"keyboard")
   301       return FEATURE_KEYBOARD;
   302     else if (strTypeLowerCase == 
"mouse")
   303       return FEATURE_MOUSE;
   305     return FEATURE_UNKNOWN;
   308   static int HexStringToInt(
const char* strHex)
   311     sscanf(strHex, 
"%x", &iVal);
   315   static void FormatHexString(
int iVal, std::string& strHexString)
   330     : m_busType(busType), m_mappedBusType(busType)
   338     return m_iVendorId == right.m_iVendorId && m_iProductId == right.m_iProductId &&
   339            m_type == right.m_type && m_busType == right.m_busType &&
   340            StringUtils::EqualsNoCase(m_strLocation, right.m_strLocation);
   345   PeripheralType m_type = PERIPHERAL_UNKNOWN;
   346   std::string m_strLocation;
   348   int m_iProductId = 0;
   349   PeripheralType m_mappedType = PERIPHERAL_UNKNOWN;
   350   std::string m_strDeviceName;
   351   PeripheralBusType m_busType = PERIPHERAL_BUS_UNKNOWN;
   352   PeripheralBusType m_mappedBusType = PERIPHERAL_BUS_UNKNOWN;
   353   unsigned int m_iSequence = 0; 
   360     for (
const auto& it : m_results)
   362       if (it.m_strLocation == strLocation)
   373     return std::find(m_results.begin(), m_results.end(), result) != m_results.end();
   376   std::vector<PeripheralScanResult> m_results;
 Definition: PeripheralTypes.h:356
Definition: PeripheralTypes.h:326
Definition: RetroPlayerInput.h:15
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
Definition: PeripheralTypes.h:98
Definition: PeripheralTypes.h:104
Definition: PeripheralTypes.h:120
static std::string Format(const std::string &fmt, Args &&... args)
Get a formatted string similar to sprintf. 
Definition: StringUtils.h:79
Definition: PeripheralTypes.h:110