<STG_STD>
STG_STD
<STG_STD> は、最小限の設定項目を有した設定ビヘイビアです。
このビヘイビアはSerialオブジェクトの入出力をフックし、インタラクティブモードでの画面入出力を行います。アプリケーション中で入力処理を明示的に記述する必要はありません。インタラクティブモード画面中のアプリケーションからの画面出力は抑制されます。
M キーを入力すると、補助機能にアクセスできます。機能は末尾の Extra Menu 項目を参照ください。
使用法
登録
上記のように #include <STG_STD>
を追加します。
setup() での読み出し
多くの場合、設定の読み出しは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(LID)については、デフォルト値を変更できます。
複数チャネル設定メニュー
SETTINGS::ch_multi()
を指定すると、チャネル設定が複数指定になります。複数設定を行う場合、設定値の読み出しは.u32chmask()
を用います。
すぐに設定画面を表示する
アプリケーションID、チャネル、論理IDについては、デフォルト値を変更できます。
項目名、詳細の記述内容の変更
項目名を別のモノに変更することが出来ます。上記の例ではUTF-8による日本語にしていますが、ターミナルの表示など条件がそろわないと適切には表示されません。
TWELITE STAGEの場合、登録フォントの文字数を減らしている場合は、表示されない文字が出てくるかもしれません。必要な文字列が含まれるよう、再ビルドしてください。
この配列は最後に { 0xFF }
で終端します。
1番目のエントリは設定ID、2番目が項目名、3番目が設定入力時に表示される解説になります。\r
により改行できます。
現在設定画面かどうか判定
設定画面出力中にシリアルへの出力を行うと画面が崩れたりする原因になります。設定画面でないことを確認するには.is_screen_opened()
で確認します。
項目の削除
不要な項目の削除を行います。.hide_items
は項目IDをパラメータとして(可変引数で複数指定可能)不要な項目を非表示にします。非表示項目かどうかは.is_hidden()
により確認できます。
アプリケーションID,チャネル,論理ID(LID)の3種類は削除できません。
非表示設定は内部のワークメモリを使用します。最小限のメモリ容量(32バイト)としているため、非表示項目を多数設定する場合、メモリ不足で非表示にならない場合があります。ワークメモリの容量はコンパイル引数として-DSIZE_SETSTD_CUST_COMMON=48
のように指定できます。
メソッド
reload()
設定を読み込みます。すべてのカスタマイズが終わってから実行します。
メソッド (データ読み出し)
データの読み出しは以下のメソッドを呼び出します。
読み出し前に必ず.reload()
を呼び出してください。
内部では、構造体配列を線形探索して設定IDに合致する設定構造体を探索しており、オーバーヘッドがあります。頻繁に参照される設定値は一旦別の変数にコピーして使用してください。
設定の反映
the_twelite
や<NWK_SIMPLE>
オブジェクトに対して、本オブジェクトを用いて直接設定を反映できます。
反映される設定値は以下となります。.hide_items()
により非表示になっている項目は反映しません。
項目ID
.hide_items()
などで項目IDを指定する場合があります。この項目IDはenum class E_STGSTD_SETID
で定義されてます。
Extra Menu
Mキーを入力すると追加メニューにアクセスできます。
CONFIG : 設定画面に戻ります
EEPROM UTIL : EEPROMのメンテナンスを行うためのメニューです
H/W UTIL : ハードウェアの状態を調べるためのメニューです
EEPROM UTIL
セクターの読み出し、削除を行います。全読み出し、全消去を行うときは大文字で "YES" の3文字を入力します。
H/W UTIL
現バージョンでは機能は提供されません。
最終更新