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: 31455 $ 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_PING_PROCESS = 0x0037, 98 TAG_PLAY_SHUTTER_SOUND_WITH_WAVE = 0x0038, 99 TAG_PLAY_SHUTTER_SOUND = 0x0039, 100 TAG_DRIVER_INITIALIZE = 0x003a, 101 TAG_DRIVER_FINALIZE = 0x003b, 102 TAG_GET_ACTIVATED_CAMERA = 0x003c, 103 TAG_GET_SLEEP_CAMERA = 0x003d, 104 TAG_SET_SLEEP_CAMERA = 0x003e, 105 TAG_IPC_END 106 }; 107 108 public: 109 static Handle s_Session; 110 111 public: Camera()112 Camera() {} 113 114 public: 115 static nn::Result StartCapture( nn::camera::CTR::Port port ); 116 static nn::Result StopCapture( nn::camera::CTR::Port port ); 117 static nn::Result IsBusy( bool* pState, nn::camera::CTR::Port port ); 118 static nn::Result ClearBuffer( nn::camera::CTR::Port port ); 119 static nn::Result GetVsyncInterruptEvent( nn::Handle* pHandle, nn::camera::CTR::Port port ); 120 static nn::Result GetBufferErrorInterruptEvent( nn::Handle* pHandle, nn::camera::CTR::Port port ); 121 static nn::Result SetReceiving( nn::Handle* pHandle, nn::Handle dstProcess, u32 pDst, nn::camera::CTR::Port port, size_t imageSize, s16 transferUnit ); 122 static nn::Result IsFinishedReceiving( bool* pState, nn::camera::CTR::Port port ); 123 static nn::Result SetTransferLines( nn::camera::CTR::Port port, s16 lines, s16 width, s16 height ); 124 static nn::Result GetMaxLines( s16* pLines, s16 width, s16 height ); 125 static nn::Result SetTransferBytes( nn::camera::CTR::Port port, size_t bytes, s16 width, s16 height ); 126 static nn::Result GetTransferBytes( size_t* pBytes, nn::camera::CTR::Port port ); 127 static nn::Result GetMaxBytes( size_t* pBytes, s16 width, s16 height ); 128 static nn::Result SetTrimming( nn::camera::CTR::Port port, bool enable ); 129 static nn::Result IsTrimming( bool* pEnable, nn::camera::CTR::Port port ); 130 static nn::Result SetTrimmingParams( nn::camera::CTR::Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd ); 131 static nn::Result GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, nn::camera::CTR::Port port ); 132 static nn::Result SetTrimmingParamsCenter( nn::camera::CTR::Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight ); 133 static nn::Result Activate( nn::camera::CTR::CameraSelect camera ); 134 static nn::Result SwitchContext( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Context next ); 135 static nn::Result SetExposure( nn::camera::CTR::CameraSelect camera, s8 exposure ); 136 static nn::Result SetWhiteBalance( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::WhiteBalance wb ); 137 static nn::Result SetWhiteBalanceWithoutBaseUp( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::WhiteBalance wb ); 138 static nn::Result SetSharpness( nn::camera::CTR::CameraSelect camera, s8 sharpness ); 139 static nn::Result SetAutoExposure( nn::camera::CTR::CameraSelect camera, bool on ); 140 static nn::Result IsAutoExposure( bool* pOn, nn::camera::CTR::CameraSelect camera ); 141 static nn::Result SetAutoWhiteBalance( nn::camera::CTR::CameraSelect camera, bool on ); 142 static nn::Result IsAutoWhiteBalance( bool* pOn, nn::camera::CTR::CameraSelect camera ); 143 static nn::Result FlipImage( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Flip flip, nn::camera::CTR::Context context ); 144 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 ); 145 static nn::Result SetSize( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Size size, nn::camera::CTR::Context context ); 146 static nn::Result SetFrameRate( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::FrameRate rate ); 147 static nn::Result SetPhotoMode( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::PhotoMode mode ); 148 static nn::Result SetEffect( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Effect effect, nn::camera::CTR::Context context ); 149 static nn::Result SetContrast( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::Contrast contrast ); 150 static nn::Result SetLensCorrection( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::LensCorrection correction ); 151 static nn::Result SetOutputFormat( nn::camera::CTR::CameraSelect camera, nn::camera::CTR::OutputFormat format, nn::camera::CTR::Context context ); 152 static nn::Result SetAutoExposureWindow( nn::camera::CTR::CameraSelect camera, s16 startX, s16 startY, s16 width, s16 height ); 153 static nn::Result SetAutoWhiteBalanceWindow( nn::camera::CTR::CameraSelect camera, s16 startX, s16 startY, s16 width, s16 height ); 154 static nn::Result SetNoiseFilter( nn::camera::CTR::CameraSelect camera, bool on ); 155 static nn::Result SynchronizeVsyncTiming( nn::camera::CTR::CameraSelect camera1, nn::camera::CTR::CameraSelect camera2 ); 156 static nn::Result GetLatestVsyncTiming( nn::fnd::TimeSpan time[], nn::camera::CTR::Port port, size_t past ); 157 static nn::Result GetStereoCameraCalibrationData( nn::camera::CTR::StereoCameraCalibrationData* pDst ); 158 static nn::Result SetStereoCameraCalibrationData( const nn::camera::CTR::StereoCameraCalibrationData& src ); 159 static nn::Result WriteRegisterI2c( nn::camera::CTR::CameraSelect camera, u16 addr, u16 data ); 160 static nn::Result WriteMcuVariableI2c( nn::camera::CTR::CameraSelect camera, u16 varAddr, u16 data ); 161 static nn::Result ReadRegisterI2cExclusive( u16* data, nn::camera::CTR::CameraSelect whichCam, u16 addr ); 162 static nn::Result ReadMcuVariableI2cExclusive( u16* data, nn::camera::CTR::CameraSelect whichCam, u16 varAddr ); 163 static nn::Result SetImageQualityCalibrationData( const nn::camera::CTR::ImageQualityCalibrationData& src ); 164 static nn::Result GetImageQualityCalibrationData( nn::camera::CTR::ImageQualityCalibrationData* p_Dst ); 165 static nn::Result SetPackageParameterWithoutContext( const nn::camera::CTR::PackageParameterCameraSelect& param ); 166 static nn::Result SetPackageParameterWithContext( const nn::camera::CTR::PackageParameterContext& param ); 167 static nn::Result SetPackageParameterWithContextDetail( const nn::camera::CTR::PackageParameterContextDetail& param ); 168 static nn::Result GetSuitableY2rStandardCoefficient( nn::y2r::CTR::StandardCoefficient* no ); 169 static nn::Result PingProcess( u8* connectedNumber ); 170 static nn::Result PlayShutterSoundWithWave( const u8 shutterSoundData[], s32 shutterSoundSize, const nn::csnd::CTR::ChannelParam& channelParam, const nn::csnd::CTR::OptionInfo& optionInfo ); 171 static nn::Result PlayShutterSound( nn::camera::CTR::ShutterSoundType type ); 172 static nn::Result DriverInitialize(); 173 static nn::Result DriverFinalize(); 174 static nn::Result GetActivatedCamera( nn::camera::CTR::CameraSelect* pSelect ); 175 static nn::Result GetSleepCamera( nn::camera::CTR::CameraSelect* pSelect ); 176 static nn::Result SetSleepCamera( nn::camera::CTR::CameraSelect select ); 177 }; 178 179 } // end of namespace detail 180 } // end of namespace CTR 181 } // end of namespace camera 182 } // end of namespace nn 183 184 185 186 #endif // ifndef NN_CAMERA_CTR_CAMERA_CAMERA_H_ 187