service: nfc: Ensure controller is in the correct mode
This commit is contained in:
parent
95ceae40e6
commit
9cd698e8ad
3 changed files with 41 additions and 11 deletions
|
@ -1243,10 +1243,12 @@ Common::Input::DriverResult EmulatedController::SetPollingMode(
|
|||
auto& nfc_output_device = output_devices[3];
|
||||
|
||||
if (device_index == EmulatedDeviceIndex::LeftIndex) {
|
||||
controller.left_polling_mode = polling_mode;
|
||||
return left_output_device->SetPollingMode(polling_mode);
|
||||
}
|
||||
|
||||
if (device_index == EmulatedDeviceIndex::RightIndex) {
|
||||
controller.right_polling_mode = polling_mode;
|
||||
const auto virtual_nfc_result = nfc_output_device->SetPollingMode(polling_mode);
|
||||
const auto mapped_nfc_result = right_output_device->SetPollingMode(polling_mode);
|
||||
|
||||
|
@ -1261,12 +1263,22 @@ Common::Input::DriverResult EmulatedController::SetPollingMode(
|
|||
return mapped_nfc_result;
|
||||
}
|
||||
|
||||
controller.left_polling_mode = polling_mode;
|
||||
controller.right_polling_mode = polling_mode;
|
||||
left_output_device->SetPollingMode(polling_mode);
|
||||
right_output_device->SetPollingMode(polling_mode);
|
||||
nfc_output_device->SetPollingMode(polling_mode);
|
||||
return Common::Input::DriverResult::Success;
|
||||
}
|
||||
|
||||
Common::Input::PollingMode EmulatedController::GetPollingMode(
|
||||
EmulatedDeviceIndex device_index) const {
|
||||
if (device_index == EmulatedDeviceIndex::LeftIndex) {
|
||||
return controller.left_polling_mode;
|
||||
}
|
||||
return controller.right_polling_mode;
|
||||
}
|
||||
|
||||
bool EmulatedController::SetCameraFormat(
|
||||
Core::IrSensor::ImageTransferProcessorFormat camera_format) {
|
||||
LOG_INFO(Service_HID, "Set camera format {}", camera_format);
|
||||
|
|
|
@ -143,6 +143,8 @@ struct ControllerStatus {
|
|||
CameraState camera_state{};
|
||||
RingSensorForce ring_analog_state{};
|
||||
NfcState nfc_state{};
|
||||
Common::Input::PollingMode left_polling_mode{};
|
||||
Common::Input::PollingMode right_polling_mode{};
|
||||
};
|
||||
|
||||
enum class ControllerTriggerType {
|
||||
|
@ -370,6 +372,12 @@ public:
|
|||
*/
|
||||
Common::Input::DriverResult SetPollingMode(EmulatedDeviceIndex device_index,
|
||||
Common::Input::PollingMode polling_mode);
|
||||
/**
|
||||
* Get the current polling mode from a controller
|
||||
* @param device_index index of the controller to set the polling mode
|
||||
* @return current polling mode
|
||||
*/
|
||||
Common::Input::PollingMode GetPollingMode(EmulatedDeviceIndex device_index) const;
|
||||
|
||||
/**
|
||||
* Sets the desired camera format to be polled from a controller
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue