18 #include "PlatformDefs.h" 20 #include "utils/StringUtils.h" 26 enum PeripheralBusType
28 PERIPHERAL_BUS_UNKNOWN = 0,
34 PERIPHERAL_BUS_ANDROID,
36 #if defined(TARGET_DARWIN) 37 PERIPHERAL_BUS_GCCONTROLLER,
39 PERIPHERAL_BUS_APPLICATION,
42 enum PeripheralFeature
62 PERIPHERAL_UNKNOWN = 0,
77 using PeripheralPtr = std::shared_ptr<CPeripheral>;
78 using PeripheralVector = std::vector<PeripheralPtr>;
80 class CPeripheralAddon;
81 using PeripheralAddonPtr = std::shared_ptr<CPeripheralAddon>;
82 using PeripheralAddonVector = std::vector<PeripheralAddonPtr>;
84 class CEventPollHandle;
85 using EventPollHandlePtr = std::unique_ptr<CEventPollHandle>;
87 class CEventLockHandle;
88 using EventLockHandlePtr = std::unique_ptr<CEventLockHandle>;
98 std::shared_ptr<CSetting> m_setting;
104 std::vector<PeripheralID> m_PeripheralID;
105 PeripheralBusType m_busType;
106 PeripheralType m_class;
107 std::string m_strDeviceName;
108 PeripheralType m_mappedTo;
109 std::map<std::string, PeripheralDeviceSetting> m_settings;
115 static const char* TypeToString(
const PeripheralType type)
119 case PERIPHERAL_BLUETOOTH:
123 case PERIPHERAL_DISK:
129 case PERIPHERAL_NYXBOARD:
131 case PERIPHERAL_TUNER:
133 case PERIPHERAL_IMON:
135 case PERIPHERAL_JOYSTICK:
137 case PERIPHERAL_KEYBOARD:
139 case PERIPHERAL_MOUSE:
146 static PeripheralType GetTypeFromString(
const std::string& strType)
148 std::string strTypeLowerCase(strType);
149 StringUtils::ToLower(strTypeLowerCase);
151 if (strTypeLowerCase ==
"bluetooth")
152 return PERIPHERAL_BLUETOOTH;
153 else if (strTypeLowerCase ==
"cec")
154 return PERIPHERAL_CEC;
155 else if (strTypeLowerCase ==
"disk")
156 return PERIPHERAL_DISK;
157 else if (strTypeLowerCase ==
"hid")
158 return PERIPHERAL_HID;
159 else if (strTypeLowerCase ==
"nic")
160 return PERIPHERAL_NIC;
161 else if (strTypeLowerCase ==
"nyxboard")
162 return PERIPHERAL_NYXBOARD;
163 else if (strTypeLowerCase ==
"tuner")
164 return PERIPHERAL_TUNER;
165 else if (strTypeLowerCase ==
"imon")
166 return PERIPHERAL_IMON;
167 else if (strTypeLowerCase ==
"joystick")
168 return PERIPHERAL_JOYSTICK;
169 else if (strTypeLowerCase ==
"keyboard")
170 return PERIPHERAL_KEYBOARD;
171 else if (strTypeLowerCase ==
"mouse")
172 return PERIPHERAL_MOUSE;
174 return PERIPHERAL_UNKNOWN;
177 static const char* BusTypeToString(
const PeripheralBusType type)
181 case PERIPHERAL_BUS_USB:
183 case PERIPHERAL_BUS_PCI:
185 case PERIPHERAL_BUS_CEC:
187 case PERIPHERAL_BUS_ADDON:
189 #ifdef TARGET_ANDROID 190 case PERIPHERAL_BUS_ANDROID:
193 #if defined(TARGET_DARWIN) 194 case PERIPHERAL_BUS_GCCONTROLLER:
195 return "darwin_gccontroller";
197 case PERIPHERAL_BUS_APPLICATION:
198 return "application";
204 static PeripheralBusType GetBusTypeFromString(
const std::string& strType)
206 std::string strTypeLowerCase(strType);
207 StringUtils::ToLower(strTypeLowerCase);
209 if (strTypeLowerCase ==
"usb")
210 return PERIPHERAL_BUS_USB;
211 else if (strTypeLowerCase ==
"pci")
212 return PERIPHERAL_BUS_PCI;
213 else if (strTypeLowerCase ==
"cec")
214 return PERIPHERAL_BUS_CEC;
215 else if (strTypeLowerCase ==
"addon")
216 return PERIPHERAL_BUS_ADDON;
217 #ifdef TARGET_ANDROID 218 else if (strTypeLowerCase ==
"android")
219 return PERIPHERAL_BUS_ANDROID;
221 #if defined(TARGET_DARWIN) 222 else if (strTypeLowerCase ==
"darwin_gccontroller")
223 return PERIPHERAL_BUS_GCCONTROLLER;
225 else if (strTypeLowerCase ==
"application")
226 return PERIPHERAL_BUS_APPLICATION;
228 return PERIPHERAL_BUS_UNKNOWN;
231 static const char* FeatureToString(
const PeripheralFeature type)
241 case FEATURE_NYXBOARD:
245 case FEATURE_BLUETOOTH:
251 case FEATURE_JOYSTICK:
255 case FEATURE_POWER_OFF:
257 case FEATURE_KEYBOARD:
261 case FEATURE_UNKNOWN:
267 static PeripheralFeature GetFeatureTypeFromString(
const std::string& strType)
269 std::string strTypeLowerCase(strType);
270 StringUtils::ToLower(strTypeLowerCase);
272 if (strTypeLowerCase ==
"hid")
274 else if (strTypeLowerCase ==
"cec")
276 else if (strTypeLowerCase ==
"disk")
278 else if (strTypeLowerCase ==
"nyxboard")
279 return FEATURE_NYXBOARD;
280 else if (strTypeLowerCase ==
"bluetooth")
281 return FEATURE_BLUETOOTH;
282 else if (strTypeLowerCase ==
"tuner")
283 return FEATURE_TUNER;
284 else if (strTypeLowerCase ==
"imon")
286 else if (strTypeLowerCase ==
"joystick")
287 return FEATURE_JOYSTICK;
288 else if (strTypeLowerCase ==
"rumble")
289 return FEATURE_RUMBLE;
290 else if (strTypeLowerCase ==
"poweroff")
291 return FEATURE_POWER_OFF;
292 else if (strTypeLowerCase ==
"keyboard")
293 return FEATURE_KEYBOARD;
294 else if (strTypeLowerCase ==
"mouse")
295 return FEATURE_MOUSE;
297 return FEATURE_UNKNOWN;
300 static int HexStringToInt(
const char* strHex)
303 sscanf(strHex,
"%x", &iVal);
307 static void FormatHexString(
int iVal, std::string& strHexString)
322 : m_busType(busType), m_mappedBusType(busType)
330 return m_iVendorId == right.m_iVendorId && m_iProductId == right.m_iProductId &&
331 m_type == right.m_type && m_busType == right.m_busType &&
332 StringUtils::EqualsNoCase(m_strLocation, right.m_strLocation);
337 PeripheralType m_type = PERIPHERAL_UNKNOWN;
338 std::string m_strLocation;
340 int m_iProductId = 0;
341 PeripheralType m_mappedType = PERIPHERAL_UNKNOWN;
342 std::string m_strDeviceName;
343 PeripheralBusType m_busType = PERIPHERAL_BUS_UNKNOWN;
344 PeripheralBusType m_mappedBusType = PERIPHERAL_BUS_UNKNOWN;
345 unsigned int m_iSequence = 0;
352 for (
const auto& it : m_results)
354 if (it.m_strLocation == strLocation)
365 return std::find(m_results.begin(), m_results.end(), result) != m_results.end();
368 std::vector<PeripheralScanResult> m_results;
Definition: PeripheralTypes.h:348
Definition: PeripheralTypes.h:318
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:90
Definition: PeripheralTypes.h:96
Definition: PeripheralTypes.h:112
static std::string Format(const std::string &fmt, Args &&... args)
Get a formatted string similar to sprintf.
Definition: StringUtils.h:79
Definition: PeripheralTypes.h:102