子機の実装 (MININODES)
子機の基本的な実装を見ます。
モジュール定義, include
#define ToCoNet_USE_MOD_NWK_LAYERTREE_MININODES
// includes
#include "ToCoNet.h"
#include "ToCoNet_mod_prototype.h"cbAppColdStart()
アプリケーションIDやチャネルは、ここで決めておきます。また初期化処理等は vProcessEvCore() 関数に記述します。
void cbAppColdStart(bool_t bAfterAhiInit) {
if (!bAfterAhiInit) { // before AHI init, very first of code.
// Register modules
ToCoNet_REG_MOD_ALL();
} else {
// TWELITE NET configuration
/// Application ID
sToCoNet_AppContext.u32AppId = 0x12345678;
sToCoNet_AppContext.u8Channel = 18;
/// 受信回路は OFF
sToCoNet_AppContext.bRxOnIdle = FALSE;
/// CCA は最小限にする
sToCoNet_AppContext.u8CCA_Level = 1;
sToCoNet_AppContext.u8CCA_Retry = 0;
/// 起動時の MAC 初期化を後回しにする。
/// 送信直前で初期化し、不要な場合は初期化しない。
sToCoNet_AppContext.u8MacInitPending = TRUE;
// Register user PRSEV.
ToCoNet_Event_Register_State_Machine(vProcessEvCore);
}
}cbAppWarmStart()
単純ネットと同様にハードウェアの初期化等を実施するが、中継ネット特有の処理は vProcessEvCore() にて実施する。
cbToCoNet_vNwkEvent()
LayerTree MININODES は、上位ノードの決定といった手続きは省略されるため、 E_EVENT_TOCONET_NWK_START E_EVENT_TOCONET_NWK_DISCONNECT イベントについては処理する必要がありません。
cbToCoNet_vRxEvent()
受信方法は単純ネットと大きく変わりません。tsRxDataApp 構造体には違いがあります。
vProcessEvCore()
システム始動時 E_EVENT_START_UP に、tsToCoNet_NwkLyTr_Config 構造体の設定、ToCoNet_NwkLyTr_psConfig_MiniNodes() 関数の実行、 ToCoNet_Nwk_bInit() 関数によるネットワークの初期化、ToCoNet_Nwk_bStart() 関数によるネットワークの開始を行います。
スリープ前にはToCoNet_Nwk_bPause()、スリープからの起床時には ToCoNet_Nwk_bResumte() を実行します。
最終更新