TWESTG_CMD_u32CmdOp() コマンド解説
TWESTG_CMD_u32CmdOp() コマンド解説(内部開発者向け)
TWESTG_CMD_u32CmdOp() のコマンドについて解説します。
TWESTG_CMD_u32CmdOp() コマンド解説(内部開発者向け)
TWESTG_CMD_u32CmdOp()
関数によるコマンド実行は、TWENETstgs ライブラリを利用し実装されたアプリケーション(ファームウェア)との共通的な手続きを提供するものですが、この情報はライブラリ内部の実装に関するもので、通常のユーザが使用することは想定していません。概要
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
を指定する。
パラメータ | 型 | 処理 |
---|---|---|
u8Op | uint8 | 処理内容を指定する。 |
pBufIn | TWE_tsBuffer * | 入力系列。 |
pBufOut | TWE_tsBuffer * | 出力データの格納領域を指定する。処理によっては NULL 指定でも構わない。処理の失敗時の状態は原則未定義である。 |
psFinal | TWESTG_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_SUCCESS | b0..b7 → u8Op、他は処理次第 | 成功時 |
TWE_APIRET_FAIL | b0..b7 → u8Op、他は処理次第 | 失敗時 |
処理
E_TWESTG_CMD_OP_ACK (F0)
ACK応答を行う。入力した系列をそのまま出力する。
例
(なし) -> 01 : 入力なしの場合は 01 が戻る
112233 -> 112233 : 112233の場合は、出力にそのまま戻る。
E_TWESTG_CMD_OP_QUERY_MODULE_INFO (F1)
モジュールの諸情報を取得する。
入力列 | データ型 | 値 | 内容 |
---|---|---|---|
[0] | OCTET | 0x01 | モジュールのSIDを得る。 |
そのほか | 未定義 | ||
以降のデータは未定義 |
出力列 ([0] == 0x01) | データ型 | 値 | 内容 |
---|---|---|---|
[0..3] | BE_DWORD | モジュールのSID。 |
E_TWESTG_CMD_OP_APPLY_SETTINGS(F2)
設定情報を変更する。
- 設定情報はセーブ&リセットされるまでは反映されません。
- 未反映の状態でのアプリケーションのふるまいは未定義です。
- 未定義の状態でインタラクティブモードに遷移すると変更したデータは破棄されます。
- 設定済みのデータと同じ内容に変更しようとしたときも、この処理は成功として戻り値を返します。ただしセーブ(
E_TWESTG_CMD_OP_SAVE
)を実行しても、実際のセーブは行われません。 - この処理は出力 (
pBufOut
) には書き込みません。
入力列 | データ型 | 値 | 内容 |
---|---|---|---|
[0] | OCTET | 0x01 | IDに指定する設定を変更する。 |
[1] | OCTET | 0x00以外 | 設定ID |
[2..] | データ型依存 |
設定データ
設定ID | 内容 | 入力データ | 備考 |
---|---|---|---|
0x01 | アプリケーションID | BE_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) | |
0x07 | UART 設定 | 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] | OCTET | 0x01 | (QTYP)IDに指定する設定を取得する。 |
[1] | OCTET | 0x00以外 | 設定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 | アプリケーションID | BE_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) | |
0x07 | UART 設定 | 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)
モジュールをリセットする。
入力データ、出力データは無し。