/      English

TWESTG_CMD_u32CmdOp() コマンド解説

TWESTG_CMD_u32CmdOp() コマンド解説(内部開発者向け)
TWESTG_CMD_u32CmdOp() のコマンドについて解説します。

TWESTG_CMD_u32CmdOp() コマンド解説(内部開発者向け)

概要

twesettings_cmd.[ch]TWESTG_CMD_u32CmdOp() 関数は、0xdb コマンドの実行処理を行うことを想定している。この関数は、モジュールの諸情報の取得、設定情報の取得、設定情報の反映、リセットなどの処理が含まれる。多くの処理は設定関連の補助関数 TWEINTRCT_cbu32GenericHandler() を呼び出すようになっている。

データ型

  • TWE_APIRETは、0x80000000 のビットの有で成功、なしで失敗。残りの31ビットをパラメータとする。
  • TWE_tsBufferはバッファへのポインタ、系列長、バッファ最大長を格納した構造体。
  • TWESTG_tsFinalは、設定関連の管理構造体。

TWESTG_CMD_u32CmdOp()

TWE_APIRET TWESTG_CMD_u32CmdOp(uint8 u8Op, TWE_tsBuffer *pBufIn, TWE_tsBuffer *pBufOut, TWESTG_tsFinal *psFinal)

処理内容u8Opに対応した処理を行う。処理によって入力データpBufIn、出力データpBufOutを用いる。最後のパラメータは設定管理構造体は psFinal を指定する。

パラメータ処理
u8Opuint8処理内容を指定する。
pBufInTWE_tsBuffer *入力系列。
pBufOutTWE_tsBuffer *出力データの格納領域を指定する。処理によっては NULL 指定でも構わない。処理の失敗時の状態は原則未定義である。
psFinalTWESTG_tsFinal *設定情報管理構造体を指定する。

u8Opの概要は以下である。

E_TWESTG_CMD_OP_ACK = 0xF0					ACK処理
E_TWESTG_CMD_OP_QUERY_MODULE_INFO = 0xF1	SIDなどの取得
E_TWESTG_CMD_OP_APPLY_SETTINGS = 0xF2		設定の反映(セーブはしない)
E_TWESTG_CMD_OP_QUERY_SETTINGS = 0xF3		設定の読出
E_TWESTG_CMD_OP_MODULE_CONTROL = 0xF8		設定関連の諸処理
E_TWESTG_CMD_OP_REVERT = 0xFD               設定を元に戻す
E_TWESTG_CMD_OP_SAVE = 0xFE					設定の保存
E_TWESTG_CMD_OP_DO_MDDULE_RESET = 0xFF,		モジュールリセット

戻り値は成功・失敗を戻す。処理によってはパラメータが設定されることがある。

戻り値VALUE状況
TWE_APIRET_SUCCESSb0..b7 → u8Op、他は処理次第成功時
TWE_APIRET_FAILb0..b7 → u8Op、他は処理次第失敗時

処理

E_TWESTG_CMD_OP_ACK (F0)

ACK応答を行う。入力した系列をそのまま出力する。

(なし) -> 01        : 入力なしの場合は 01 が戻る
112233 -> 112233   : 112233の場合は、出力にそのまま戻る。

E_TWESTG_CMD_OP_QUERY_MODULE_INFO (F1)

モジュールの諸情報を取得する。

入力列データ型内容
[0]OCTET0x01モジュールのSIDを得る。
そのほか未定義
以降のデータは未定義
出力列 ([0] == 0x01)データ型内容
[0..3]BE_DWORDモジュールのSID。

E_TWESTG_CMD_OP_APPLY_SETTINGS(F2)

設定情報を変更する。

  • 設定情報はセーブ&リセットされるまでは反映されません。
  • 未反映の状態でのアプリケーションのふるまいは未定義です。
  • 未定義の状態でインタラクティブモードに遷移すると変更したデータは破棄されます。
  • 設定済みのデータと同じ内容に変更しようとしたときも、この処理は成功として戻り値を返します。ただしセーブ(E_TWESTG_CMD_OP_SAVE)を実行しても、実際のセーブは行われません。
  • この処理は出力 (pBufOut) には書き込みません。
入力列データ型内容
[0]OCTET0x01IDに指定する設定を変更する。
[1]OCTET0x00以外設定ID
[2..]データ型依存
設定データ
設定ID内容入力データ備考
0x01アプリケーションIDBE_DWORD (uint32_t)
0x02論理ID (8bit)OCTET (uint8_t)
0x03チャネルOCTET (uint8_t)
0x04チャネル(複数指定)BE_WORD(uint16_t)b0: ch11, b1: ch12, …, b15: ch16
BE_DWORD(uint32_t)1UL « ch のビット和 (11, 13なら 1UL « 11 | 1UL « 13)
※ STGSTD では無効化されている。
0x05無線出力と再送OCTET (uint8_t)上位4ビットが再送回数、下位4ビットは出力設定 (0..3, 3が最高出力)
0x06, 0x08, 0x09, 0x0Aオプション(32bit)BE_DWORD (uint32_t)
0x07UART 設定BE_WORD (int16_t)内部形式の設定データをそのまま入力する。
BE_DWORDボーレートを指定する(9600 … 250000)。他の通信条件は 8N1 を指定する。
BE_DWORD
OCTET
OCTET
OCTET
全パラメータを指定する。
- ボーレート(DWORD)
- ビット数 (7 or 8)
- パリティ (‘N’ or ‘E’ or ‘O’)
- ストップビット (1 or 2)
01011234BEEF		アプリケーションID(0x01)に0x1234BEEF を設定する。
010212              チャネル(0x02)に0x12(18)を設定する。

E_TWESTG_CMD_OP_QUERY_SETTINGS(F3)

設定情報を取得する。

入力列データ型内容
[0]OCTET0x01(QTYP)IDに指定する設定を取得する。
[1]OCTET0x00以外設定ID
QTYP==1 の出力
備考
[0]OCTETデータタイプ (uint8_t: 1, int8_t: 2, uint16_t: 3, int16_t: 4, uint32_t: 5, int32_t:6, uint8_t[]: 0x80 (下位5bitはデータ長)
[...]データタイプ依存 (整数型 WORD, DWORD は BigEndian並び)
設定ID内容入力データ備考
0x01アプリケーションIDBE_DWORD (uint32_t)
0x02論理ID (8bit)OCTET (uint8_t)
0x03チャネルOCTET (uint8_t)
0x04チャネル(複数指定)BE_WORD(uint16_t)b0: ch11, b1: ch12, …, b15: ch16
0x05無線出力と再送OCTET (uint8_t)上位4ビットが再送回数、下位4ビットは出力設定 (0..3, 3が最高出力)
0x06, 0x08, 0x09, 0x0Aオプション(32bit)BE_DWORD (uint32_t)
0x07UART 設定BE_WORD (int16_t)内部形式の設定データ
b15: 1 なら 7bit, 0 なら 8bit
b14: 1 なら STOPBIT=2, 0 なら 1
b12,13: 0->NONE, 1->ODD, 2->EVEN
b0..b11->ボーレートの1/100
0101 -> 051234BEEF    -> アプリケーションID(uint32_t 0x1234beef)
0102 -> 010D          -> チャネル(uint8_t 13)

E_TWESTG_CMD_OP_REVERT (0xFD)

このコマンドを実行直後に E_TWESTG_CMD_OP_SAVE を発効することで、設定情報を初期値に戻す。

  • TWEINTRCT_cbu32GenericHandler(psIntr, E_TWEINRCT_OP_REVERT, TRUE, 0, NULL) を呼び出す。第3引数の TRUE 指定により、セーブされた設定情報はロードしない。アプリケーションの TWEINTRCT_cbu32GenericHandler() が正しく実装されていること。

入力データ、出力データは無し。

E_TWESTG_CMD_OP_SAVE (0xFE)

設定情報を変更した場合に、不揮発性メモリに保存する。

  • 上書き、既に設定済みと同じ値に変更しようとした場合は、セーブは行わない。関数の戻り値としてTWE_APIRET_SUCCESS_W_VALUE(0x100 | E_TWESTG_CMD_OP_SAVE) を返す。
  • セーブを行った場合は、速やかにリセットを行う(設定変更したままの動作は未定義)。

入力データ、出力データは無し。

E_TWESTG_CMD_OP_DO_MDDULE_RESET (0xFF)

モジュールをリセットする。

入力データ、出力データは無し。