# TP_RequestAutoSamplingStart

## 構文

  `#include <nitro/spi.h>`

      u32 TP_RequestAutoSamplingStart(
                  u16 vcount,
                  u16 frequence,
                  TPData samplingBufs[],
                  u16 bufSize );

## 引数

vcount | オートサンプリングのためのベースVカウント値。 垂直ライン数 HW_LCD_LINES 以上を指定すると TP_RESULT_INVALID_PARAMETER を返します。
frequence | １フレームの間にサンプリングする回数。（MAX4回) 5 以上を指定した場合は TP_RESULT_INVALID_PARAMETER を返します。
samplingBufs | オートサンプリング値が格納されるバッファを設定するポインタ。
bufSize | samplingBufsで渡されたバッファの要素数。

## 返り値

要求が成功した場合には 0を返します。
失敗した場合には 0 以外を返します。詳細は `TPRequestResult` をご覧下さい。

## 説明

ARM7に対してタッチパネル値のオートサンプリング開始要求を出し、内部で要求の完了をウェイトします。
`TP_RequestAutoSamplingStartAsync()`の同期版。
この要求が受け付けられると、以降定期的にサンプリングが実行されsamplingBufsで指定された配列へ値が格納されていきます。
オートサンプリングの間隔はvcountで設定された値をベースに1フレームにfrequence回のデータがVAlarmによって均等な間隔でサンプリングされます。
ただし、Vカウント値が200から214までの時間帯はサンプリングに使用しません。`GX_SetVCount()` でVカウント値が変更される可能性があるためです。 サンプリングするVカウント値がこの期間に入っている場合は、215 ラインまでサンプリングが遅延されます。
`TP_SetCallback()`でユーザコールバックが設定されている場合には、値が格納されるごとにコールバックによって通知されます。
この関数によってsamplingBufsはクリアされ以後ループバッファとして使用されます。最後に格納されたデータのインデクスは、`TP_GetLatestIndexInAuto()`によって取得することが可能です。
オートサンプリングでは(最新のインデックス+1)のサンプリング値は割り込みにより不意に書き換えられる可能性があります。 １フレーム分のサンプリング値をまとめて利用する場合にはfrequence+1以上の領域を確保しておくことで回避可能です。

## 注意

この関数はARM7からの完了応答を割り込みで待ちます。ARM7からのFIFO受信割り込みが禁止された状態でコールされるとウェイトから復帰できなくなりますのでご注意ください。

## 参照

`TP_RequestAutoSamplingStop, TP_GetLatestRawPointInAuto, TP_GetLatestCalibratedPointInAuto, TP_GetLatestIndexInAuto, TP_RequestAutoSamplingStartAsync, TPData`

## 履歴

Ver. 2009/04/28 返り値の説明に TPRequestResult を追記、引数の条件を追記
Ver. 2007/10/29 説明を追記
Ver. 2007/10/16 使用しないVカウント値の説明を追記
Ver. 2006/09/01 bufSizeの説明を修正
Ver. 2004/04/21 非同期版を作成し同期化
Ver. 2004/04/16 初版