service: irs: Move to IRS namespace and minor fixes

This commit is contained in:
german77 2022-06-19 16:27:48 -05:00
parent 4539700595
commit 097785e19e
20 changed files with 71 additions and 76 deletions

View file

@ -25,6 +25,7 @@ function(copy_yuzu_Qt5_deps target_dir)
Qt5Gui$<$<CONFIG:Debug>:d>.*
Qt5Widgets$<$<CONFIG:Debug>:d>.*
Qt5Multimedia$<$<CONFIG:Debug>:d>.*
Qt5Network$<$<CONFIG:Debug>:d>.*
)
if (YUZU_USE_QT_WEB_ENGINE)

View file

@ -201,11 +201,11 @@ struct PackedClusteringProcessorConfig {
PackedMcuVersion required_mcu_version;
u32 pixel_count_min;
u32 pixel_count_max;
u32 object_intensity_min;
u8 object_intensity_min;
bool is_external_light_filter_enabled;
INSERT_PADDING_BYTES(2);
};
static_assert(sizeof(PackedClusteringProcessorConfig) == 0x30,
static_assert(sizeof(PackedClusteringProcessorConfig) == 0x28,
"PackedClusteringProcessorConfig is an invalid size");
// This is nn::irsensor::PackedImageTransferProcessorConfig
@ -273,12 +273,9 @@ struct HandAnalysisConfig {
};
static_assert(sizeof(HandAnalysisConfig) == 0x4, "HandAnalysisConfig is an invalid size");
// This is nn::irsensor::detail::ProcessorState
// This is nn::irsensor::detail::ProcessorState contents are different for each processor
struct ProcessorState {
u64 start{};
u32 count{};
INSERT_PADDING_BYTES(4);
std::array<u8, 0xE10> processor_raw_data{};
std::array<u8, 0xE20> processor_raw_data{};
};
static_assert(sizeof(ProcessorState) == 0xE20, "ProcessorState is an invalid size");

View file

@ -18,7 +18,11 @@ constexpr Result NpadIsSameType{ErrorModule::HID, 602};
constexpr Result InvalidNpadId{ErrorModule::HID, 709};
constexpr Result NpadNotConnected{ErrorModule::HID, 710};
} // namespace Service::HID
namespace Service::IRS {
constexpr ResultCode InvalidProcessorState{ErrorModule::Irsensor, 78};
constexpr ResultCode InvalidIrCameraHandle{ErrorModule::Irsensor, 204};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -2345,8 +2345,8 @@ void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system
std::make_shared<HidSys>(system)->InstallAsService(service_manager);
std::make_shared<HidTmp>(system)->InstallAsService(service_manager);
std::make_shared<IRS>(system)->InstallAsService(service_manager);
std::make_shared<IRS_SYS>(system)->InstallAsService(service_manager);
std::make_shared<Service::IRS::IRS>(system)->InstallAsService(service_manager);
std::make_shared<Service::IRS::IRS_SYS>(system)->InstallAsService(service_manager);
std::make_shared<XCD_SYS>(system)->InstallAsService(service_manager);
}

View file

@ -22,7 +22,7 @@
#include "core/hle/service/hid/irsensor/tera_plugin_processor.h"
#include "core/memory.h"
namespace Service::HID {
namespace Service::IRS {
IRS::IRS(Core::System& system_) : ServiceFramework{system_, "irs"} {
// clang-format off
@ -60,7 +60,7 @@ void IRS::ActivateIrsensor(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}",
LOG_WARNING(Service_IRS, "(STUBBED) called, applet_resource_user_id={}",
applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
@ -71,7 +71,7 @@ void IRS::DeactivateIrsensor(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.Pop<u64>()};
LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}",
LOG_WARNING(Service_IRS, "(STUBBED) called, applet_resource_user_id={}",
applet_resource_user_id);
IPC::ResponseBuilder rb{ctx, 2};
@ -153,7 +153,7 @@ void IRS::RunClusteringProcessor(Kernel::HLERequestContext& ctx) {
u64 applet_resource_user_id;
Core::IrSensor::PackedClusteringProcessorConfig processor_config;
};
static_assert(sizeof(Parameters) == 0x40, "Parameters has incorrect size.");
static_assert(sizeof(Parameters) == 0x38, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
@ -194,7 +194,7 @@ void IRS::RunImageTransferProcessor(Kernel::HLERequestContext& ctx) {
system.CurrentProcess()->GetHandleTable().GetObject<Kernel::KTransferMemory>(t_mem_handle);
if (t_mem.IsNull()) {
LOG_ERROR(Service_HID, "t_mem is a nullptr for handle=0x{:08X}", t_mem_handle);
LOG_ERROR(Service_IRS, "t_mem is a nullptr for handle=0x{:08X}", t_mem_handle);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultUnknown);
return;
@ -268,24 +268,32 @@ void IRS::GetImageTransferProcessorState(Kernel::HLERequestContext& ctx) {
void IRS::RunTeraPluginProcessor(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto camera_handle{rp.PopRaw<Core::IrSensor::IrCameraHandle>()};
const auto processor_config{rp.PopRaw<Core::IrSensor::PackedTeraPluginProcessorConfig>()};
const auto applet_resource_user_id{rp.Pop<u64>()};
struct Parameters {
Core::IrSensor::IrCameraHandle camera_handle;
Core::IrSensor::PackedTeraPluginProcessorConfig processor_config;
INSERT_PADDING_WORDS_NOINIT(1);
u64 applet_resource_user_id;
};
static_assert(sizeof(Parameters) == 0x18, "Parameters has incorrect size.");
LOG_WARNING(Service_IRS,
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(
Service_IRS,
"(STUBBED) called, npad_type={}, npad_id={}, mode={}, mcu_version={}.{}, "
"applet_resource_user_id={}",
camera_handle.npad_type, camera_handle.npad_id, processor_config.mode,
processor_config.required_mcu_version.major,
processor_config.required_mcu_version.minor, applet_resource_user_id);
parameters.camera_handle.npad_type, parameters.camera_handle.npad_id,
parameters.processor_config.mode, parameters.processor_config.required_mcu_version.major,
parameters.processor_config.required_mcu_version.minor, parameters.applet_resource_user_id);
const auto result = IsIrCameraHandleValid(camera_handle);
const auto result = IsIrCameraHandleValid(parameters.camera_handle);
if (result.IsSuccess()) {
auto& device = GetIrCameraSharedMemoryDeviceEntry(camera_handle);
MakeProcessor<TeraPluginProcessor>(camera_handle, device);
auto& image_transfer_processor = GetProcessor<TeraPluginProcessor>(camera_handle);
image_transfer_processor.SetConfig(processor_config);
auto& device = GetIrCameraSharedMemoryDeviceEntry(parameters.camera_handle);
MakeProcessor<TeraPluginProcessor>(parameters.camera_handle, device);
auto& image_transfer_processor =
GetProcessor<TeraPluginProcessor>(parameters.camera_handle);
image_transfer_processor.SetConfig(parameters.processor_config);
}
IPC::ResponseBuilder rb{ctx, 2};
@ -299,7 +307,7 @@ void IRS::GetNpadIrCameraHandle(Kernel::HLERequestContext& ctx) {
if (npad_id > Core::HID::NpadIdType::Player8 && npad_id != Core::HID::NpadIdType::Invalid &&
npad_id != Core::HID::NpadIdType::Handheld) {
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(InvalidNpadId);
rb.Push(Service::HID::InvalidNpadId);
return;
}
@ -553,4 +561,4 @@ IRS_SYS::IRS_SYS(Core::System& system_) : ServiceFramework{system_, "irs:sys"} {
IRS_SYS::~IRS_SYS() = default;
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -16,7 +16,7 @@ namespace Core::HID {
class EmulatedController;
} // namespace Core::HID
namespace Service::HID {
namespace Service::IRS {
class IRS final : public ServiceFramework<IRS> {
public:
@ -114,4 +114,4 @@ public:
~IRS_SYS() override;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,14 +3,12 @@
#include "core/hle/service/hid/irsensor/clustering_processor.h"
namespace Service::HID {
namespace Service::IRS {
ClusteringProcessor::ClusteringProcessor(Core::IrSensor::DeviceFormat& device_format)
: device(device_format) {
device.mode = Core::IrSensor::IrSensorMode::ClusteringProcessor;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
ClusteringProcessor::~ClusteringProcessor() = default;
@ -33,4 +31,4 @@ void ClusteringProcessor::SetConfig(Core::IrSensor::PackedClusteringProcessorCon
current_config.object_intensity_min = config.object_intensity_min;
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -7,7 +7,7 @@
#include "core/hid/irs_types.h"
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
class ClusteringProcessor final : public ProcessorBase {
public:
explicit ClusteringProcessor(Core::IrSensor::DeviceFormat& device_format);
@ -71,4 +71,4 @@ private:
ClusteringProcessorConfig current_config{};
Core::IrSensor::DeviceFormat& device;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -5,7 +5,7 @@
#include "core/hid/hid_core.h"
#include "core/hle/service/hid/irsensor/image_transfer_processor.h"
namespace Service::HID {
namespace Service::IRS {
ImageTransferProcessor::ImageTransferProcessor(Core::HID::HIDCore& hid_core_,
Core::IrSensor::DeviceFormat& device_format,
std::size_t npad_index)
@ -21,8 +21,6 @@ ImageTransferProcessor::ImageTransferProcessor(Core::HID::HIDCore& hid_core_,
device.mode = Core::IrSensor::IrSensorMode::ImageTransferProcessor;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
ImageTransferProcessor::~ImageTransferProcessor() {
@ -33,8 +31,6 @@ void ImageTransferProcessor::StartProcessor() {
is_active = true;
device.camera_status = Core::IrSensor::IrCameraStatus::Available;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Ready;
device.state.start = 0;
device.state.count = 1;
processor_state.sampling_number = 0;
processor_state.ambient_noise_level = Core::IrSensor::CameraAmbientNoiseLevel::Low;
}
@ -151,4 +147,4 @@ Core::IrSensor::ImageTransferProcessorState ImageTransferProcessor::GetState(
return processor_state;
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -11,7 +11,7 @@ namespace Core::HID {
class EmulatedController;
} // namespace Core::HID
namespace Service::HID {
namespace Service::IRS {
class ImageTransferProcessor final : public ProcessorBase {
public:
explicit ImageTransferProcessor(Core::HID::HIDCore& hid_core_,
@ -70,4 +70,4 @@ private:
u8* transfer_memory = nullptr;
bool is_transfer_memory_set = false;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,14 +3,12 @@
#include "core/hle/service/hid/irsensor/ir_led_processor.h"
namespace Service::HID {
namespace Service::IRS {
IrLedProcessor::IrLedProcessor(Core::IrSensor::DeviceFormat& device_format)
: device(device_format) {
device.mode = Core::IrSensor::IrSensorMode::IrLedProcessor;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
IrLedProcessor::~IrLedProcessor() = default;
@ -26,4 +24,4 @@ void IrLedProcessor::SetConfig(Core::IrSensor::PackedIrLedProcessorConfig config
static_cast<Core::IrSensor::CameraLightTarget>(config.light_target);
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -8,7 +8,7 @@
#include "core/hid/irs_types.h"
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
class IrLedProcessor final : public ProcessorBase {
public:
explicit IrLedProcessor(Core::IrSensor::DeviceFormat& device_format);
@ -44,4 +44,4 @@ private:
Core::IrSensor::DeviceFormat& device;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,14 +3,12 @@
#include "core/hle/service/hid/irsensor/moment_processor.h"
namespace Service::HID {
namespace Service::IRS {
MomentProcessor::MomentProcessor(Core::IrSensor::DeviceFormat& device_format)
: device(device_format) {
device.mode = Core::IrSensor::IrSensorMode::MomentProcessor;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
MomentProcessor::~MomentProcessor() = default;
@ -33,4 +31,4 @@ void MomentProcessor::SetConfig(Core::IrSensor::PackedMomentProcessorConfig conf
current_config.preprocess_intensity_threshold = config.preprocess_intensity_threshold;
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -8,7 +8,7 @@
#include "core/hid/irs_types.h"
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
class MomentProcessor final : public ProcessorBase {
public:
explicit MomentProcessor(Core::IrSensor::DeviceFormat& device_format);
@ -58,4 +58,4 @@ private:
Core::IrSensor::DeviceFormat& device;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,14 +3,12 @@
#include "core/hle/service/hid/irsensor/pointing_processor.h"
namespace Service::HID {
namespace Service::IRS {
PointingProcessor::PointingProcessor(Core::IrSensor::DeviceFormat& device_format)
: device(device_format) {
device.mode = Core::IrSensor::IrSensorMode::PointingProcessorMarker;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
PointingProcessor::~PointingProcessor() = default;
@ -25,4 +23,4 @@ void PointingProcessor::SetConfig(Core::IrSensor::PackedPointingProcessorConfig
current_config.window_of_interest = config.window_of_interest;
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,12 +3,11 @@
#pragma once
#include "common/bit_field.h"
#include "common/common_types.h"
#include "core/hid/irs_types.h"
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
class PointingProcessor final : public ProcessorBase {
public:
explicit PointingProcessor(Core::IrSensor::DeviceFormat& device_format);
@ -59,4 +58,4 @@ private:
Core::IrSensor::DeviceFormat& device;
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,7 +3,7 @@
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
ProcessorBase::ProcessorBase() {}
ProcessorBase::~ProcessorBase() = default;
@ -64,4 +64,4 @@ std::size_t ProcessorBase::GetDataHeight(
}
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -6,7 +6,7 @@
#include "common/common_types.h"
#include "core/hid/irs_types.h"
namespace Service::HID {
namespace Service::IRS {
class ProcessorBase {
public:
explicit ProcessorBase();
@ -30,4 +30,4 @@ protected:
bool is_active{false};
};
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -3,14 +3,12 @@
#include "core/hle/service/hid/irsensor/tera_plugin_processor.h"
namespace Service::HID {
namespace Service::IRS {
TeraPluginProcessor::TeraPluginProcessor(Core::IrSensor::DeviceFormat& device_format)
: device(device_format) {
device.mode = Core::IrSensor::IrSensorMode::TeraPluginProcessor;
device.camera_status = Core::IrSensor::IrCameraStatus::Unconnected;
device.camera_internal_status = Core::IrSensor::IrCameraInternalStatus::Stopped;
device.state.start = 0;
device.state.count = 0;
}
TeraPluginProcessor::~TeraPluginProcessor() = default;
@ -28,4 +26,4 @@ void TeraPluginProcessor::SetConfig(Core::IrSensor::PackedTeraPluginProcessorCon
current_config.unknown_3 = config.unknown_3;
}
} // namespace Service::HID
} // namespace Service::IRS

View file

@ -8,7 +8,7 @@
#include "core/hid/irs_types.h"
#include "core/hle/service/hid/irsensor/processor_base.h"
namespace Service::HID {
namespace Service::IRS {
class TeraPluginProcessor final : public ProcessorBase {
public:
explicit TeraPluginProcessor(Core::IrSensor::DeviceFormat& device_format);
@ -50,4 +50,4 @@ private:
Core::IrSensor::DeviceFormat& device;
};
} // namespace Service::HID
} // namespace Service::IRS