the_twelite
TWENET 利用の中核クラス (mwx::twenet)
the_twelite
オブジェクトは、TWENETの利用手続きをまとめたもので、無線の基本設定やスリープ等の手続きなど無線マイコンを操作するための手続きが含まれます。the_twelite
はsetup()
関数内で設定と開始the_twelite.begin()
を行います。setup()
以外では設定は行えません。void setup() {
...
the_twelite
<< TWENET::appid(APP_ID)
<< TWENET::channel(CHANNEL)
<< TWENET::rx_when_idle();
...
the_twelite.begin();
}
上記の例では、アプリケーションIDの設定、通信チャネルの設定、受信回路の設定を行っています。
様々な手続きが含まれます。
// シリアル番号を得る
uint32_t u32hwser = the_twelite.get_hw_serial();
// チャネルを 11 に設定する
the_twelite.change_channel(11);
// 1秒のスリープを行う
the_twelite.sleep(1000);
// リセットを行う
the_twelite.reset_system();
また無線ネットワークを取り扱うクラスやボード対応をまとめたクラス、ユーザ記述のイベントドリブン処理を行うクラスを登録できるようになっています。このクラスを登録することにより、専用化した機能を手軽に利用できるようになります。これらのクラスを本解説中では「ビヘイビア」と呼称します。
void setup() {
/*** SETUP section */
// use PAL_AMB board support.
auto&& brd = the_twelite.board.use<PAL_AMB>();
...
// Register Network
auto&& nwk = the_twelite.network.use<NWK_SIMPLE>();
nwk << NWK_SIMPLE::logical_id(u8ID);
上記の例では環境センサーパル
<PAL_AMB>
と、シンプル中継ネットワーク<NWK_SIMPLE>
の2種類を登録しています。これらを登録することにより環境センサーパル上のセンサーなどハードウェアを簡易に取り扱うことが出来ます。また煩雑な無線パケットの取り扱いについて中継の処理や重複で届いたパケットの自動破棄などの機能を暗黙に持たせることが出来ます。MWXライブラリには、ここで紹介したメソッド以外にも定義されています。
アクト記述には直接関係ないもの、設定しても有効に機能しないもの、内部的に使用されているものが含まれます。
オブジェクト
the_twelite
の初期設定を行うために<<
演算子を用います。以下に挙げる設定用のクラスオブジェクトを入力とし、設定をしなければデフォルト値が適用されます。
パラメータ
id
に指定したアプリケーションIDを設定します。これは必須指定です。設定の読み出しは
uint32_t the_twelite.get_appid()
で行います。パラメータ
ch
に指定したチャネル番号(11
..26
)を設定します。設定の読み出しは
uint8_t the_twelite.get_channel()
で行います。パラメータ
pw
に指定した出力設定を(0
..3
)を設定します。デフォルトは(3:出力減衰無し)です。設定値の読み出しは
uint8_t the_twelite.get_tx_power()
で行います。パラメータ
bEnable
が1
であれば常に受信回路を動作させ、他からの無線パケットを受信できるようになります。デフォルトは0
で、もっぱら送信専用となります。設定値の読み出しは
uint8_t the_twelite.get_rx_when_idle()
で行います。チャネルマネージャを有効にします。チャネルを複数指定すると複数チャネルでの送受信を行います。
ch2
,ch3
に0を指定すると、その指定は無効になります。auto&& set = the_twelite.settings.use<STG_STD>();
...
set.reload(); // 設定値をロード
the_twelite << set; // インタラクティブモードの設定値を反映
反映される項目は以下です。
- app_id
- channel
- tx_power
- MAC ack 使用時の再送回数
MWXライブラリコード中には他にも設定項目がありますが、現時点ではライブラリの機能に無関係な設定であったり、設定を行うと矛盾を起こす可能性があるものです。
void begin()
事前に設定(
<<
演算子参照)や、ビヘイビアの登録を済ませた後に実行します。通常はsetup()
関数内の一番最後に記述します。the_twelite
設定完了- ビヘイビアの初期化
TWENETの初期化は
setup()
関数が終了した後にも実行されます。多くの処理はsetup()
が終了した後に実行するようになっているため、ここでは初期化以外の処理を行わないようにしてください。void setup() {
// use PAL_AMB board support.
auto&& brd = the_twelite.board.use<PAL_AMB>();
// settings
the_twelite
<< TWENET::appid(APP_ID)
<< TWENET::channel(CHANNEL)
<< TWENET::rx_when_idle();
// Register Network
auto&& nwk = the_twelite.network.use<NWK_SIMPLE>();
nwk << NWK_SIMPLE::logical_id(u8ID);
// somo others
// begin the TWENET!
the_twelite.begin();
}
inline bool change_channel(uint8_t u8Channel)
チャネル設定を変更します。失敗時にはチャネルは変更されず
false
を戻します。uint8_t get_channel_phys()
現在設定中のチャネル番号(11..26)を取得する。MAC層のAPIより取得します。
inline uint32_t get_hw_serial()
モジュールのシリアル番号を取得します。
inline void sleep(
uint32_t u32Periodms,
bool_t bPeriodic = true,
bool_t bRamOff = false,
uint8_t u8Device = TWENET::SLEEP_WAKETIMER_PRIMARY)
モジュールをスリープさせる。
パラメータ | 解説 |
---|---|
u32Periodms |