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