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提供
このページ内
  1. TWELIET NET API 解説
  2. ネットワークについて
  3. 単純ネット

送信

前へ単純ネット次へ受信

最終更新 2 年前

単純ネットワークでの送信手続きは、 構造体を確保し、この構造体に送信に必要な情報を格納します。

  1. ローカル変数として tsTxDataApp 構造体を確保し、構造体全体をゼロクリアする。

  2. 送信したいデータを .auData にコピーする(ペイロード)。

  3. ペイロードの格納バイト数を .u8Len に格納する。

  4. .u32DstAddr を格納する(宛先)

  5. .u32SrcAddr を格納する(送り元のアドレス)

  6. その他送信オプションを指定します。

  7. () を実行します。

  8. TWENET 内での送信処理が終了すると () が実行されます。

完了イベントが消滅することは例外的ですが、タイムアウトを設け例外処理するようにしてください。 tsTxDataApp 構造体中で遅延や再送遅延が極端に長く設定されていないなら、通常 100ms も必要としません。

サンプルコード

static int16 i16TransmitIoData() {
  tsTxDataApp sTx;
  memset(&sTx, 0, sizeof(sTx)); // ゼロクリア
  uint8 *q = sTx.auData;

  // ペイロードを構成
  S_OCTET(sAppData.u8AppIdentifier);
  S_BE_WORD(sAppData.sIOData_now.u16Volt);
  ...
	
  // 送信
  sTx.u8Len = q - sTx.auData; // パケット長
  sTx.u8Cmd = TOCONET_PACKET_CMD_APP_USER_IO_DATA; // パケット種別

  // 送信する
  sTx.u32DstAddr  = TOCONET_MAC_ADDR_BROADCAST; // ブロードキャスト
  sTx.u8Retry     = 0x81; // 1回再送

  // フレームカウントとコールバック識別子の指定
  sAppData.u16TxFrame++;
  sTx.u8Seq = (sAppData.u16TxFrame & 0xFF);
  sTx.u8CbId = sTx.u8Seq;

  /* MAC モードでは細かい指定が可能 */
  sTx.bAckReq = FALSE;
  sTx.u32SrcAddr = sToCoNet_AppContext.u16ShortAddress;
  sTx.u16RetryDur = 4; // 再送間隔[ms]
  sTx.u16DelayMax = 16; // 送信開始タイミングにブレを作る(最大16ms)

  // 送信API
  if (ToCoNet_bMacTxReq(&sTx)) {
    // 成功(処理が終わると cbToCoNet_vTxEvent() が発生する
    return sTx.u8CbId; // 成功
  } else {
    // 失敗
    return -1; // 失敗
  }
}

() () () マクロは、uint8 *q をペイロード格納領域のポインタとして宣言しておいた時に使う 1,2,4 バイト格納マクロです。

tsTxDataApp
ToCoNet_bMacTxReq
cbToCoNet_TxEvent
S_OCTET
S_BE_WORD
S_BE_DWORD