設定ビヘイビア
設定ビヘイビアは、インタラクティブモードによる設定CUIを利用するためのビヘイビアです。設定のためのインタフェースはシリアルポートの入出力により行います。TWELITE STAGE/TeraTerm/screenなどターミナルソフトウェアを用い、対話型の設定が可能になります。
このビヘイビアは、内部でUART0
(Serial
)を利用します。設定ビヘイビアで利用しなかった入力文字列は、設定ビヘイビア内に確保されたFIFOキューに投入され、Serial
はこのキューを参照するようにふるまいます。設定ビヘイビアを登録しない場合と内部的なふるまいが違う点に留意ください。
<STG_STD> は、最小限の設定項目を有した設定ビヘイビアです。
以下に設定画面例を提示します。
上記のように #include <STG_STD>
を追加します。
多くの場合、設定の読み出しはsetup()
中の早い段階で行います。
上記の例はでは、まずthe_twelite.settings.use<STG_STD>()
により設定ビヘイビアを登録します。
登録直後に、デフォルトのアプリケーションIDを変更するなど設定ビヘイビアの変更を行うことができますが、これは後述します。
つぎにset.reload()
を呼び出し、実際にEEPROMからデータを読み出し、これを解釈します。自動で読み出さないことに注意してください。
set.u32appid()
, set.u8ch()
, set.u8devid()
は各々アプリケーションIDの設定値、チャネルの設定値、論理デバイスIDの設定値を取得しています。ここでは変数に各設定値を格納しています。
設定値を格納した内部データ構造は比較的複雑であるため、求める設定を得るまで、設計配列のデータ探索が必要になります。計算量を気にする場合は一旦設定値を別の変数に格納するようにしてください。
あとは、設定値を利用してアプリケーションIDやチャネルなどの値を反映します。
以下が設定IDの一覧(enum class E_STGSTD_SETID
)定義です。
<STG_STD>
では、代表的な設定と自由に使える32bit値を4つ定義されています。これらは、ユーザが自由に利用できます。
STG_STD>から読み出すだけでは設定は反映されません。
不要な項目を非表示にできます。
項目名や項目詳細を変更できます。
設定ビヘイビアのカスタマイズは.reload()
を行う前に全項目を行っておきます。
アプリケーション名はインタラクティブモードの先頭行に表示されます。
文字列ポインタを指定してください。内部でコピーを作らないようにしているため、ローカル変数を指定できません。
アプリケーションIDについては、デフォルト値を変更できます。
デフォルト値の変更はアプリケーションIDのみ対応しています。
SETTINGS::ch_multi()
を指定すると、チャネル設定が複数指定になります。複数設定を行う場合、設定値の読み出しは.u32chmask()
を用います。
アプリケーションIDについては、デフォルト値を変更できます。
項目名を別のモノに変更することが出来ます。上記の例ではUTF-8による日本語にしていますが、ターミナルの表示など条件がそろわないと適切には表示されません。
TWELITE STAGEの場合、登録フォントの文字数を減らしている場合は、表示されない文字が出てくるかもしれません。必要な文字列が含まれるよう、再ビルドしてください。
この配列は最後に { 0xFF }
で終端します。
1番目のエントリは設定ID、2番目が項目名、3番目が設定入力時に表示される解説になります。\r\n
により改行できます。
不要な項目の削除を行います。
設定を読み込みます。すべてのカスタマイズが終わってから実行します。
データの読み出しは以下のメソッドを呼び出します。
読み出し前に必ず.reload()
を呼び出してください。
内部では、構造体配列を線形探索して設定IDに合致する設定構造体を探索しており、オーバーヘッドがあります。頻繁に参照される設定値は一旦別の変数にコピーして使用してください。
設定ID
内容
APPID
アプリケーションID
LOGICALID
論理デバイスID (8bit)
CHANNEL
チャネル
CHANNELS_3
チャネル(3chまで)
POWER_N_RETRY
出力とリトライ回数
OPTBITS
Option 1
OPT_DWORD2
Option 2
OPT_DWORD3
Option 3
OPT_DWORD4
Option 4
ENC_MODE
暗号化モード
ENC_KEY_STRING
暗号化キー(文字列入力)
メソッド
内容
uint32_t u32appid()
アプリケーションID
uint8_t u8devid()
論理デバイスID
uint8_t u8ch()
設定チャネル (11..26)
uint32_t u32chmask()
チャネル設定マスク (ビットマスクで指定、13 なら 1UL << 13 にビットを設定する)
uint8_t u8power()
出力設定 (0..3)
uint8_t u8retry()
リトライ数
uint32_t u32opt1()
オプション1
uint32_t u32opt2()
オプション2
uint32_t u32opt3()
オプション3
uint32_t u32opt4()
オプション4
uint8_t u8encmode()
暗号化モード (0: なし 1: 有効 2: 有効、平文パケットも表示する)
const uint8_t * u8enckeystr()
暗号化キーの取得