bool CPeripheralAddon::GetIgnoredPrimitives(const CPeripheral* device, PrimitiveVector& primitives) { if (!m_bProvidesButtonMaps) return false; PERIPHERAL_ERROR retVal; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); unsigned int primitiveCount = 0; JOYSTICK_DRIVER_PRIMITIVE* pPrimitives = nullptr; LogError(retVal = m_pStruct->GetIgnoredPrimitives(&joystickStruct, &primitiveCount, &pPrimitives), "GetIgnoredPrimitives()"); if (retVal == PERIPHERAL_NO_ERROR) { for (unsigned int i = 0; i < primitiveCount; i++) primitives.emplace_back(pPrimitives[i]); m_pStruct->FreePrimitives(primitiveCount, pPrimitives); return true; } return false; }
bool CPeripheralAddon::MapFeature(const CPeripheral* device, const std::string& strControllerId, const ADDON::JoystickFeature& feature) { if (!m_bProvidesButtonMaps) return false; PERIPHERAL_ERROR retVal; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); JOYSTICK_FEATURE addonFeature; feature.ToStruct(addonFeature); try { LogError(retVal = m_pStruct->MapFeatures(&joystickStruct, strControllerId.c_str(), 1, &addonFeature), "MapFeatures()"); } catch (std::exception &e) { LogException(e, "MapFeatures()"); return false; } if (retVal == PERIPHERAL_NO_ERROR) { // Notify observing button maps RefreshButtonMaps(device->DeviceName()); } return retVal == PERIPHERAL_NO_ERROR; }
bool CPeripheralAddon::SetIgnoredPrimitives(const CPeripheral* device, const PrimitiveVector& primitives) { if (!m_bProvidesButtonMaps) return false; PERIPHERAL_ERROR retVal; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); JOYSTICK_DRIVER_PRIMITIVE* addonPrimitives = nullptr; ADDON::DriverPrimitives::ToStructs(primitives, &addonPrimitives); try { LogError(retVal = m_pStruct->SetIgnoredPrimitives(&joystickStruct, primitives.size(), addonPrimitives), "SetIgnoredPrimitives()"); } catch (std::exception &e) { LogException(e, "SetIgnoredPrimitives()"); return false; } ADDON::DriverPrimitives::FreeStructs(primitives.size(), addonPrimitives); return retVal == PERIPHERAL_NO_ERROR; }
void CPeripheralAddon::RevertButtonMap(const CPeripheral* device) { if (!m_bProvidesButtonMaps) return; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); m_pStruct->RevertButtonMap(&joystickStruct); }
void CPeripheralAddon::SaveButtonMap(const CPeripheral* device) { if (!m_bProvidesButtonMaps) return; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); try { m_pStruct->SaveButtonMap(&joystickStruct); } catch (std::exception &e) { LogException(e, "SaveMap()"); return; } }
void CPeripheralAddon::ResetButtonMap(const CPeripheral* device, const std::string& strControllerId) { if (!m_bProvidesButtonMaps) return; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); m_pStruct->ResetButtonMap(&joystickStruct, strControllerId.c_str()); // Notify observing button maps RefreshButtonMaps(device->DeviceName()); }
void CPeripheralAddon::SaveButtonMap(const CPeripheral* device) { if (!m_bProvidesButtonMaps) return; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); m_pStruct->SaveButtonMap(&joystickStruct); // Notify observing button maps RefreshButtonMaps(device->DeviceName()); }
bool CPeripheralAddon::MapFeature(const CPeripheral* device, const std::string& strControllerId, const ADDON::JoystickFeature& feature) { if (!m_bProvidesButtonMaps) return false; PERIPHERAL_ERROR retVal; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); JOYSTICK_FEATURE addonFeature; feature.ToStruct(addonFeature); LogError(retVal = m_pStruct->MapFeatures(&joystickStruct, strControllerId.c_str(), 1, &addonFeature), "MapFeatures()"); return retVal == PERIPHERAL_NO_ERROR; }
bool CPeripheralAddon::GetFeatures(const CPeripheral* device, const std::string& strControllerId, FeatureMap& features) { if (!m_bProvidesButtonMaps) return false; PERIPHERAL_ERROR retVal; ADDON::Joystick joystickInfo; GetJoystickInfo(device, joystickInfo); JOYSTICK_INFO joystickStruct; joystickInfo.ToStruct(joystickStruct); unsigned int featureCount = 0; JOYSTICK_FEATURE* pFeatures = NULL; try { LogError(retVal = m_pStruct->GetFeatures(&joystickStruct, strControllerId.c_str(), &featureCount, &pFeatures), "GetFeatures()"); } catch (std::exception &e) { LogException(e, "GetFeatures()"); return false; } if (retVal == PERIPHERAL_NO_ERROR) { for (unsigned int i = 0; i < featureCount; i++) { ADDON::JoystickFeature feature(pFeatures[i]); if (feature.Type() != JOYSTICK_FEATURE_TYPE_UNKNOWN) features[feature.Name()] = std::move(feature); } try { m_pStruct->FreeFeatures(featureCount, pFeatures); } catch (std::exception &e) { LogException(e, "FreeFeatures()"); } return true; } return false; }