MWSDK(TWELITE SDK)
MONO WIRELESS INC.
MWSDK
MWSDK
  • TWELITE SDK (MWSDK) マニュアル
  • はじめに
    • TWELITE SDK 利用規定
    • サポート、対応
    • モノワイヤレスソフトウェア使用許諾書
    • TWELITE SDKの構成
  • 最新版の取得
    • TWELITE SDK 改版履歴
  • TWELITE SDKの使用法
    • TWELITE SDKのインストール
    • VSCode での利用
    • フォルダ構成
    • コマンドラインでのビルド方法
    • ビルド定義について
      • Makefile について
      • Version.mk について
      • binファイル命名則
    • ファームウェア書換
      • ファームウェア書換用配線
      • tweterm.py
  • TWELIET NET API 解説
    • 用語
    • TWELITE NET ライブラリ構造
    • TWENET 動作フロー
      • 始動フロー
      • メインループフロー
      • 無線関連フロー
      • ハードウェアフロー
      • ユーザ定義イベント処理関数フロー
    • ソースコードの構造
    • モジュール
    • 無線パケット
      • パケットの最大長
      • アドレスの指定
      • アプリケーションID
    • ネットワークについて
      • 単純ネット
        • 送信
        • 受信
      • 中継ネット
        • 親機の実装
        • 中継器の実装
        • 子機の実装 (MININODES)
        • NBビーコン方式の接続
        • 中継ネットのアドレス
        • 上位アドレスを固定した静的中継
  • TWELITE NET API リファレンス
    • コールバック関数
      • cbAppColdStart()
      • cbAppWarmStart()
      • cbToCoNet_vMain()
      • cbToCoNet_vRxEvent()
      • cbToCoNet_vTxEvent()
      • cbToCoNet_vNwkEvent()
      • cbToCoNet_vHwEvent()
      • cbToCoNet_u8HwInt()
    • TWELITE NET関数
      • ToCoNet_vMacStart()
      • ToCoNet_bMacTxReq()
      • ToCoNet_u32GetSerial()
      • ToCoNet_u32GetRand()
      • ToCoNet_vSleep()
      • ToCoNet_vDebugInit()
      • ToCoNet_vDebugLevel()
      • ToCoNet_u32GetVersion()
      • ToCoNet_bRegisterAesKey()
      • ToCoNet_vRfConfig()
      • ToCoNet_vChConfig()
      • ToCoNet_Tx_vProcessEventQueue()
      • ToCoNet_u16RcCalib()
    • 中継ネット API
      • functions
        • ToCoNet_Nwk_bInit()
        • ToCoNet_Nwk_bStart()
        • ToCoNet_Nwk_bPause()
        • ToCoNet_Nwk_bResume()
        • ToCoNet_Nwk_bTx()
      • Structure
        • tsTxDataApp (中継ネット)
        • tsRxDataApp (中継ネット)
        • tsToCoNet_Nwk_Context
      • LayerTree ネット
        • ToCoNet_NwkLyTr_psConfig()
        • ToCoNet_NwkLyTr_psConfig_MiniNodes()
        • tsToCoNet_NwkLyTr_Context
    • 型 typedef, よく使うマクロ
    • 構造体
      • sToCoNet_AppContext
      • tsRxDataApp
      • tsTxDataApp
    • TWELITE NET マクロ
      • ToCoNet_REG_MOD_ALL()
      • utils.h
    • ユーザ定義イベント処理関数
      • ステート(状態)
      • イベント
      • ToCoNet_Event API
        • ToCoNet_Event_Register_State_Machine()
        • ToCoNet_Event_Process()
        • ToCoNet_Event_SetState()
        • ToCoNet_Event_vKeepStateOnRamHoldSleep()
        • ToCoNet_Event_u32TickFrNewState()
    • モジュール ライブラリ
      • ENERGY SCAN
      • NB SCAN
    • PRSEV ライブラリ
    • グローバル変数
      • uint32 u32TickCount_ms
      • sToCoNet_AppContext (静的変数)
    • PANIC
  • HW API リファレンス
    • ペリフェラル
      • ADC
        • adc.c
      • DIO
      • TickTimer
      • UART
        • SERIAL ライブラリ
          • SERIAL_vInit()
          • SERIAL_vInitEx()
          • SERIAL_bRxQueueEmpty()
          • SERIAL_i16RxChar()
          • SERIAL_vFlush()
          • tsSerialPortSetup
          • tsUartOpt
        • fprintf ライブラリ
          • vfPrintf()
          • vPutChar()
          • tsFILE
      • Timer
        • Timerライブラリ
          • vTimerConfig()
          • vTimerStart()
          • vTimerStop()
          • vTimerDisable()
          • tsTimerContext
      • WakeTimer
      • I2C
      • SPI
    • Flash, EEPROM
      • EEPROM
      • Flash
  • Utils リファレンス、他
    • ByteQueue
    • u8CCITT8()
    • SPRINTFライブラリ
    • BTMライブラリ(連照式 DIO 入力 )
GitBook提供
このページ内
  • 定義
  • 関数
  • ToCoNet_EnergyScan_bStart()
  • ToCoNet_NbScan_bStartToFindAddr()
  • イベント
  • 構造体
  • tsToCoNet_NbScan_Result
  • tsToCoNet_NbScan_Entitiy
  • サンプル
  1. TWELITE NET API リファレンス
  2. モジュール ライブラリ

NB SCAN

前へENERGY SCAN次へPRSEV ライブラリ

最終更新 2 年前

NB SCAN (Neighbour Scan) は、近隣のノードを探索する目的で使用します。

探索を行うノードは、応答要求の同報通信を行います。これに周囲のノードが応え、応答のあったノードの一覧を報告します。探索されたノードは の順にソートされます。

のみ利用可能。

比較的通信が安定し、通信量も少ない条件では探索の成功率が高くなりますが、条件が悪化すると全く探索できなくなる場合もあります。

条件の悪い場所では、存在を知らせるべきノードが定期的に同報通信によるビーコンパケットを送信し、探索側がこのビーコンを受信しながら近隣ノードの存在を確認する実装を行います。

定義

探索する側はToCoNet_USE_MOD_NBSCANを、探索される側はToCoNet_USE_MOD_NBSCAN_SLAVEを定義しておく。

// define modules
#define ToCoNet_USE_MOD_NBSCAN
#define ToCoNet_USE_MOD_NBSCAN_SLAVE

// includes
#include "ToCoNet.h"
#include "ToCoNet_mod_prototype.h"

関数

ToCoNet_EnergyScan_bStart()

近隣探索を開始します。

uint8 ToCoNet_NbScan_bStart (uint32 u32ChMask, uint16 u16Dur_ms)

引数

型
名前
詳細

uint32

u32ChMask

探索するチャネルマスク(ch16のみなら 1UL<<16 を指定、ch16,17なら 1UL<<16|1UL<<17 を指定)

uint16

u16Dur_ms

各チャネルの探索時間。おおむね 50ms 以上を推奨値とします。

戻り値

型
詳細

boot_t

TRUE なら要求は受け付けられ、FALSE なら要求は受け付けられなかった。

ToCoNet_NbScan_bStartToFindAddr()

特定アドレスのノードを見つける目的で、近隣探索を開始します。

uint8 ToCoNet_NbScan_bStartToFindAddr (uint32 u32ChMask, uint32 u32Addr)

引数

型
名前
詳細

uint32

u32ChMask

探索するチャネルマスク(ch16のみなら 1UL<<16 を指定、ch16,17なら 1UL<<16|1UL<<17 を指定)

uint32

u32Addr

戻り値

型
詳細

boot_t

TRUE なら要求は受け付けられ、FALSE なら要求は受け付けられなかった。

イベント

case E_EVENT_TOCONET_ENERGY_SCAN_COMPLETE:
    _C {
        uint8 *pu8Result = (uint8*)u32arg;
    }

pu8Result の値

[0]
計測されたチャネル数 [N]。

[1]

計測された一番若い番号のチャネルレベル。

[2]

次に若いチャネルレベル。

... [N]

Nまで続く。

レベルは 0..255 の値を取り、0 が最弱、255が最強となる。値が高いほどノイズの多いチャネルとなります。

構造体

tsToCoNet_NbScan_Result

近隣探索の結果を格納する構造体。

uint8

u8found

見つかった数。

uint8

u8scanMode

探索方法。

uint8

u8IdxLqiSort

tsToCoNet_NbScan_Entitiy

sScanResult[NBSCAN_MAXLIST]

探索されたノード情報

u8scanModeのビットマップ

ビットマスク
解説

TOCONET_NBSCAN_NORMAL_MASK

ToCoNet_EnergyScan_bStart()による探索

TOCONET_NBSCAN_QUICK_EXTADDR_MASK

ToCoNet_NbScan_bStartToFindAddr()による探索

tsToCoNet_NbScan_Entitiy

近隣探索で発見された各ノードの情報を格納した構造体。

型
名前
解説

uint32

u32addr

ロングアドレス。

uint16

u16addr

ショートアドレス。

uint8

u8ch

発見されたノードの設定されたチャネル。

uint8

u8lqi

発見されたノードのLQI。

uint8

bFound

探索に成功した場合は TRUE、失敗した場合は FALSE。

サンプル

// define modules
#define ToCoNet_USE_MOD_NBSCAN
#define ToCoNet_USE_MOD_NBSCAN_SLAVE

// includes
#include "ToCoNet.h"
#include "ToCoNet_mod_prototype.h"

void cbToCoNet_vNwkEvent(teEvent eEvent, uint32 u32arg) {
	int i;
	switch(eEvent) {
	case E_EVENT_TOCONET_NWK_START:
		break;

	case E_EVENT_TOCONET_NWK_SCAN_COMPLETE:
		_C {
            tsToCoNet_NbScan_Result *pNbsc = (tsToCoNet_NbScan_Result *)u32arg;

            if (pNbsc->u8scanMode & TOCONET_NBSCAN_NORMAL_MASK) { // 通常探索による結果
                // 全チャネルスキャン結果
                for(i = 0; i < pNbsc->u8found; i++) { // 見つかった数
                    // LQI 順に取り出す
                    tsToCoNet_NbScan_Entitiy *pEnt = 
                        &pNbsc->sScanResult[pNbsc->u8IdxLqiSort[i]];
                    if (pEnt->bFound) {
                        // エントリが見つかった
                        //   pEnt->u8ch(チャネル), 
                        //   pEnt->u32addr(ロングアドレス), 
                        //   pEnt->u16addr(ショートアドレス),
                        //   pEnt->u8lqi(LQI値)
                    }
                }
            } else if (pNbsc->u8scanMode & TOCONET_NBSCAN_QUICK_EXTADDR_MASK) { // アドレス指定探索の結果
                if(pNbSc->u8found) {
                    tsToCoNet_NbScan_Entitiy *pEnt = &pNbsc->sScanResult[0];
                    // 見つかった場合は一つだけなので最初の要素を取り出す。
                    //   pEnt->u8ch,
                    //   pEnt->u8lqi(LQI値)
                } else {
                    // 見つからなかった
                }
            }
        }
		break;

同じチャネルのノードが存在するかは、のパケット送信を試みれば確認できますが、ノードのチャネルの設定が不明である場合に利用します。

探索するノードの。

結果は () より イベントにて報告されます。イベント引数には tsToCoNet_NbScan_Result 構造体へのアドレスが指定されます。

に順に並べたときのsScanResultのインデックス

cbToCoNet_vNwkEvent
E_EVENT_TOCONET_NWK_SCAN_COMPLETE
単純ネット
LQI
MAC Ack 付き
LQI
ロングアドレス