PRSEV ライブラリ
複数の違った振る舞いをするアプリケーションをひとつのバイナリに格納する方法と、イベント状態ごとに関数定義する方法を提供します。
コールバック関数の定義
コールバック関数は静的に定義するので、複数のアプリケーション動作をひとつにまとめるには都合が良くありません。ここでは、ソースファイル中に static 定義します。
/**
* ハードウェア割り込み
* @param u32DeviceId
* @param u32ItemBitmap
* @return
*/
static uint8 cbAppToCoNet_u8HwInt(uint32 u32DeviceId, uint32 u32ItemBitmap) {
uint8 u8handled = FALSE;
switch (u32DeviceId) {
default:
break;
}
return u8handled;
}
/**
* ハードウェアイベント(遅延実行)
* @param u32DeviceId
* @param u32ItemBitmap
*/
static void cbAppToCoNet_vHwEvent(uint32 u32DeviceId, uint32 u32ItemBitmap) {
}
/**
* メイン処理
*/
static void cbAppToCoNet_vMain() {
/* handle serial input */
vHandleSerialInput();
}
/**
* ネットワークイベント
* @param eEvent
* @param u32arg
*/
static void cbAppToCoNet_vNwkEvent(teEvent eEvent, uint32 u32arg) {
}
/**
* RXイベント
* @param pRx
*/
static void cbAppToCoNet_vRxEvent(tsRxDataApp *pRx) {
}
/**
* TXイベント
* @param u8CbId
* @param bStatus
*/
static void cbAppToCoNet_vTxEvent(uint8 u8CbId, uint8 bStatus) {
// 送信完了
ToCoNet_Event_Process(E_ORDER_KICK, 0, vProcessEvCore);
}最後に一覧のtsCbHandler構造体を用意します。
状態の定義
利用するイベントの数だけ定義を行います。
実体は以下のように定義します。
イベント処理関数
イベント処理関数を以下のように定義しておきます。先程の状態の定義で用意した asStateFuncTbl に従って、イベント処理が行われます。
初期化処理
以下のようにグローバル変数として用意した psCbHandler, pvProcessEv1 に値を格納する初期化関数を用意しておきます。
アプリケーションの実行
コールバック関数を格納するメインファイルについて説明します。メインファイルでは、上記で定義した個々の処理用の関数を呼び出す処理を行います。
ユーザ定義イベント処理関数とTWELITE NET のコールバック関数は以下のように定義しておきます。関数ポインタで指定されるアプリケーション独自のコールバック関数を呼び出し、アプリケーション独自のユーザ定義イベント処理を実行します。
最終更新