diff options
author | german77 <juangerman-13@hotmail.com> | 2022-06-19 06:45:06 +0200 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2022-07-24 02:40:25 +0200 |
commit | 453970059528d564d9ef88f7f9096c05946fbefe (patch) | |
tree | 3b1a43e8dd51e5c03204108ac72c4cd33d5361c0 /src/core/hle/service/hid/irsensor/pointing_processor.h | |
parent | core: hid: Add cammera support (diff) | |
download | yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar.gz yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar.bz2 yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar.lz yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar.xz yuzu-453970059528d564d9ef88f7f9096c05946fbefe.tar.zst yuzu-453970059528d564d9ef88f7f9096c05946fbefe.zip |
Diffstat (limited to 'src/core/hle/service/hid/irsensor/pointing_processor.h')
-rw-r--r-- | src/core/hle/service/hid/irsensor/pointing_processor.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/core/hle/service/hid/irsensor/pointing_processor.h b/src/core/hle/service/hid/irsensor/pointing_processor.h new file mode 100644 index 000000000..2f67eff91 --- /dev/null +++ b/src/core/hle/service/hid/irsensor/pointing_processor.h @@ -0,0 +1,62 @@ +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#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 { +class PointingProcessor final : public ProcessorBase { +public: + explicit PointingProcessor(Core::IrSensor::DeviceFormat& device_format); + ~PointingProcessor() override; + + // Called when the processor is initialized + void StartProcessor() override; + + // Called when the processor is suspended + void SuspendProcessor() override; + + // Called when the processor is stopped + void StopProcessor() override; + + // Sets config parameters of the camera + void SetConfig(Core::IrSensor::PackedPointingProcessorConfig config); + +private: + // This is nn::irsensor::PointingProcessorConfig + struct PointingProcessorConfig { + Core::IrSensor::IrsRect window_of_interest; + }; + static_assert(sizeof(PointingProcessorConfig) == 0x8, + "PointingProcessorConfig is an invalid size"); + + struct PointingProcessorMarkerData { + u8 pointing_status; + INSERT_PADDING_BYTES(3); + u32 unknown; + float unkown_float1; + float position_x; + float position_y; + float unkown_float2; + Core::IrSensor::IrsRect window_of_interest; + }; + static_assert(sizeof(PointingProcessorMarkerData) == 0x20, + "PointingProcessorMarkerData is an invalid size"); + + struct PointingProcessorMarkerState { + s64 sampling_number; + u64 timestamp; + std::array<PointingProcessorMarkerData, 0x3> data; + }; + static_assert(sizeof(PointingProcessorMarkerState) == 0x70, + "PointingProcessorMarkerState is an invalid size"); + + PointingProcessorConfig current_config{}; + Core::IrSensor::DeviceFormat& device; +}; + +} // namespace Service::HID |