diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/service/cam/cam.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/src/core/hle/service/cam/cam.h b/src/core/hle/service/cam/cam.h index 83cfe6411..2f4923728 100644 --- a/src/core/hle/service/cam/cam.h +++ b/src/core/hle/service/cam/cam.h @@ -190,24 +190,241 @@ struct PackageParameterCameraSelect { static_assert(sizeof(PackageParameterCameraSelect) == 28, "PackageParameterCameraSelect structure size is wrong"); +/** + * Unknown + * Inputs: + * 0: 0x00010040 + * 1: u8 Camera port (`Port` enum) + * Outputs: + * 0: 0x00010040 + * 1: ResultCode + */ void StartCapture(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00020040 + * 1: u8 Camera port (`Port` enum) + * Outputs: + * 0: 0x00020040 + * 1: ResultCode + */ void StopCapture(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00050040 + * 1: u8 Camera port (`Port` enum) + * Outputs: + * 0: 0x00050042 + * 1: ResultCode + * 2: Descriptor: Handle + * 3: Event handle + */ void GetVsyncInterruptEvent(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00060040 + * 1: u8 Camera port (`Port` enum) + * Outputs: + * 0: 0x00060042 + * 1: ResultCode + * 2: Descriptor: Handle + * 3: Event handle + */ void GetBufferErrorInterruptEvent(Service::Interface* self); + +/** + * Sets the target buffer to receive a frame of image data and starts the transfer. Each camera + * port has its own event to signal the end of the transfer. + * + * Inputs: + * 0: 0x00070102 + * 1: Destination address in calling process + * 2: u8 Camera port (`Port` enum) + * 3: Image size (in bytes?) + * 4: u16 Transfer unit size (in bytes?) + * 5: Descriptor: Handle + * 6: Handle to destination process + * Outputs: + * 0: 0x00070042 + * 1: ResultCode + * 2: Descriptor: Handle + * 3: Handle to event signalled when transfer finishes + */ void SetReceiving(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00090100 + * 1: u8 Camera port (`Port` enum) + * 2: u16 Number of lines to transfer + * 3: u16 Width + * 4: u16 Height + * Outputs: + * 0: 0x00090040 + * 1: ResultCode + */ void SetTransferLines(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x000A0080 + * 1: u16 Width + * 2: u16 Height + * Outputs: + * 0: 0x000A0080 + * 1: ResultCode + * 2: Maximum number of lines that fit in the buffer(?) + */ void GetMaxLines(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x000C0040 + * 1: u8 Camera port (`Port` enum) + * Outputs: + * 0: 0x000C0080 + * 1: ResultCode + * 2: Total number of bytes for each frame with current settings(?) + */ void GetTransferBytes(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x000E0080 + * 1: u8 Camera port (`Port` enum) + * 2: u8 bool Enable trimming if true + * Outputs: + * 0: 0x000E0040 + * 1: ResultCode + */ void SetTrimming(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00120140 + * 1: u8 Camera port (`Port` enum) + * 2: s16 Trim width(?) + * 3: s16 Trim height(?) + * 4: s16 Camera width(?) + * 5: s16 Camera height(?) + * Outputs: + * 0: 0x00120040 + * 1: ResultCode + */ void SetTrimmingParamsCenter(Service::Interface* self); + +/** + * Selects up to two physical cameras to enable. + * Inputs: + * 0: 0x00130040 + * 1: u8 Cameras to activate (`CameraSelect` enum) + * Outputs: + * 0: 0x00130040 + * 1: ResultCode + */ void Activate(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x001D00C0 + * 1: u8 Camera select (`CameraSelect` enum) + * 2: u8 Type of flipping to perform (`Flip` enum) + * 3: u8 Context (`Context` enum) + * Outputs: + * 0: 0x001D0040 + * 1: ResultCode + */ void FlipImage(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x001F00C0 + * 1: u8 Camera select (`CameraSelect` enum) + * 2: u8 Camera frame resolution (`Size` enum) + * 3: u8 Context id (`Context` enum) + * Outputs: + * 0: 0x001F0040 + * 1: ResultCode + */ void SetSize(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00200080 + * 1: u8 Camera select (`CameraSelect` enum) + * 2: u8 Camera framerate (`FrameRate` enum) + * Outputs: + * 0: 0x00200040 + * 1: ResultCode + */ void SetFrameRate(Service::Interface* self); + +/** + * Returns calibration data relating the outside cameras to eachother, for use in AR applications. + * + * Inputs: + * 0: 0x002B0000 + * Outputs: + * 0: 0x002B0440 + * 1: ResultCode + * 2-17: `StereoCameraCalibrationData` structure with calibration values + */ void GetStereoCameraCalibrationData(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00360000 + * Outputs: + * 0: 0x00360080 + * 1: ResultCode + * 2: ? + */ void GetSuitableY2rStandardCoefficient(Service::Interface* self); + +/** + * Unknown + * Inputs: + * 0: 0x00380040 + * 1: u8 Sound ID + * Outputs: + * 0: 0x00380040 + * 1: ResultCode + */ void PlayShutterSound(Service::Interface* self); + +/** + * Initializes the camera driver. Must be called before using other functions. + * Inputs: + * 0: 0x00390000 + * Outputs: + * 0: 0x00390040 + * 1: ResultCode + */ void DriverInitialize(Service::Interface* self); + +/** + * Shuts down the camera driver. + * Inputs: + * 0: 0x003A0000 + * Outputs: + * 0: 0x003A0040 + * 1: ResultCode + */ void DriverFinalize(Service::Interface* self); /// Initialize CAM service(s) |