1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: camera_Camera.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 32227 $ 14 *---------------------------------------------------------------------------*/ 15 16 // 17 // このファイルを編集しないでください。 18 // このファイルは自動生成されます。 19 // 20 21 #ifndef NN_CAMERA_CTR_CAMERA_CAMERA_H_ 22 #define NN_CAMERA_CTR_CAMERA_CAMERA_H_ 23 24 #include <nn/Handle.h> 25 #include <nn/Result.h> 26 #include <nn/fnd/fnd_TimeSpan.h> 27 #include <nn/types.h> 28 #include <nn/camera/CTR/camera_Api.h> 29 30 31 32 namespace nn { 33 namespace camera { 34 namespace CTR { 35 namespace detail { 36 37 class Camera 38 { 39 public: 40 enum Tag 41 { 42 TAG_IPC_ERROR, 43 TAG_START_CAPTURE = 0x0001, 44 TAG_STOP_CAPTURE = 0x0002, 45 TAG_IS_BUSY = 0x0003, 46 TAG_CLEAR_BUFFER = 0x0004, 47 TAG_GET_VSYNC_INTERRUPT_EVENT = 0x0005, 48 TAG_GET_BUFFER_ERROR_INTERRUPT_EVENT = 0x0006, 49 TAG_SET_RECEIVING = 0x0007, 50 TAG_IS_FINISHED_RECEIVING = 0x0008, 51 TAG_SET_TRANSFER_LINES = 0x0009, 52 TAG_GET_MAX_LINES = 0x000a, 53 TAG_SET_TRANSFER_BYTES = 0x000b, 54 TAG_GET_TRANSFER_BYTES = 0x000c, 55 TAG_GET_MAX_BYTES = 0x000d, 56 TAG_SET_TRIMMING = 0x000e, 57 TAG_IS_TRIMMING = 0x000f, 58 TAG_SET_TRIMMING_PARAMS = 0x0010, 59 TAG_GET_TRIMMING_PARAMS = 0x0011, 60 TAG_SET_TRIMMING_PARAMS_CENTER = 0x0012, 61 TAG_ACTIVATE = 0x0013, 62 TAG_SWITCH_CONTEXT = 0x0014, 63 TAG_SET_EXPOSURE = 0x0015, 64 TAG_SET_WHITE_BALANCE = 0x0016, 65 TAG_SET_WHITE_BALANCE_WITHOUT_BASE_UP = 0x0017, 66 TAG_SET_SHARPNESS = 0x0018, 67 TAG_SET_AUTO_EXPOSURE = 0x0019, 68 TAG_IS_AUTO_EXPOSURE = 0x001a, 69 TAG_SET_AUTO_WHITE_BALANCE = 0x001b, 70 TAG_IS_AUTO_WHITE_BALANCE = 0x001c, 71 TAG_FLIP_IMAGE = 0x001d, 72 TAG_SET_DETAIL_SIZE = 0x001e, 73 TAG_SET_SIZE = 0x001f, 74 TAG_SET_FRAME_RATE = 0x0020, 75 TAG_SET_PHOTO_MODE = 0x0021, 76 TAG_SET_EFFECT = 0x0022, 77 TAG_SET_CONTRAST = 0x0023, 78 TAG_SET_LENS_CORRECTION = 0x0024, 79 TAG_SET_OUTPUT_FORMAT = 0x0025, 80 TAG_SET_AUTO_EXPOSURE_WINDOW = 0x0026, 81 TAG_SET_AUTO_WHITE_BALANCE_WINDOW = 0x0027, 82 TAG_SET_NOISE_FILTER = 0x0028, 83 TAG_SYNCHRONIZE_VSYNC_TIMING = 0x0029, 84 TAG_GET_LATEST_VSYNC_TIMING = 0x002a, 85 TAG_GET_STEREO_CAMERA_CALIBRATION_DATA = 0x002b, 86 TAG_SET_STEREO_CAMERA_CALIBRATION_DATA = 0x002c, 87 TAG_WRITE_REGISTER_I2C = 0x002d, 88 TAG_WRITE_MCU_VARIABLE_I2C = 0x002e, 89 TAG_READ_REGISTER_I2C_EXCLUSIVE = 0x002f, 90 TAG_READ_MCU_VARIABLE_I2C_EXCLUSIVE = 0x0030, 91 TAG_SET_IMAGE_QUALITY_CALIBRATION_DATA = 0x0031, 92 TAG_GET_IMAGE_QUALITY_CALIBRATION_DATA = 0x0032, 93 TAG_SET_PACKAGE_PARAMETER_WITHOUT_CONTEXT = 0x0033, 94 TAG_SET_PACKAGE_PARAMETER_WITH_CONTEXT = 0x0034, 95 TAG_SET_PACKAGE_PARAMETER_WITH_CONTEXT_DETAIL = 0x0035, 96 TAG_GET_SUITABLE_Y2R_STANDARD_COEFFICIENT = 0x0036, 97 TAG_PLAY_SHUTTER_SOUND_WITH_WAVE = 0x0037, 98 TAG_PLAY_SHUTTER_SOUND = 0x0038, 99 TAG_DRIVER_INITIALIZE = 0x0039, 100 TAG_DRIVER_FINALIZE = 0x003a, 101 TAG_GET_ACTIVATED_CAMERA = 0x003b, 102 TAG_GET_SLEEP_CAMERA = 0x003c, 103 TAG_SET_SLEEP_CAMERA = 0x003d, 104 TAG_IPC_END 105 }; 106 107 public: 108 static Handle s_Session; 109 110 public: Camera()111 Camera() {} 112 113 public: 114 static nn::Result StartCapture( nn::camera::CTR::Port port ); 115 static nn::Result StopCapture( nn::camera::CTR::Port port ); 116 static nn::Result IsBusy( bool* pState, nn::camera::CTR::Port port ); 117 static nn::Result ClearBuffer( nn::camera::CTR::Port port ); 118 static nn::Result GetVsyncInterruptEvent( nn::Handle* pHandle, nn::camera::CTR::Port port ); 119 static nn::Result GetBufferErrorInterruptEvent( nn::Handle* pHandle, nn::camera::CTR::Port port ); 120 static nn::Result SetReceiving( nn::Handle* pHandle, nn::Handle dstProcess, u32 pDst, nn::camera::CTR::Port port, size_t imageSize, s16 transferUnit ); 121 static nn::Result IsFinishedReceiving( bool* pState, nn::camera::CTR::Port port ); 122 static nn::Result SetTransferLines( nn::camera::CTR::Port port, s16 lines, s16 width, s16 height ); 123 static nn::Result GetMaxLines( s16* pLines, s16 width, s16 height ); 124 static nn::Result SetTransferBytes( nn::camera::CTR::Port port, size_t bytes, s16 width, s16 height ); 125 static nn::Result GetTransferBytes( size_t* pBytes, nn::camera::CTR::Port port ); 126 static nn::Result GetMaxBytes( size_t* pBytes, s16 width, s16 height ); 127 static nn::Result SetTrimming( nn::camera::CTR::Port port, bool enable ); 128 static nn::Result IsTrimming( bool* pEnable, nn::camera::CTR::Port port ); 129 static nn::Result SetTrimmingParams( nn::camera::CTR::Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd ); 130 static nn::Result GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, nn::camera::CTR::Port port ); 131 static nn::Result SetTrimmingParamsCenter( nn::camera::CTR::Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight ); 132 static nn::Result Activate( nn::camera::CTR::CameraSelect camera ); 133 static nn::Result SwitchContext( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Context next ); 134 static nn::Result SetExposure( nn::camera::CTR::CameraSelect camera, s8 exposure ); 135 static nn::Result SetWhiteBalance( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::WhiteBalance wb ); 136 static nn::Result SetWhiteBalanceWithoutBaseUp( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::WhiteBalance wb ); 137 static nn::Result SetSharpness( nn::camera::CTR::CameraSelect camera, s8 sharpness ); 138 static nn::Result SetAutoExposure( nn::camera::CTR::CameraSelect camera, bool on ); 139 static nn::Result IsAutoExposure( bool* pOn, nn::camera::CTR::CameraSelect camera ); 140 static nn::Result SetAutoWhiteBalance( nn::camera::CTR::CameraSelect camera, bool on ); 141 static nn::Result IsAutoWhiteBalance( bool* pOn, nn::camera::CTR::CameraSelect camera ); 142 static nn::Result FlipImage( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Flip flip, nn::camera::CTR::Context context ); 143 static nn::Result SetDetailSize( nn::camera::CTR::CameraSelect camera, s16 width, s16 height, s16 cropX0, s16 cropY0, s16 cropX1, s16 cropY1, nn::camera::CTR::Context context ); 144 static nn::Result SetSize( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Size size, nn::camera::CTR::Context context ); 145 static nn::Result SetFrameRate( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::FrameRate rate ); 146 static nn::Result SetPhotoMode( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::PhotoMode mode ); 147 static nn::Result SetEffect( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Effect effect, nn::camera::CTR::Context context ); 148 static nn::Result SetContrast( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Contrast contrast ); 149 static nn::Result SetLensCorrection( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::LensCorrection correction ); 150 static nn::Result SetOutputFormat( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::OutputFormat format, nn::camera::CTR::Context context ); 151 static nn::Result SetAutoExposureWindow( nn::camera::CTR::CameraSelect camera, s16 startX, s16 startY, s16 width, s16 height ); 152 static nn::Result SetAutoWhiteBalanceWindow( nn::camera::CTR::CameraSelect camera, s16 startX, s16 startY, s16 width, s16 height ); 153 static nn::Result SetNoiseFilter( nn::camera::CTR::CameraSelect camera, bool on ); 154 static nn::Result SynchronizeVsyncTiming( nn::camera::CTR::CameraSelect camera1, nn::camera::CTR::CameraSelect camera2 ); 155 static nn::Result GetLatestVsyncTiming( nn::fnd::TimeSpan time[], nn::camera::CTR::Port port, size_t past ); 156 static nn::Result GetStereoCameraCalibrationData( nn::camera::CTR::StereoCameraCalibrationData* pDst ); 157 static nn::Result SetStereoCameraCalibrationData( const nn::camera::CTR::StereoCameraCalibrationData& src ); 158 static nn::Result WriteRegisterI2c( nn::camera::CTR::CameraSelect camera, u16 addr, u16 data ); 159 static nn::Result WriteMcuVariableI2c( nn::camera::CTR::CameraSelect camera, u16 varAddr, u16 data ); 160 static nn::Result ReadRegisterI2cExclusive( u16* data, nn::camera::CTR::CameraSelect whichCam, u16 addr ); 161 static nn::Result ReadMcuVariableI2cExclusive( u16* data, nn::camera::CTR::CameraSelect whichCam, u16 varAddr ); 162 static nn::Result SetImageQualityCalibrationData( const nn::camera::CTR::ImageQualityCalibrationData& src ); 163 static nn::Result GetImageQualityCalibrationData( nn::camera::CTR::ImageQualityCalibrationData* p_Dst ); 164 static nn::Result SetPackageParameterWithoutContext( const nn::camera::CTR::PackageParameterCameraSelect& param ); 165 static nn::Result SetPackageParameterWithContext( const nn::camera::CTR::PackageParameterContext& param ); 166 static nn::Result SetPackageParameterWithContextDetail( const nn::camera::CTR::PackageParameterContextDetail& param ); 167 static nn::Result GetSuitableY2rStandardCoefficient( nn::y2r::CTR::StandardCoefficient* no ); 168 static nn::Result PlayShutterSoundWithWave( const u8 shutterSoundData[], s32 shutterSoundSize, const nn::csnd::CTR::ChannelParam& channelParam, const nn::csnd::CTR::OptionInfo& optionInfo ); 169 static nn::Result PlayShutterSound( nn::camera::CTR::ShutterSoundType type ); 170 static nn::Result DriverInitialize(); 171 static nn::Result DriverFinalize(); 172 static nn::Result GetActivatedCamera( nn::camera::CTR::CameraSelect* pSelect ); 173 static nn::Result GetSleepCamera( nn::camera::CTR::CameraSelect* pSelect ); 174 static nn::Result SetSleepCamera( nn::camera::CTR::CameraSelect select ); 175 }; 176 177 } // end of namespace detail 178 } // end of namespace CTR 179 } // end of namespace camera 180 } // end of namespace nn 181 182 183 184 #endif // ifndef NN_CAMERA_CTR_CAMERA_CAMERA_H_ 185