Skip to content
51 changes: 47 additions & 4 deletions tlm-cmd-db/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,54 @@
# TlmCmd DB
- C2A を搭載した OBC 以外を含めたすべてのコンポーネント(コンポ)についてのテレメトリ・コマンド(テレコマ)を,統一的に管理するための Database のマスターファイル
- C2A を搭載した OBC 以外を含めたすべてのコンポーネント(コンポ)についてのテレメトリ・コマンド(テレコマ)を,統一的に管理するための TlmCmd DB (CSV) の editor (xlsm) とそのマスターファイル
- これによって,統一的な C2A の自動コード生成や,各コンポ試験時の WINGS 連携が可能となる.
- これまで Excel マクロブックの単体ファイルであったため,コンフリクトや他 SW との連携がいまいちだった.そこで,以下の点を改修した.
- これまで Excel マクロブックの単体ファイルであったため,コンフリクトや他 SW との連携がいまいちであった.そこで,以下の点を改修した.
- データ本体はすべて CSV として保存することで,データはテキスト化(git 管理しやすさの向上)
- Excel マクロブック(xlsm)は純粋なビュアー,エディターとすることで, xlsm は一般ユーザーは上書き保存しなくていいように(できないように).
- 一方で,以下の理由より,今後は脱 Excel をしていきたい.
- Excel に埋め込まれる VBA が git 管理しづらい.
- Windows 以外で使いづらい.


## Tlm DB
### 各カラムの説明
- `Comment`
- 適当な文字列(慣習的に `*` )のある行は無視される
- `TLM Field`: テレメトリのフィールド
- `Name`: テレメトリのフィールド名.以下の要件を満たす
- `[A-Z_][0-9A-Z_]*` を満たす文字列
- `.` で区切ることで階層を表現することが可能
- 例: `OBC.GS_CMD.COUNTER`
- なお, `OBC.GS_CMD` と `OBC.GS_CMD.COUNTER` のようなフィールドの共存は不可(C2A 間通信における getter となる構造体の生成が不能になるため)
- `Onboard Software Info.`: C2A などの FSW 側の情報(自動コード生成に用いる)
- `Var. Type`: テレメトリの型
- `uint8_t`, `uint16_t`, `uint32_t`, `int8_t`, `int16_t`, `int32_t`, `float`, `double`, `raw` から選択可能
- `raw` は可変長バイナリデータを表す.テレメトリの末に 1 つだけ設定可能(テレメトリ長からデータ長を計算する)
- ただし, C2A の Tlm Generator App が生成するテレメトリは, `raw` を利用してはならないことに注意(その他の user application の生成するテレメトリはこの限りではない)
- `Variable or Function Name`: FSW 上での変数名やテレメトリを返す関数名
- `Extraction Info.`: GS SW などでテレメトリを抽出するための情報
- `Field Type`: GS の DB などに保存されるときの型. `Var. Type` と異なる型でも可能(おもにテレメ圧縮のときに有用)
- `uint8_t`, `uint16_t`, `uint32_t`, `int8_t`, `int16_t`, `int32_t`, `float`, `double`, `raw` から選択可能
- `Var. Type` が `raw` のときは必ず `raw` でなくてはならない.また,それ以外で `raw` を選択することは不可
- `Pos. Designator`: パケット内のテレメトリの位置
- `Var. Type` が `raw` の場合,`bit Len.` は空白とする
- `Conversion Info.`: テレメトリ変換の情報
- `Conv. Type`: 変換方式
- `NONE`: 変換なし.`Var. Type` が `raw` のときは必ず `NONE` でなくてはならない
- `POLY`: 多項式変換.変換後の型はすべて `double`
- `STATUS`: ステータス変換
- `HEX`: 16進数変換(`Display Info.` の新設に伴い, deprecated)
- `Display Info.`: GS SW などでテレメトリを表示するときの情報
- `Label`: ラベル.UTF-8 で表現可能な文字列が可能.空欄の場合は `TLM Field` の `Name` が使われる.
- `Unit`: 単位.空欄可能
- `Format`: フォーマット指定子.空欄可能.表現は GS SW 依存
- `Description`: GS SW などで表示される説明
- `Note`: この DB 上だけにある補足情報. FSW 開発者向け情報

### その他
- A1 セルにはバージョン番号を埋め込む
- 例: `v3`


## 使い方
### Cmd DB
- DB 読み込み
Expand All @@ -29,10 +70,12 @@
- テレメトリシートの追加
- 適当に csv をコピーしてファイル名を変更したものを同じディレクトリに配置すれば,次回以降自動で読み込まれる.


## 自動コード生成
- C2A のコードは [c2a-tlm-cmd-code-generator](https://github.com/ut-issl/c2a-tlm-cmd-code-generator) で自動生成できる.
- C2A のコードは [c2a-code-generator](https://github.com/arkedge/c2a-core/tree/main/code-generator) で自動生成できる.


## その他の注意
- 「開発」→「Visual Basic」→「ツール」→「参照設定」→「Microsoft HTML Object Library」にチェックを入れる必要があるかもしれない.
- 古いOffice (Office 2016など) では動かないこともあるらしい.
- 古い Office (Office 2016 など) では動かないこともあるらしい.
- `Workbooks.Open` がクラッシュすることがある.
Binary file modified tlm-cmd-db/TLM_DB/SAMPLE_TLM_DB.xlsm
Binary file not shown.
Loading