# CAMERA_I2CActivate*

## 構文

  `#include <twl/camera.h>`
  `CAMERAResult CAMERA_I2CActivate(CAMERASelect camera);`
  `CAMERAResult CAMERA_I2CActivateAsync(CAMERASelect camera, CAMERACallback callback, void *arg);`

## 引数

camera | 動作させるカメラ、もしくは両カメラともスタンバイ状態とすることを指定します。
callback | 完了時のコールバック関数 必要ない場合は NULL を指定します。
arg | 完了時のコールバック関数に与える引数 callback に NULL を指定した場合は単に無視されます

## 返り値

成功すれば CAMERA_RESULT_SUCCESS が返ってきます。失敗した場合は各エラーが返ってきます。

## 説明

カメラを起動、もしくはスタンバイ状態にします。
本関数はカメラモジュール自体の起動であり、キャプチャ開始は `CAMERA_StartCapture()` を呼び出す必要があります。
カメラは内側カメラ(CAMERA_SELECT_IN)と外側カメラ(CAMERA_SELECT_OUT)の2個が搭載されており、本関数で指定されたカメラが起動することになります。
指定されなかった方のカメラは自動的にスタンバイ状態となります。
また CAMERA_SELECT_NONE を指定することにより、内側カメラ、外側カメラ両方ともスタンバイ状態にすることができます。
節電のため、カメラを使用していない場合は CAMERA_SELECT_NONE を指定してスタンバイ状態になることを推奨します。
`CAMERA_I2CActivateAsync()` は `CAMERA_I2CActivate()` とは異なり、制御をすぐに戻し非同期で実行されます。
処理の完了を確認するにはcallbackを利用してください。
（注意）
カメラを起動した直後の4フレームは取得した画像が極端に暗い場合があります。
また、カメラが起動した後に自動露出が安定するまでのフレームは上記の4フレームと合わせて、屋内で14フレーム、屋外で30フレーム程度となります。
・キャプチャ画像がずれる現象について
キャプチャ中に本関数を呼び出すと、キャプチャ画像がずれる現象が発生する可能性があります。
本関数を呼び出す前に `CAMERA_StopCapture()` でキャプチャを停止させた後に 本関数を呼び出し、本関数の完了を確認した後に `CAMERA_StartCapture()` で キャプチャを再開するようにしてください。

## 参照

`CAMERA_StartCapture`、`CAMERASelect、CAMERACallback`

## 履歴

2009/11/11 キャプチャ画像が稀にずれる現象についての説明追加
2008/08/18 カメラ起動直後の露出調整の時間についての記述を修正
2008/07/16 自動露出補正が安定するまでのフレーム数について追記
2007/11/12 初版