子機の実装 (MININODES)

子機の基本的な実装を見ます。

本ページでは LAYERTREE_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 構造体には違いがあります。

中継パケットは cbToCoNet_vRxEvent() コールバックでは処理されません。中継器に直接届いたパケット(送信専用の子機からパケットなど)を処理します。

vProcessEvCore()

システム始動時 E_EVENT_START_UP に、tsToCoNet_NwkLyTr_Config 構造体の設定、ToCoNet_NwkLyTr_psConfig_MiniNodes() 関数の実行、 ToCoNet_Nwk_bInit() 関数によるネットワークの初期化、ToCoNet_Nwk_bStart() 関数によるネットワークの開始を行います。

スリープ前にはToCoNet_Nwk_bPause()、スリープからの起床時には ToCoNet_Nwk_bResumte() を実行します。

最終更新