# TPRecvCallback

## 定義

  `#include <nitro/spi.h>`

      typedef void (*TPRecvCallback)(
              TPRequestCommand command,
              TPRequestResult result,
              u16 index );

## 引数

command | リクエストコマンド種別
result | 処理結果
index | オートサンプリングコールバックのインデックス値

## 返り値

なし。

## 説明

ARM7プロセッサへの要求が処理される毎、及びオートサンプリングによって定期的にタッチパネルの値を受信する毎に呼び出されるユーザコールバックの形式です。
command値でどの要求の結果であるか、result値で正常に処理されたかどうか、index値でオートサンプリング時の最新データのインデクスを取得することができます。

`TP_REQUEST_COMMAND_SAMPLING` | サンプリングを１回実行要求。`TP_RequestSampling*()`で送信されます。
`TP_REQUEST_COMMAND_AUTO_ON` | オートサンプリング開始要求。`TP_RequestAutoSamplingStart()`で送信されます。
`TP_REQUEST_COMMAND_AUTO_OFF` | オートサンプリング停止要求。`TP_RequestAutoSamplingStop()`で送信されます。
`TP_REQUEST_COMMAND_SET_STABILITY` | チャタリング対策パラメータの設定要求。`TP_RequestSetStability()`で送信されます。
`TP_REQUEST_COMMAND_AUTO_SAMPLING` | オートサンプリングによってデータがセットされる毎にこのコールバックが呼び出されます。

`TP_RESULT_SUCCESS` | 正常終了。
`TP_RESULT_INVALID_PARAMETER` | 送信された要求のパラメータが不正です。
`TP_RESULT_ILLEGAL_STATUS` | 現在の状態では処理できない命令です。
`TP_RESULT_EXCLUSIVE` | ARM7プロセッサの周辺装置インターフェイスがビジー状態です。
`TP_RESULT_PXI_BUSY` | CPU間通信がビジーのため要求に失敗しました。

以下に引数の列挙型の型定義を記しておきます。

    // タッチパネルへ発行する命令種別
    typedef enum {
        TP_REQUEST_COMMAND_SAMPLING         = 0x0,  // サンプリングを１回実行
        TP_REQUEST_COMMAND_AUTO_ON          = 0x1,  // オートサンプリング開始
        TP_REQUEST_COMMAND_AUTO_OFF         = 0x2,  // オートサンプリング停止
        TP_REQUEST_COMMAND_SETUP_STABILITY  = 0x3,  // チャタリング対策値の設定
        TP_REQUEST_COMMAND_AUTO_SAMPLING    = 0x10, // オートサンプリングの結果受信
    } TPRequestCommand;

    // タッチパネルからの結果種別
    typedef enum {
        TP_RESULT_SUCCESS = 0 ,             // 成功
        TP_RESULT_INVALID_PARAMETER ,       // パラメータが異常
        TP_RESULT_ILLEGAL_STATUS ,          // 命令を受け付けられない状態
        TP_RESULT_EXCLUSIVE ,               // SPIデバイスがビジー中
        TP_RESULT_PXI_BUSY                  // ARM7とのPXI通信がビジー中
    } TPRequestResult;

## 参照

`TP_SetCallback, TP_RequestSampling,TP_RequestAutoSamplingStart, TP_RequestAutoSamplingStop,TP_RequestSetStability`

## 履歴

Ver. 2004/04/16 初版