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