diff --git a/.github/workflows/build_with_s2e.yml b/.github/workflows/build_with_s2e.yml index 0ac5e1485..8cb8f26eb 100644 --- a/.github/workflows/build_with_s2e.yml +++ b/.github/workflows/build_with_s2e.yml @@ -9,7 +9,7 @@ on: env: # renovate: datasource=github-releases depName=ut-issl/s2e-core - S2E_CORE_VERSION: v7.0.1 + S2E_CORE_VERSION: v7.1.0 jobs: build_s2e_win: diff --git a/.github/workflows/deploy-reference.yml b/.github/workflows/deploy-reference.yml new file mode 100644 index 000000000..b302287b6 --- /dev/null +++ b/.github/workflows/deploy-reference.yml @@ -0,0 +1,49 @@ +name: Deploy C2A Reference + +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + +concurrency: + group: "pages" + +jobs: + build: + runs-on: ubuntu-22.04 + steps: + - name: install deps + run: | + sudo apt-get update -y + sudo apt install -y doxygen graphviz + + - uses: actions/checkout@v4.1.1 + + - name: C2A setup + run: ./setup.sh + + - name: Build Doxygen + run: doxygen + + - uses: actions/upload-pages-artifact@v2.0.0 + with: + path: docs/html + + deploy: + if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + needs: build + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + permissions: + pages: write + id-token: write + runs-on: ubuntu-22.04 + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2.0.4 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e1bcacc7b..e43dd81df 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -33,14 +33,17 @@ jobs: - name: cache dependencies uses: Swatinem/rust-cache@v2.7.1 + - name: setup c2a-core + run: ./setup.sh + - name: reviewdog / clippy uses: sksat/action-clippy@v0.3.0 with: reporter: ${{ github.event_name == 'pull_request' && 'github-pr-review' || 'github-check' }} - clippy_flags: --all-features + clippy_flags: --workspace --all-features - name: format run: cargo fmt --all -- --check - name: unit test - run: cargo test + run: cargo test --workspace diff --git a/.gitignore b/.gitignore index b12c15a01..25fb000d2 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,7 @@ tlmcmddb*.json # Added by cargo /target /Cargo.lock + +# Doxygen +doxygen.log +docs/html/ diff --git a/CHANGELOG.md b/CHANGELOG.md index ca2fbc433..e4bd07156 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,91 @@ 注意: これは既存の C2A core update の「リリースの間の Pull Request を眺めてなんとなく察する」という曖昧な操作を緩和していくための試みであり,C2A user に対するお知らせを行う場として使っていくことを意図しています.初めから c2a-core の全変更を取り扱うと不必要に煩雑になるだけになってしまうため,完全な変更内容の一覧についてはこれまで通り [GitHub Releases](https://github.com/arkedge/c2a-core/releases) などから参照してください. +## v4.1.0 (2023-12-11) + +### Breaking Changes + +- [#193](https://github.com/arkedge/c2a-core/pull/193): VCDU を AOS transfer frame に rename する +- [#197](https://github.com/arkedge/c2a-core/pull/197): M_PDU をコード規約に合わせるなどのリファクタ +- [#199](https://github.com/arkedge/c2a-core/pull/199): Drop c2a-core crate links config +- [#201](https://github.com/arkedge/c2a-core/pull/201): Refactor release rule +- [#225](https://github.com/arkedge/c2a-core/pull/225): Space Packet 関連ファイルのディレクトリを変更 +- [#214](https://github.com/arkedge/c2a-core/pull/214): CCSDS の主に MOBC 向け Data Link Layer のコードを Core 管理にする +- [#219](https://github.com/arkedge/c2a-core/pull/219): CCSDS data link layer における SCID をユーザー設定として切り出す +- [#220](https://github.com/arkedge/c2a-core/pull/220): APIDの命名規則の更新 + - 命名規則は `tlm_cmd/common_tlm_cmd_packet.h` を参照 + +### Fixed + +- [#188](https://github.com/arkedge/c2a-core/pull/188): [v3.10.1 Backport] PL_BC_LIST_CLEARED を level high で EL 登録する +- [#204](https://github.com/arkedge/c2a-core/pull/204): More match v4.0.0 script migration +- [#205](https://github.com/arkedge/c2a-core/pull/205): Fix v4 applications rename order +- [#206](https://github.com/arkedge/c2a-core/pull/206): More match system migration +- [#211](https://github.com/arkedge/c2a-core/pull/211): Fix v4 system rename typo +- [#212](https://github.com/arkedge/c2a-core/pull/212): More match v4 tlmcmd rename migration +- [#218](https://github.com/arkedge/c2a-core/pull/218): Feedback from v4.0.0 beta.4 +- [#223](https://github.com/arkedge/c2a-core/pull/223): Feedback from v4.0.0 beta.5 migration +- [#224](https://github.com/arkedge/c2a-core/pull/224): Feedback from v4.0.0 migration +- [#222](https://github.com/arkedge/c2a-core/pull/222): add section 漏れを修正 + +### Documentation + +- [#215](https://github.com/arkedge/c2a-core/pull/215): Update v4.0.0 migration guide +- [#207](https://github.com/arkedge/c2a-core/pull/207): Move doxygen config to top +- [#208](https://github.com/arkedge/c2a-core/pull/208): Exclude Doxygen stdint_wrapper +- [#209](https://github.com/arkedge/c2a-core/pull/209): Deploy Doxygen generated HTML to GitHub Pages + +### Internal + +- [#179](https://github.com/arkedge/c2a-core/pull/179): Update Rust crate bindgen to 0.69.1 +- [#210](https://github.com/arkedge/c2a-core/pull/210): Update dependency ut-issl/s2e-core to v7.1.0 +- [#229](https://github.com/arkedge/c2a-core/pull/229): Run Rust CI on all workspace crates + +### Migration Guide +- [#193](https://github.com/arkedge/c2a-core/pull/193): 影響範囲は MOBC のみ + 1. `src_user/tlm_cmd/ccsds/vcdu.{c,h}` を消し,`src_user/tlm_cmd/ccsds/aos_transfer_frame.{c,h}` を `examples/mobc` からコピーする. `CMakeLists.txt` も修正する. + 1. `VCDU` を `AOSTF` に置換する(TLM DB の csv なども). + 1. `vcdu` を `aostf` に置換する(TLM DB の csv なども). + 1. `vcdu.h` を `aos_transfer_frame.h` に置換する(include の修正). + 1. コンパイルが通らないところを直す.想定されるものは以下. + - `VCDU` 構造体 が `AosTransferFrame` 構造体に変わったので,変数定義の型名が変わっているはず. +- [#197](https://github.com/arkedge/c2a-core/pull/197): 影響範囲は MOBC のみ + 1. `src_user/tlm_cmd/ccsds/m_pdu.{c,h}` を消し,`src_user/tlm_cmd/ccsds/multiplexing_protocol_data_unit.{c,h}` を `examples/mobc` からコピーする. `CMakeLists.txt` も修正する. + 1. `m_pdu.h` を `multiplexing_protocol_data_unit.h` に置換する(include の修正). + 1. コンパイルが通らないところを直す.想定されるものは以下. + - `M_PDU` 構造体 が `MultiplexingProtocolDataUnit` 構造体に変わったので,変数定義の型名が変わっているはず. +- [#225](https://github.com/arkedge/c2a-core/pull/225) + 1. コンパイルが通るように,以下の include の修正を行う. + - `#include ` -> `#include ` + - `#include ` -> `#include ` + - `#include ` -> `#include ` + - `#include ` -> `#include ` +- [#214](https://github.com/arkedge/c2a-core/pull/214): 影響範囲は MOBC の CCSDS Data Link Layer の実装 + 1. AOS Space Data Link Protocol の実装を c2a-core のものに切り替える + 1. `src_user/tlm_cmd/ccsds/` 内の既存の実装を消す + - `aos_transfer_frame.{c,h}` + - `multiplexing_protocol_data_unit.{c,h}` + - `tcp_to_m_pdu.{c,h}` + 1. c2a-core の実装を使うように切り替える + - `src_core/ccsds/aos_space_data_link_protocol/` 内のソースファイルをビルド対象に追加する + - CMake の場合, `C2A_USE_CORE_CCSDS_AOS_SPACE_DATA_LINK_PROTOCOL` option を `ON` にするだけでよい (C2A user top の `CMakeLists.txt`) + - `examples/mobc/CMakeLists.txt` を参考にできる. + 1. コンパイルが通らないところを直す.ファイルの場所が変わったことによる include path の修正が想定される. + 1. TC Space Data Link Protocol の実装を c2a-core のものに切り替える + 1. `src_user/tlm_cmd/ccsds/` 内の既存の実装を消す + - `tc_segment.{c,h}` + - `tc_transfer_frame.{c,h}` + 1. c2a-core の実装を使うように切り替える + - `src_core/ccsds/tc_space_data_link_protocol/` 内のソースファイルをビルド対象に追加する + - CMake の場合, `C2A_USE_CORE_CCSDS_TC_SPACE_DATA_LINK_PROTOCOL` option を `ON` にするだけでよい (C2A user top の `CMakeLists.txt`) + - `examples/mobc/CMakeLists.txt` を参考にできる. + 1. コンパイルが通らないところを直す.ファイルの場所が変わったことによる include path の修正が想定される. +- [#219](https://github.com/arkedge/c2a-core/pull/219): 影響範囲は MOBC のみ + 1. PR の diff (`examples/mobc/src/`) に出ている修正を, user にも反映させる. +- [#220](https://github.com/arkedge/c2a-core/pull/220) + 1. `tlm_cmd/common_tlm_cmd_packet.h` にある命名規則に従うように, APID の命名を更新する. + + ## v4.0.1 (2023-11-09) ### Fixed @@ -211,12 +296,25 @@ Rust エコシステム / C2A Boom の導入については,ArkEdge Space Inc. 注意: migration 方法やスクリプトの修正などもありえるため,本 Migration Guide 及び Migration Script は c2a-core v4 系のその時点での最新版を参照すること.例えば,使う c2a-core version が v4.0.0 であっても,v4.1.0 や v4.2.0 がリリースされていれば,その時点のものを参照すること. -- v4.0.0-alpha.0 +- pytest への [rye](https://rye-up.com/) の導入(RECOMMENDED) + - [#59](https://github.com/arkedge/c2a-core/pull/59): Gaia pytest の導入 + - c2a-core [example user](./examples) では [WINGS](https://github.com/ut-issl/wings) に変わる新たな地上局システムである [Gaia](https://github.com/arkedge/gaia) を用いており,pytest のバックエンドシステムを [Gaia](https://github.com/arkedge/gaia) に切り替えている(RECOMMENDED) + - この切り替えと同時に,pytest project の依存関係管理のために [rye](https://rye-up.com/) を導入している. + - [Gaia](https://github.com/arkedge/gaia)への切り替えの有無に関わらず,pytest を含む Python の環境整備には [rye](https://rye-up.com/) を推奨する(RECOMMENDED) +- 現在使用している c2a-core version を確認する(MUST) + - [ut-issl/c2a-core](https://github.com/ut-issl/c2a-core) v3.8 系以前: サポート外.まずは v3.9 系までアップデートすること. + - [ut-issl/c2a-core v3.9.0](https://github.com/ut-issl/c2a-core/releases/tag/v3.9.0): サポート外.[ut-issl/c2a-core v3.9.1](https://github.com/ut-issl/c2a-core/releases/tag/v3.9.1) が結果的に breaking な release となってしまっているため,必ず [ut-issl/c2a-core v3.9.1](https://github.com/ut-issl/c2a-core/releases/tag/v3.9.1) を経由して v3.10 系にアップデートすること. + - [ut-issl/c2a-core v3.9.1](https://github.com/ut-issl/c2a-core/releases/tag/v3.9.1) ~ [ut-issl/c2a-core v3.9.2](https://github.com/ut-issl/c2a-core/releases/tag/v3.9.2): 移行はほぼ確実に可能と思われるが,明示的なサポートはしない.容易にアップデートが可能であるはずなため,事前に[ut-issl/c2a-core v3.10.0](https://github.com/ut-issl/c2a-core/releases/tag/v3.10.0) へアップデートすること. + - [ut-issl/c2a-core v3.10.0](https://github.com/ut-issl/c2a-core/releases/tag/v3.10.0): [v4.0.0](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0) ~ [v4.0.1](https://github.com/arkedge/c2a-core/releases/tag/v4.0.1) への移行をサポート. + - [ut-issl/c2a-core v3.10.1](https://github.com/ut-issl/c2a-core/releases/tag/v3.10.1): 限定的にサポート. + - [v4.0.0](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0) ~ [v4.0.1](https://github.com/arkedge/c2a-core/releases/tag/v4.0.1) への移行: 可能ではあるものの,[ut-issl/c2a-core v3.10.0](https://github.com/ut-issl/c2a-core/releases/tag/v3.10.0) からの差分は一時的に失われることになる + - v4.0.2(TBD) で移行をサポート予定 +- [v4.0.0-alpha.0](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-alpha.0) - [#19](https://github.com/arkedge/c2a-core/pull/18) の変更を取り込む -- v4.0.0-alpha.1 +- [v4.0.0-alpha.1](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-alpha.1) - [#21](https://github.com/arkedge/c2a-core/pull/21), [#24](https://github.com/arkedge/c2a-core/pull/24): IfWrapper -> HAL の rename: [v4-rename-ifwrapper.sh](./script/migration/v4-rename-ifwrapper.sh) を実行 - [#25](https://github.com/arkedge/c2a-core/pull/25): `IfWrapper/dc.h` を使用していた場合は,一旦 C2A user にヘッダを移す(`src/src_user/hal/dc.h`) -- v4.0.0-alpha.2 +- [v4.0.0-alpha.2](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-alpha.2) - [#18](https://github.com/arkedge/c2a-core/pull/18) の変更を取り込む - [yanked] [v4.0.0-beta.0](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.0): このバージョンは yank されているため,tag は存在するが使わないこと - [v4.0.0-beta.1](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.1) @@ -233,32 +331,45 @@ Rust エコシステム / C2A Boom の導入については,ArkEdge Space Inc. - [workflows-c2a v4.3.0](https://github.com/arkedge/workflows-c2a/releases/tag/v4.3.0) からこの構造に対応 - ただし,この挙動変更は workflows-c2a に対しては breaking change なので,新規に [.github/workflows/check-coding-rule-v4.yml](https://github.com/arkedge/workflows-c2a/blob/v4.3.0/.github/workflows/check-coding-rule-v4.yml) という workflow を生やしており,こちらに移行する必要がある([workflows-c2a#63](https://github.com/arkedge/workflows-c2a/pull/63)) - [v4.0.0-beta.2](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.2) + - [#100](https://github.com/arkedge/c2a-core/pull/100): rye の `build-backend` に pdm を指定する + - [c2a-enum-loader](./enum-loader) の相対パスでの指定への切り替えのためにすることになる(SHALL) + - これにより,rye の lockfile にそれを実行した PC での絶対パスが吐かれてしまうという既知の問題があるが,これは別途今後対処予定([#106](https://github.com/arkedge/c2a-core/issues/106))であり,v4.0.0 の段階では一旦許容するものとしている - [#99](https://github.com/arkedge/c2a-core/pull/99): [c2a-enum-loader](./enum-loader) を `src/src_core/enum-loader` のものに切り替える + - このバージョンから [ut-issl/c2a-enum-loader](https://github.com/ut-issl/c2a-enum-loader/) が c2a-core リポジトリに同梱されるようになった + - そのため,pytest で c2a-enum-loader を指定している部分を切り替える必要がある(SHOULD) + - `src/src_user/Test/pyproject.toml` の `dependencies` の `c2aenum` の部分を以下のようにする + - `"c2aenum @ file:///${PROJECT_ROOT}/../../src_core/enum-loader"` - [#111](https://github.com/arkedge/c2a-core/pull/111): [c2a-tlm-cmd-code-generator](./code-generator) を c2a-core のものに切り替える - - [v4.0.0-beta.2](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.2) 時点では `src/src_core/tlm-cmd-code-generator` - - [v4.0.0-beta.5](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.5)([#153](https://github.com/arkedge/c2a-core/pull/153))以降は `src/src_core/code-generator` - - [#86](https://github.com/arkedge/c2a-core/pull/86): CMake の option 修正 - - これは C2A user ごとに設定が異なるので,手動で確認・修正する必要がある + - このバージョンから [ut-issl/c2a-tlm-cmd-code-generator](https://github.com/ut-issl/c2a-tlm-cmd-code-generator) が c2a-core リポジトリに同梱されるようになった + - そのため,各 C2A user でのコード生成は以下のディレクトリで実行することになる(SHALL) + - [v4.0.0-beta.2](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.2) 時点では `src/src_core/tlm-cmd-code-generator` + - [v4.0.0-beta.5](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.5)([#153](https://github.com/arkedge/c2a-core/pull/153))以降は `src/src_core/code-generator` + - [#86](https://github.com/arkedge/c2a-core/pull/86): C2A 全体で共通の CMake の option 修正 + - C2A 全体での CMake option の命名の [コーディングルール](https://github.com/arkedge/c2a-core/blob/6a32752b6d5cea1ef5a5eb68c410cf705315170d/docs/general/coding_rule.md#cmake-option) が追加された + - C2A user ごとに設定があるので,手動で確認・修正する必要がある + - C2A user・c2a-core を横断する設定なので,c2a-core と命名を揃えなければならない(MUST) + - c2a-core でのマージ順などの関係上リリースが分かれているが,[#132](https://github.com/arkedge/c2a-core/pull/132) と同様の対応はこれと同種のものとして v4.0.0-beta.2 に更新するタイミングでまとめてやってもよい(MAY) + - あくまで c2a-core リポジトリでの作業としては C2A 全体で共通の option の整理を [#86](https://github.com/arkedge/c2a-core/pull/86) で,C2A user 固有の設定を [#132](https://github.com/arkedge/c2a-core/pull/132) で別途実施しているが,必ず v4.0.0-beta.3 でやらなければならない理由があるわけではない - [v4.0.0-beta.3](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.3) - [#122](https://github.com/arkedge/c2a-core/pull/122): Drivers ディレクトリの rename を実行([v4-rename-driver.sh](./script/migration/v4-rename-driver.sh)) - [c2a-tlm-cmd-code-generator](./code-generator) にも更新があるので,念のため再度コード生成を行うこと(migration script の実行時点で diff が出て,それと変わらないはず) - [#132](https://github.com/arkedge/c2a-core/pull/132): C2A user 側の CMake option の整理 - - これは C2A user ごとに設定が異なるので,手動で確認・修正する必要がある - - `C2A_USE_SCI_COM_WINGS` を default OFF にする + - C2A user ごとに設定が異なるので,手動で確認・修正する必要がある + - ただし,example user なので基本的には各 C2A user でもテンプレート的にこの実装が用いられているはずであり,同じ/同様の option 名を使っている場合は example user での命名に揃えることが推奨される(RECOMMENDED) + - `C2A_USE_SCI_COM_WINGS` を default OFF にする(RECOMMENDED) - このオプションを使う場合(つまり,SILS-S2E で WINGS と疎通する場合),S2E user の `CMakeLists.txt` ないしビルドスクリプト側でこのオプションを ON にして使うこと.あくまで C2A user 単体としては,この機能は optional であるべき. - [v4.0.0-beta.4](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.4) - [#146](https://github.com/arkedge/c2a-core/pull/146), [#147](https://github.com/arkedge/c2a-core/pull/147): Driver -> Component Driver の rename を実行([v4-rename-driver2](./script/migration/v4-rename-driver2.sh)) - [#143](https://github.com/arkedge/c2a-core/pull/143), [#144](https://github.com/arkedge/c2a-core/pull/144), [#150](https://github.com/arkedge/c2a-core/pull/150): Driver instance -> Component Service の rename を実行([v4-rename-driver-instance.sh](script/migration/v4-rename-driver-instance.sh)) + - 略語の 'DI' は短すぎるため,文脈が明らかなものしか sed していない.適宜検索して置き換えること(特にコマンド名になっているようなものに注意). - [v4.0.0-beta.5](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0-beta.5) - [#153](https://github.com/arkedge/c2a-core/pull/153): code generator のパス変更: `src/src_core/tlm-cmd-code-generator` -> `src/src_core/code-generator` - [#138](https://github.com/arkedge/c2a-core/pull/138): C2A user の pytest のディレクトリ構成のリファクタ: [v4-rename-test-dir.sh](./script/migration/v4-rename-test-dir.sh) を実行 - [#154](https://github.com/arkedge/c2a-core/pull/154), [#155](https://github.com/arkedge/c2a-core/pull/155): [v4-rename-component-driver-prefix.sh](./script/migration/v4-rename-component-driver-prefix.sh) を実行 - [#165](https://github.com/arkedge/c2a-core/pull/165), [#166](https://github.com/arkedge/c2a-core/pull/166), [#169](https://github.com/arkedge/c2a-core/pull/169): [v4-rename-if-list.sh](./script/migration/v4-rename-if-list.sh) -- v4.0.0 - - [#167](https://github.com/arkedge/c2a-core/pull/167), [#168](https://github.com/arkedge/c2a-core/pull/168): `src/src_user/Settings` -> `src/src_user/settings` +- [v4.0.0](https://github.com/arkedge/c2a-core/releases/tag/v4.0.0) + - [#167](https://github.com/arkedge/c2a-core/pull/167), [#168](https://github.com/arkedge/c2a-core/pull/168): `src/src_user/Settings` -> `src/src_user/settings`: [v4-rename-settings.sh](./script/migration/v4-rename-settings.sh) を実行 - [#172](https://github.com/arkedge/c2a-core/pull/172): `src/src_user/settings/tlm_cmd/data_base` -> `tlm-cmd-db` の rename を実行([v4-move-db-dir.sh](script/migration/v4-move-db-dir.sh)) -- pytest への rye の導入 - - [#100](https://github.com/arkedge/c2a-core/pull/100): `build-backend` に pdm を指定する ## Previous Releases diff --git a/CMakeLists.txt b/CMakeLists.txt index b84b193e6..95580c75d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,11 @@ option(C2A_USE_ALL_CORE_APPS "Use C2A-core all Applications" ON) option(C2A_USE_ALL_CORE_TEST_APPS "Use C2A-core all Test Applications" ON) option(C2A_USE_ALL_CORE_LIB "Use C2A-core all library" ON) +## C2A CCSDS select +# See alse; /docs/core/ccsds.md +option(C2A_USE_CORE_CCSDS_AOS_SPACE_DATA_LINK_PROTOCOL "Use C2A-core CCSDS AOS SPACE DATA LINK PROTOCOL implementation" OFF) +option(C2A_USE_CORE_CCSDS_TC_SPACE_DATA_LINK_PROTOCOL "Use C2A-core CCSDS TC SPACE DATA LINK PROTOCOL implementation" OFF) + option(C2A_USE_SIMPLE_LIBC "Use C2A-core hosted simple libc (c2a-core/library/libc) implementation" OFF) set(C2A_CORE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) @@ -53,9 +58,9 @@ set(C2A_SRCS tlm_cmd/packet_list.c tlm_cmd/telemetry_frame.c tlm_cmd/telemetry_generator.c - tlm_cmd/ccsds/cmd_space_packet.c - tlm_cmd/ccsds/space_packet.c - tlm_cmd/ccsds/tlm_space_packet.c + tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.c + tlm_cmd/ccsds/space_packet_protocol/space_packet.c + tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.c ) if(C2A_USE_STDINT_WRAPPER) @@ -99,4 +104,14 @@ if(C2A_USE_ALL_CORE_LIB) target_sources(${PROJECT_NAME} PUBLIC $) endif() +if(C2A_USE_CORE_CCSDS_AOS_SPACE_DATA_LINK_PROTOCOL) + add_subdirectory(tlm_cmd/ccsds/aos_space_data_link_protocol) + target_sources(${PROJECT_NAME} PUBLIC $) +endif() + +if(C2A_USE_CORE_CCSDS_TC_SPACE_DATA_LINK_PROTOCOL) + add_subdirectory(tlm_cmd/ccsds/tc_space_data_link_protocol) + target_sources(${PROJECT_NAME} PUBLIC $) +endif() + include(common.cmake) diff --git a/Cargo.toml b/Cargo.toml index e093b9f42..5517a88af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "4.0.1" +version = "4.1.0" [workspace] resolver = "2" @@ -32,8 +32,6 @@ name = "c2a-core" version.workspace = true edition = "2021" -links = "c2a-core" - description = "Core of Command Centric Architecture" readme = "README.md" license = "MIT" diff --git a/examples/mobc/Doxyfile b/Doxyfile similarity index 99% rename from examples/mobc/Doxyfile rename to Doxyfile index 01623aba1..c2effb195 100644 --- a/examples/mobc/Doxyfile +++ b/Doxyfile @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ../../../../docs/c2a-core +OUTPUT_DIRECTORY = docs/ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -918,7 +918,7 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = +EXCLUDE = library/stdint_wrapper/ # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded @@ -2220,7 +2220,7 @@ SEARCH_INCLUDES = YES # preprocessor. # This tag requires that the tag SEARCH_INCLUDES is set to YES. -INCLUDE_PATH = +INCLUDE_PATH = examples/mobc/src/ # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the diff --git a/applications/memory_dump.c b/applications/memory_dump.c index 4063eacf1..d1187abc5 100644 --- a/applications/memory_dump.c +++ b/applications/memory_dump.c @@ -110,7 +110,7 @@ CCP_CmdRet Cmd_MEM_DUMP_REGION_SEQ(const CommonCmdPacket* packet) if (num_dumps >= 8) { // パケット生成回数の上限は8回とする。 - // 32kbpsでのDL時に8VCDU/secで1秒分の通信量。 + // 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。 // これを超える場合は複数回コマンドを送信して対応する。 return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER); } @@ -132,7 +132,7 @@ CCP_CmdRet Cmd_MEM_DUMP_REGION_RND(const CommonCmdPacket* packet) if (num_dumps >= 8) { // パケット生成回数の上限は8回とする。 - // 32kbpsでのDL時に8VCDU/secで1秒分の通信量。 + // 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。 // これを超える場合は複数回コマンドを送信して対応する。 return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER); } @@ -170,7 +170,7 @@ CCP_CmdRet Cmd_MEM_DUMP_SINGLE(const CommonCmdPacket* packet) if (num_dumps >= 8) { // パケット生成回数の上限は8回とする。 - // 32kbpsでのDL時に8VCDU/secで1秒分の通信量。 + // 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。 // これを超える場合は複数回コマンドを送信して対応する。 return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER); } diff --git a/applications/timeline_command_dispatcher.c b/applications/timeline_command_dispatcher.c index f97c75191..fed7c7c38 100644 --- a/applications/timeline_command_dispatcher.c +++ b/applications/timeline_command_dispatcher.c @@ -254,6 +254,7 @@ CCP_CmdRet Cmd_TLCD_DEPLOY_BLOCK(const CommonCmdPacket* packet) TLCD_ID id = (TLCD_ID)CCP_get_param_from_packet(packet, 0, uint8_t); bct_id_t block_no = CCP_get_param_from_packet(packet, 1, bct_id_t); PL_ACK ack; + const uint32_t note = ((0x000000ff & id) << 24) | (0x00ffffff & block_no); if (CCP_get_param_len(packet) != (1 + SIZE_OF_BCT_ID_T)) { @@ -276,12 +277,20 @@ CCP_CmdRet Cmd_TLCD_DEPLOY_BLOCK(const CommonCmdPacket* packet) ack = PL_deploy_block_cmd(&(PH_tl_cmd_list[id]), block_no, TMGR_get_master_total_cycle()); - if (ack != PL_SUCCESS) + if (ack == PL_BC_LIST_CLEARED) + { + EL_record_event((EL_GROUP)EL_CORE_GROUP_TLCD_DEPLOY_BLOCK, + (uint32_t)PL_BC_LIST_CLEARED, + EL_ERROR_LEVEL_HIGH, + note); + return CCP_make_cmd_ret(CCP_EXEC_ILLEGAL_CONTEXT, (uint32_t)ack); + } + else if (ack != PL_SUCCESS) { EL_record_event((EL_GROUP)EL_CORE_GROUP_TLCD_DEPLOY_BLOCK, (uint32_t)ack, EL_ERROR_LEVEL_LOW, - (uint32_t)( ((0x000000ff & id) << 24) | (0x00ffffff & block_no) )); + note); if (ack == PL_BC_TIME_ADJUSTED) { return CCP_make_cmd_ret(CCP_EXEC_SUCCESS, (uint32_t)ack); diff --git a/build.rs b/build.rs index f849f281e..0315f33da 100644 --- a/build.rs +++ b/build.rs @@ -7,8 +7,6 @@ use semver::Version; use clang::{token::TokenKind::Punctuation, Clang, Index}; fn main() { - println!("cargo:source_dir={}", env!("CARGO_MANIFEST_DIR")); - let ver = env!("CARGO_PKG_VERSION"); let ver = Version::parse(ver).unwrap(); dbg!(&ver); diff --git a/c2a_core_main.h b/c2a_core_main.h index ab102c4d3..ed70863eb 100644 --- a/c2a_core_main.h +++ b/c2a_core_main.h @@ -8,8 +8,8 @@ void C2A_core_main(void); // これらの番号は,リリース時に手動で合わせる // 詳細: docs/general/release.md #define C2A_CORE_VER_MAJOR (4) -#define C2A_CORE_VER_MINOR (0) -#define C2A_CORE_VER_PATCH (1) +#define C2A_CORE_VER_MINOR (1) +#define C2A_CORE_VER_PATCH (0) #define C2A_CORE_VER_PRE ("") #endif diff --git a/docs/README.md b/docs/README.md index 777af589c..c624ce479 100644 --- a/docs/README.md +++ b/docs/README.md @@ -37,6 +37,7 @@ C2A に関する説明の棲み分けは,次のようになっています. 1. Core Layer 1. Overview 1. [Communication](./core/communication.md) + 1. [CCSDS](./core/ccsds.md) 1. [Tips](./core/tips.md) 1. Component Driver 1. [Overview](./component_driver/overview.md) diff --git a/docs/core/ccsds.md b/docs/core/ccsds.md new file mode 100644 index 000000000..869f4c506 --- /dev/null +++ b/docs/core/ccsds.md @@ -0,0 +1,24 @@ +# CCSDS + +## 概要 +C2A Core に実装された CCSDS (Consultative Committee for Space Data Systems) によって規定される宇宙データシステムの標準規格 Space Communications Protocols についてまとめる. +CCSDS 技術仕様文書は [ブルーブック(Blue Books):全85文書](https://stage.tksc.jaxa.jp/ccsds/docs/doc_blue.html) を参照すること. + + +## Space Packet Protocol +[`tlm_cmd/ccsds/space_packet_protocol`](/tlm_cmd/ccsds/space_packet_protocol/) に配置される. + +[Core/Communication.md#c2a-標準-space-packet-定義](./communication.md#c2a-標準-space-packet-定義) などを参照のこと. + + +## AOS Space Data Link Protocol / TC Space Data Link Protocol +[`tlm_cmd/ccsds/aos_space_data_link_protocol`](/tlm_cmd/ccsds/aos_space_data_link_protocol/), [`tlm_cmd/ccsds/tc_space_data_link_protocol`](/tlm_cmd/ccsds/tc_space_data_link_protocol/) に配置される. + +基本的には,地上局と通信する無線機 (STX や SRX) に接続される OBC (MOBC など) 向けのコードとなる. + +AOS Space Data Link Protocol や TC Space Data Link Protocol は,様々な設計パラメタがあるが,ここでのコードは,ある特定の設計パラメタにおける実装であることに注意すること. +したがって,現時点では汎用性の低いコードが配置されている. +(今後,適切にリファクタリングする予定.) + +また,本コードをコンパイル対象に加えると,少なくない RAM を static に確保してしまうため,デフォルトではコンパイル対象には含まれない. +コンパイル対象に含める場合は, FIXME: で設定すること. diff --git a/docs/core/communication.md b/docs/core/communication.md index 25a3f71a6..d0d063022 100644 --- a/docs/core/communication.md +++ b/docs/core/communication.md @@ -166,13 +166,13 @@ https://github.com/arkedge/c2a-core/blob/45d78a05c339c285b5aa0c2fcbf57c1b105137e - BC: GS から MOBC に届き, MOBC で BC 登録されずに,そのまま AOBC へ配送される.配送時, Destination Type は自分宛 (TO_ME) に上書きされ, AOBC で BC として登録 & 実行される. - 地上局 SW での実装まとめ - MOBC 宛 - - APID: APID_MOBC_CMD + - APID: APID_CMD_TO_MOBC - CCP_DEST_TYPE: CCP_DEST_TYPE_TO_ME - AOBC 宛(AOBC 直送) - - APID: APID_AOBC_CMD + - APID: APID_CMD_TO_AOBC - CCP_DEST_TYPE: CCP_DEST_TYPE_TO_AOBC - AOBC 宛(MOBC でキューに入り,実行時に AOBC に転送) - - APID: APID_AOBC_CMD + - APID: APID_CMD_TO_AOBC - CCP_DEST_TYPE: CCP_DEST_TYPE_TO_ME diff --git a/docs/general/release.md b/docs/general/release.md index 10ecda630..cdd941ace 100644 --- a/docs/general/release.md +++ b/docs/general/release.md @@ -1,79 +1,49 @@ # Release -## リリース -現在, `main` ブランチがリリースブランチとなっている. -リリースには,本 Release と Pre-release の2つを設ける. +デフォルトのリリースブランチは `main` とする. -- 本 Release - - まとまった機能更新のリリース. - - バージョンを上げる. - - `v3.4.0` → `v3.5.0` など -- Pre-release - - [Tools/Overview](../tools/overview.md) などに対して非互換なアップデートが入った場合や,Bug fix や 大きな機能更新などで,本 Release 前に User サイドで最新の Core が必要になることが予想される際のリリース. - - `beta` をリリースする. - - `v3.4.0` → `v3.5.0-beta.0` など - - なお,メジャーバージョンアップ中では様々な破壊的な変更が連続するため,煩雑さ低減のためにツール等の互換性維持のための Pre-release は,一定程度免除することが可能である. +また,主な開発とは別に,既存のリリースに対するメンテナンスのためのリリースを行う際は `stable-4.1` のようなブランチを切ってリリースブランチとする. -リリースの手順は以下のようにする. +互換性の維持は基本的には(Pre Release ではない)本 Release を対象に行う. +ただし,[Tools](../tools/overview.md) などの外部プロジェクトに対して非互換となるような大きな変更を入れる際には,その変更をマージした時点で Pre Release を行うものとする. -### 本 Release +これは [Tools](../tools/overview.md) などのテストを迅速に行ったり,(非推奨ではあるが)Pre Release なバージョンの c2a-core を使っている C2A user で使用する [Tools](../tools/overview.md) などのバージョンを明らかにするための処置となる. +そのため,破壊的な変更が多く発生することが明らかな major update 中には,煩雑さ軽減のためこの処置は一定程度免除してもよいものとする. -1. バージョン番号をインクリメントする PR (Pull Request) を発行し,`develop` ブランチへ merge する. - - [c2a_core_main.h](https://github.com/arkedge/c2a-core/blob/develop/c2a_core_main.h) 内の `C2A_CORE_VER_*` をインクリメントする. - - [Cargo.toml](https://github.com/arkedge/c2a-core/blob/develop/Cargo.toml) 内の `workspace.package.version` をインクリメントする. +## Release 手順 + +1. バージョン番号をインクリメントする + - [c2a_core_main.h](https://github.com/arkedge/c2a-core/blob/main/c2a_core_main.h) 内の `C2A_CORE_VER_*` をインクリメントする. + - Pre Release でない場合,`#define C2A_CORE_VER_PRE` は `("")` とする. + - Pre Release のときは `#define C2A_CORE_VER_PRE` に `("beta.0")` などをセットする. + - [Cargo.toml](https://github.com/arkedge/c2a-core/blob/main/Cargo.toml) 内の `workspace.package.version` をインクリメントする. +1. リリースのための PR (Pull Request) をリリースブランチに発行する - この後リリースを控えるので,念の為すべてのテストを再度回す. - - `#define C2A_CORE_VER_PRE` は `("")` とする. - PR タイトルは `Update version (v3.4.0)` のようにする. - - 例: https://github.com/ut-issl/c2a-core/pulls?q=is%3Apr+Update+version -1. バージョン上げ PR が merge されたら,直ちに(他の PR を止め) `develop` から `main` に PR を発行し,すべてのテストを回し, merge する. - - PR タイトルは以下のようにする. - - `Update main (v3.4.0) on 2021-12-31` - - `Update main (v3.4.0) on 2021-12-31 - ほげほげ` - PR のディスクリプションは [これ](https://github.com/ut-issl/c2a-core/pull/151) のように書く. - - 例: https://github.com/ut-issl/c2a-core/pulls?q=is%3Apr+Update+main -1. [tag](https://github.com/ut-issl/c2a-core/tags) を打ち, [release](https://github.com/ut-issl/c2a-core/releases) を発行する. + - 例: https://github.com/arkedge/c2a-core/pulls?q=is%3Apr+Update+version +1. リリースのための PR を merge して,その merge commit に [Git tag](https://github.com/arkedge/c2a-core/tags) を打つ - tag 名は `v3.4.0` のようにする. - - release 名は `v3.4.0` や `v3.3.1 初版` のようにする. - - release には以下を含める. - - Release Note として簡潔な更新差分の箇条書き - - `main` に merge したときの PR のリンク -1. `cargo publish` する. - -これを,だいたい以下のような粒度で行う. - -- 最後のリリースからおおよそ1ヶ月程度が経過した場合(更新が少ない場合を除く) -- まとまった機能実装が一段落した場合 - -ただし,あるまとまった機能の実装の PR が複数に分割され,一部がまだ merge されていない場合はリリースを控えること. - -### Pre-release -1. ある `feature` ブランチから `develop` ブランチへの PR が発行されたとき,それが Pre-release に相当する場合,その PR は Pre-release PR と呼び,次のような手順を踏む. - - PR タイトルは以下のようにする. - - `Pre Release (v3.5.0-beta.0): 通常のPRのタイトル` - - 対応する Tools の PR のリンクを貼る. - - `#define C2A_CORE_VER_PRE` に `("beta.0")` などをセットする. - - 本 Release 後最初の Pre-release の場合, `C2A_CORE_VER_*` をインクリメントする. - - [Cargo.toml](https://github.com/arkedge/c2a-core/blob/develop/Cargo.toml) 内の `package.version` を同様にインクリメントする. - - 例: https://github.com/ut-issl/c2a-core/pulls?q=is%3Apr+Pre+Release -1. [tag](https://github.com/ut-issl/c2a-core/tags) を打ち, [release](https://github.com/ut-issl/c2a-core/releases) を Pre-release として発行する. - - Pre-release PR を merge したその merge commit(`develop` ブランチ上)で tag を打つ. - - tag 名は `v3.5.0-beta.0` のようにする. - - release 名は `v3.5.0-beta.0` のようにする. - - release には以下を含める. - - 非互換となった Tools の新しい バージョン (Release) へのリンク - - `develop` に merge したときの PR のリンク + - Pre Release のときは `v3.5.0-beta.0` のようにする. 1. `cargo publish` する. +1. [GitHub Release](https://github.com/ut-issl/c2a-core/releases) を発行する. + - Release Title は `v3.4.0` のようにする. + - Release Note には以下を含める. + - 簡潔な更新差分の箇条書き + - `main` に merge したときの PR のリンク + - サポートする Tools のバージョン ## バージョニング [Semantic Versioning](https://semver.org) を採用する. +ただし,c2a-core における Public API は定義中であり,C言語のフレームワークであるという特性上あらゆる変更が容易に破壊的な変更となってしまうため,minor update でもユーザ側対応は必須となることがほとんどであることには注意すること. + -## C2A Tools との互換性について -少なくとも, [Tools/Overview](../tools/overview.md) の Tool に後方互換性のない更新があった場合は,新しいバージョンをリリースする. +## C2A Tools のリリース Tool のリリースには,以下に注意する. -- C2A と同様の規則で Relase を発行する. +- c2a-core と同様の規則で Relase を発行する. - release には以下を含める. - Release Note として簡潔な更新差分の箇条書き - 対応する最小 C2A Core バージョン diff --git a/examples/mobc/CMakeLists.txt b/examples/mobc/CMakeLists.txt index 77f97b445..0583bd82d 100644 --- a/examples/mobc/CMakeLists.txt +++ b/examples/mobc/CMakeLists.txt @@ -20,6 +20,10 @@ option(C2A_BUILD_WITH_SILS_MOCKUP "Build C2A with SILS mockup for check undefine option(C2A_BUILD_FOR_SILS "Build C2A for SILS target" ON) +# core に同梱されている CCSDS の実装を使う +set(C2A_USE_CORE_CCSDS_AOS_SPACE_DATA_LINK_PROTOCOL ON) +set(C2A_USE_CORE_CCSDS_TC_SPACE_DATA_LINK_PROTOCOL ON) + if(C2A_BUILD_WITH_SILS_MOCKUP) set(C2A_BUILD_AS_CXX OFF) endif() diff --git a/examples/mobc/src/src_user/applications/component_service/csrv_gs.c b/examples/mobc/src/src_user/applications/component_service/csrv_gs.c index 40a9e6171..1b06015ed 100644 --- a/examples/mobc/src/src_user/applications/component_service/csrv_gs.c +++ b/examples/mobc/src/src_user/applications/component_service/csrv_gs.c @@ -123,21 +123,21 @@ static RESULT CSRV_GS_rt_tlm_packet_handler_app_(void) { T2M_ACK ack = T2M_form_m_pdu(&CSRV_GS_rt_tlm_packet_handler_.tc_packet_to_m_pdu, &PH_rt_tlm_list, - &CSRV_GS_rt_tlm_packet_handler_.vcdu.m_pdu); + &CSRV_GS_rt_tlm_packet_handler_.aostf.m_pdu); if (ack != T2M_SUCCESS) return RESULT_OK; - // Realtime VCDU カウンタの設定 - VCDU_setup_realtime_vcdu_hdr(&CSRV_GS_rt_tlm_packet_handler_.vcdu, CSRV_GS_rt_tlm_packet_handler_.vcdu_counter); - CSRV_GS_rt_tlm_packet_handler_.vcdu_counter = VCDU_calc_next_counter(CSRV_GS_rt_tlm_packet_handler_.vcdu_counter); + // Realtime AOSTF カウンタの設定 + AOSTF_setup_realtime_aostf_hdr(&CSRV_GS_rt_tlm_packet_handler_.aostf, CSRV_GS_rt_tlm_packet_handler_.aostf_counter); + CSRV_GS_rt_tlm_packet_handler_.aostf_counter = AOSTF_calc_next_counter(CSRV_GS_rt_tlm_packet_handler_.aostf_counter); // CLCW の設定 // CMD の VCID と TLM の VCID は独立で関係がない // TLM の VCID 種別(Realtime, Replay)によらず CLCW を設定して良い // CLCW が対応する CMD の VCID は CLCW の内部で指定される - VCDU_set_clcw(&CSRV_GS_rt_tlm_packet_handler_.vcdu, GS_form_clcw()); + AOSTF_set_clcw(&CSRV_GS_rt_tlm_packet_handler_.aostf, GS_form_clcw()); - // 完成した VCDU を RT VCDU として送出 - GS_send_vcdu(&gs_driver_, &CSRV_GS_rt_tlm_packet_handler_.vcdu); + // 完成した AOSTF を RT AOSTF として送出 + GS_send_aostf(&gs_driver_, &CSRV_GS_rt_tlm_packet_handler_.aostf); } return RESULT_OK; @@ -158,21 +158,21 @@ static RESULT CSRV_GS_rp_tlm_packet_handler_app_(void) { T2M_ACK ack = T2M_form_m_pdu(&CSRV_GS_rp_tlm_packet_handler_.tc_packet_to_m_pdu, &PH_rp_tlm_list, - &CSRV_GS_rp_tlm_packet_handler_.vcdu.m_pdu); + &CSRV_GS_rp_tlm_packet_handler_.aostf.m_pdu); if (ack != T2M_SUCCESS) return RESULT_OK; - // Replay VCDU カウンタの設定 - VCDU_setup_replay_vcdu_hdr(&CSRV_GS_rp_tlm_packet_handler_.vcdu, CSRV_GS_rp_tlm_packet_handler_.vcdu_counter); - CSRV_GS_rp_tlm_packet_handler_.vcdu_counter = VCDU_calc_next_counter(CSRV_GS_rp_tlm_packet_handler_.vcdu_counter); + // Replay AOSTF カウンタの設定 + AOSTF_setup_replay_aostf_hdr(&CSRV_GS_rp_tlm_packet_handler_.aostf, CSRV_GS_rp_tlm_packet_handler_.aostf_counter); + CSRV_GS_rp_tlm_packet_handler_.aostf_counter = AOSTF_calc_next_counter(CSRV_GS_rp_tlm_packet_handler_.aostf_counter); // CLCW の設定 // CMD の VCIDと TLM の VCID は独立で関係がない // TLM の VCID 種別(Realtime, Replay) によらず CLCW を設定して良い // CLCW が対応する CMD の VCID は CLCW の内部で指定される - VCDU_set_clcw(&CSRV_GS_rp_tlm_packet_handler_.vcdu, GS_form_clcw()); + AOSTF_set_clcw(&CSRV_GS_rp_tlm_packet_handler_.aostf, GS_form_clcw()); - // 完成した VCDU を RP VCDU として送出 - GS_send_vcdu(&gs_driver_, &CSRV_GS_rp_tlm_packet_handler_.vcdu); + // 完成した AOSTF を RP AOSTF として送出 + GS_send_aostf(&gs_driver_, &CSRV_GS_rp_tlm_packet_handler_.aostf); } return RESULT_OK; diff --git a/examples/mobc/src/src_user/applications/component_service/csrv_gs.h b/examples/mobc/src/src_user/applications/component_service/csrv_gs.h index 448103eec..e23135c1d 100644 --- a/examples/mobc/src/src_user/applications/component_service/csrv_gs.h +++ b/examples/mobc/src/src_user/applications/component_service/csrv_gs.h @@ -8,8 +8,8 @@ #include #include "../../component_driver/com/gs.h" -#include "../../tlm_cmd/ccsds/tcp_to_m_pdu.h" -#include "../../tlm_cmd/ccsds/vcdu.h" +#include +#include #include /** @@ -19,8 +19,8 @@ typedef struct { TcpToMPdu tc_packet_to_m_pdu; //!< PL から取り出した tc_packet を M_PDU に変換する - VCDU vcdu; //!< 送信するVCDU - uint32_t vcdu_counter; //!< VCDU counter + AosTransferFrame aostf; //!< 送信するAOSTF + uint32_t aostf_counter; //!< AOSTF counter } CSRV_GS_TlmPacketHandler; extern const GS_Driver* const gs_driver; diff --git a/examples/mobc/src/src_user/component_driver/com/gs.c b/examples/mobc/src/src_user/component_driver/com/gs.c index 52bdcdb03..7e4859b1a 100644 --- a/examples/mobc/src/src_user/component_driver/com/gs.c +++ b/examples/mobc/src/src_user/component_driver/com/gs.c @@ -10,10 +10,10 @@ #include #include "../../hal/ccsds_user.h" -#include "../../tlm_cmd/ccsds/tc_transfer_frame.h" +#include #include #include -#include +#include #define GS_RX_HEADER_SIZE (2) @@ -26,7 +26,7 @@ // それぞれ AD, BD, BC static uint8_t GS_rx_header_[GS_RX_HEADER_NUM][GS_RX_HEADER_SIZE]; -static uint8_t GS_tx_frame_[VCDU_LEN]; +static uint8_t GS_tx_frame_[AOSTF_LEN]; /** * @brief CCSDS 側 Driver の DS 上での初期化設定 @@ -84,8 +84,8 @@ CDS_INIT_ERR_CODE GS_init(GS_Driver* gs_driver, GS_rx_header_[2][0] |= (uint8_t)((TCTF_TYPE_BC & 0x0f) << 4); for (stream = 0; stream < GS_RX_HEADER_NUM; ++stream) { - GS_rx_header_[stream][0] |= (uint8_t)((TCTF_SCID_SAMPLE_SATELLITE & 0x3ff) >> 8); - GS_rx_header_[stream][1] |= (uint8_t)(TCTF_SCID_SAMPLE_SATELLITE & 0xff); + GS_rx_header_[stream][0] |= (uint8_t)((TCTD_SCID_MY_ID & 0x3ff) >> 8); + GS_rx_header_[stream][1] |= (uint8_t)(TCTD_SCID_MY_ID & 0xff); } ret_ccsds = CDS_init_streams(&gs_driver->driver_ccsds.super, @@ -114,8 +114,8 @@ CDS_INIT_ERR_CODE GS_init(GS_Driver* gs_driver, gs_driver->info[i].rx.tctf.bd_rec_status = GS_VALIDATE_ERR_OK; gs_driver->info[i].tx.send_cycle = 0; - gs_driver->info[i].tx.vcid = VCDU_VCID_UNKNOWN; - gs_driver->info[i].tx.vcdu_counter = 0; + gs_driver->info[i].tx.vcid = AOSTF_VCID_UNKNOWN; + gs_driver->info[i].tx.aostf_counter = 0; } gs_driver->ccsds_info.buffer_num = 8; @@ -152,7 +152,7 @@ static void GS_load_default_driver_super_init_settings_(ComponentDriverSuper* p_ CDSSC_enable_strict_frame_search(p_stream_config); // 複数ストリームがあり,かつ論理的な受信漏れを0にするため. CDSSC_set_tx_frame(p_stream_config, GS_tx_frame_); // 全 stream, uart, ccsds に関わらず共通 - CDSSC_set_tx_frame_size(p_stream_config, VCDU_LEN); // VCDU を送信 + CDSSC_set_tx_frame_size(p_stream_config, AOSTF_LEN); // AOSTF を送信 CDSSC_set_rx_header(p_stream_config, GS_rx_header_[stream], GS_RX_HEADER_SIZE); CDSSC_set_rx_frame_size(p_stream_config, -1); // 可変長 @@ -254,21 +254,21 @@ static CDS_ERR_CODE GS_analyze_rec_data_(CDS_StreamConfig* p_stream_config, void return CDS_ERR_CODE_OK; } -CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu) +CDS_CMD_ERR_CODE GS_send_aostf(GS_Driver* gs_driver, const AosTransferFrame* aostf) { CDS_ERR_CODE ret_ccsds = CDS_ERR_CODE_OK; CDS_ERR_CODE ret_uart = CDS_ERR_CODE_OK; - size_t vcdu_size = sizeof(VCDU); + size_t aostf_size = sizeof(AosTransferFrame); // パディングが無ければ元を GS_tx_frame_ にコピーさせる (444Byte) のコピーが無駄 - if (vcdu_size == VCDU_LEN) + if (aostf_size == AOSTF_LEN) { - CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], (uint8_t*)vcdu); - CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], (uint8_t*)vcdu); + CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], (uint8_t*)aostf); + CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], (uint8_t*)aostf); } else { - VCDU_generate_byte_stream(vcdu, GS_tx_frame_); // 送信元にセット 消したいなぁ... + AOSTF_generate_byte_stream(aostf, GS_tx_frame_); // 送信元にセット 消したいなぁ... CDSSC_set_tx_frame(&gs_driver->driver_ccsds.super.stream_config[GS_TX_STREAM], GS_tx_frame_); CDSSC_set_tx_frame(&gs_driver->driver_uart.super.stream_config[GS_TX_STREAM], GS_tx_frame_); } @@ -278,8 +278,8 @@ CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu) if (gs_driver->ccsds_info.buffer_num) { gs_driver->info[GS_PORT_TYPE_CCSDS].tx.send_cycle = TMGR_get_master_total_cycle(); - gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcid = VCDU_get_vcid(vcdu); - gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcdu_counter = VCDU_get_vcdu_counter(vcdu); + gs_driver->info[GS_PORT_TYPE_CCSDS].tx.vcid = AOSTF_get_vcid(aostf); + gs_driver->info[GS_PORT_TYPE_CCSDS].tx.aostf_counter = AOSTF_get_aostf_counter(aostf); // DS 側の名称が cmd なだけで送信しているのは TLM ret_ccsds = CDS_send_general_cmd(&gs_driver->driver_ccsds.super, GS_TX_STREAM); @@ -289,8 +289,8 @@ CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu) if (gs_driver->driver_uart.is_tlm_on) { gs_driver->info[GS_PORT_TYPE_UART].tx.send_cycle = TMGR_get_master_total_cycle(); - gs_driver->info[GS_PORT_TYPE_UART].tx.vcid = VCDU_get_vcid(vcdu); - gs_driver->info[GS_PORT_TYPE_UART].tx.vcdu_counter = VCDU_get_vcdu_counter(vcdu); + gs_driver->info[GS_PORT_TYPE_UART].tx.vcid = AOSTF_get_vcid(aostf); + gs_driver->info[GS_PORT_TYPE_UART].tx.aostf_counter = AOSTF_get_aostf_counter(aostf); // DS 側の名称が cmd なだけで送信しているのは TLM ret_uart = CDS_send_general_cmd(&gs_driver->driver_uart.super, GS_TX_STREAM); diff --git a/examples/mobc/src/src_user/component_driver/com/gs.h b/examples/mobc/src/src_user/component_driver/com/gs.h index 614e3877e..c19d92565 100644 --- a/examples/mobc/src/src_user/component_driver/com/gs.h +++ b/examples/mobc/src/src_user/component_driver/com/gs.h @@ -10,7 +10,7 @@ #include #include #include "../../hal/ccsds_user.h" -#include "../../tlm_cmd/ccsds/vcdu.h" +#include #include "gs_validate.h" #define GS_RX_HEADER_NUM (3) @@ -53,8 +53,8 @@ typedef struct struct { cycle_t send_cycle; //!< 最後に送信したときの時刻 - VCDU_VCID vcid; //!< 送信した TLM のタイプ - uint32_t vcdu_counter; //!< VCDU counter + AOSTF_VCID vcid; //!< 送信した TLM のタイプ + uint32_t aostf_counter; //!< AOSTF counter } tx; } GS_Info; @@ -106,13 +106,13 @@ CDS_INIT_ERR_CODE GS_init(GS_Driver* gs_driver, CDS_REC_ERR_CODE GS_rec_tctf(GS_Driver* gs_driver); /** - * @brief 地上に向けて TLM を送信. 形式は VCDU + * @brief 地上に向けて TLM を送信. 形式は AOSTF * @note CDS_send_general_cmd が使われているが, これは DS は MOBC コンポ間を想定しているため, MOBC から見るとコンポに cmd を送信している様に見える, が 今回は MOBC から地上に TLM を送信している - * @note TLM 送信, 形式は VCDU + * @note TLM 送信, 形式は AOSTF * @param[in] gs_driver: ドライバー - * @param[in] vcdu: 送信する VCDU. 場合によってはそのまま DS に渡すので, local変数ではなくstaticな変数を渡すこと + * @param[in] aostf: 送信する AOSTF. 場合によってはそのまま DS に渡すので, local変数ではなくstaticな変数を渡すこと * @return CDS_CMD_ERR_CODE: 送信結果 */ -CDS_CMD_ERR_CODE GS_send_vcdu(GS_Driver* gs_driver, const VCDU* vcdu); +CDS_CMD_ERR_CODE GS_send_aostf(GS_Driver* gs_driver, const AosTransferFrame* aostf); #endif diff --git a/examples/mobc/src/src_user/component_driver/com/gs_validate.c b/examples/mobc/src/src_user/component_driver/com/gs_validate.c index 7e8a09c27..67c9e5c23 100644 --- a/examples/mobc/src/src_user/component_driver/com/gs_validate.c +++ b/examples/mobc/src/src_user/component_driver/com/gs_validate.c @@ -5,8 +5,8 @@ */ #include "gs_validate.h" -#include "../../tlm_cmd/ccsds/tc_segment.h" -#include +#include +#include #define GS_RECEIVE_WINDOW (256) #define GS_POSITIVE_WINDOW_WIDTH_DEFAULT (64) // FIXME: 要検討 @@ -84,7 +84,7 @@ GS_VALIDATE_ERR GS_validate_tctf(const TcTransferFrame* tctf) static GS_VALIDATE_ERR GS_check_tctf_header_(const TcTransferFrame* tctf) { if (TCTF_get_ver(tctf) != TCTF_VER_1) return GS_VALIDATE_ERR_TCTF_VER; - if (TCTF_get_scid(tctf) != TCTF_SCID_SAMPLE_SATELLITE) return GS_VALIDATE_ERR_TCTF_SCID; + if (TCTF_get_scid(tctf) != TCTD_SCID_MY_ID) return GS_VALIDATE_ERR_TCTF_SCID; if (TCTF_get_vcid(tctf) != TCTF_VCID_REALTIME) return GS_VALIDATE_ERR_TCTF_VCID; return GS_VALIDATE_ERR_OK; @@ -139,9 +139,9 @@ static GS_VALIDATE_ERR GS_check_cmd_space_packet_headers_(const CmdSpacePacket* } apid = CSP_get_apid(csp); - if ( !( apid == APID_MOBC_CMD || - apid == APID_AOBC_CMD || - apid == APID_TOBC_CMD ) ) + if ( !( apid == APID_CMD_TO_MOBC || + apid == APID_CMD_TO_AOBC || + apid == APID_CMD_TO_TOBC ) ) { return GS_VALIDATE_ERR_APID; } diff --git a/examples/mobc/src/src_user/component_driver/com/gs_validate.h b/examples/mobc/src/src_user/component_driver/com/gs_validate.h index d397bcfb6..2a664fff8 100644 --- a/examples/mobc/src/src_user/component_driver/com/gs_validate.h +++ b/examples/mobc/src/src_user/component_driver/com/gs_validate.h @@ -14,7 +14,7 @@ #include -#include "../../tlm_cmd/ccsds/tc_transfer_frame.h" +#include /** * @enum GS_VALIDATE_ERR diff --git a/examples/mobc/src/src_user/settings/CMakeLists.txt b/examples/mobc/src/src_user/settings/CMakeLists.txt index 05d9690df..ee69efb9c 100644 --- a/examples/mobc/src/src_user/settings/CMakeLists.txt +++ b/examples/mobc/src/src_user/settings/CMakeLists.txt @@ -17,7 +17,9 @@ set(C2A_SRCS system/event_handler_rules/event_handler_rules.c system/event_handler_rules/event_handler_rule_test.c tlm_cmd/common_cmd_packet_define.c + tlm_cmd/ccsds/aos_transfer_frame_define.c tlm_cmd/ccsds/apid_define.c + tlm_cmd/ccsds/tc_transfer_frame_define.c ) if(C2A_BUILD_AS_CXX) diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.c b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.c new file mode 100644 index 000000000..66d0ef174 --- /dev/null +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.c @@ -0,0 +1,19 @@ +#pragma section REPRO +/** + * @file + * @brief AOS Transfer Frame のユーザー定義 + */ +#include "aos_transfer_frame_define.h" + +AOSTF_SCID AOSTF_get_scid_from_uint8(uint8_t scid) +{ + switch ((AOSTF_SCID)scid) + { + case AOSTF_SCID_SAMPLE_SATELLITE: + return (AOSTF_SCID)scid; + default: + return AOSTF_SCID_UNKNOWN; + } +} + +#pragma section diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.h new file mode 100644 index 000000000..fcde0da8b --- /dev/null +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/aos_transfer_frame_define.h @@ -0,0 +1,32 @@ +/** + * @file + * @brief AOS Transfer Frame のユーザー定義 + * @note aos_transfer_frame.h などから include されることを前提 + */ +#ifndef AOS_TRANSFER_FRAME_DEFINE_H_ +#define AOS_TRANSFER_FRAME_DEFINE_H_ + +#include + +/** + * @enum AOSTF_SCID + * @brief Spacecraft ID + * @note 8 bit + */ +typedef enum +{ + AOSTF_SCID_SAMPLE_SATELLITE = 0x00, + AOSTF_SCID_UNKNOWN +} AOSTF_SCID; + +#define AOSTF_SCID_MY_ID (AOSTF_SCID_SAMPLE_SATELLITE) //!< 自分の SCID + +/** + * @brief バイト列から AOSTF_SCID を取得 + * @param scid: AOSTF_SCID 候補の uint8_t + * @note 不正な入力のときは AOSTF_SCID_UNKNOWN を返す + * @return AOSTF_SCID + */ +AOSTF_SCID AOSTF_get_scid_from_uint8(uint8_t scid); + +#endif diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c index 57afc6e33..274132fd4 100644 --- a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c @@ -11,14 +11,14 @@ APID APID_get_apid_from_uint16(uint16_t apid) { switch ((APID)apid) { - case APID_MOBC_CMD: // FALLTHROUGH - case APID_AOBC_CMD: // FALLTHROUGH - case APID_TOBC_CMD: // FALLTHROUGH - case APID_TCAL_TLM: // FALLTHROUGH - case APID_MOBC_TLM: // FALLTHROUGH - case APID_AOBC_TLM: // FALLTHROUGH - case APID_TOBC_TLM: // FALLTHROUGH - case APID_DUMP_TLM: // FALLTHROUGH + case APID_CMD_TO_MOBC: // FALLTHROUGH + case APID_CMD_TO_AOBC: // FALLTHROUGH + case APID_CMD_TO_TOBC: // FALLTHROUGH + case APID_TLM_TCAL: // FALLTHROUGH + case APID_TLM_MOBC: // FALLTHROUGH + case APID_TLM_AOBC: // FALLTHROUGH + case APID_TLM_TOBC: // FALLTHROUGH + case APID_TLM_DUMP: // FALLTHROUGH case APID_FILL_PKT: return (APID)apid; diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h index c2a6d24b0..a4de47d3e 100644 --- a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h @@ -12,18 +12,19 @@ * @enum APID * @brief Application Process ID * @note 11bit + * @note 命名規則は tlm_cmd/common_tlm_cmd_packet.h を参照 */ typedef enum { - APID_MOBC_CMD = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD - APID_AOBC_CMD = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD - APID_TOBC_CMD = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD - APID_TCAL_TLM = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) - APID_MOBC_TLM = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM - APID_AOBC_TLM = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM - APID_TOBC_TLM = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM - APID_DUMP_TLM = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) - APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET + APID_CMD_TO_MOBC = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD + APID_CMD_TO_AOBC = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD + APID_CMD_TO_TOBC = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD + APID_TLM_TCAL = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) + APID_TLM_MOBC = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM + APID_TLM_AOBC = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM + APID_TLM_TOBC = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM + APID_TLM_DUMP = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) + APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET APID_UNKNOWN } APID; diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.c b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.c new file mode 100644 index 000000000..a81d13f2c --- /dev/null +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.c @@ -0,0 +1,19 @@ +#pragma section REPRO +/** + * @file + * @brief TC Transfer Frame のユーザー定義 + */ +#include "tc_transfer_frame_define.h" + +TCTF_SCID TCTF_get_scid_from_uint16(uint16_t scid) +{ + switch ((TCTF_SCID)scid) + { + case TCTF_SCID_SAMPLE_SATELLITE: + return (TCTF_SCID)scid; + default: + return TCTF_SCID_UNKNOWN; + } +} + +#pragma section diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.h new file mode 100644 index 000000000..cd877cb38 --- /dev/null +++ b/examples/mobc/src/src_user/settings/tlm_cmd/ccsds/tc_transfer_frame_define.h @@ -0,0 +1,32 @@ +/** + * @file + * @brief TC Transfer Frame のユーザー定義 + * @note tc_transfer_frame.h などから include されることを前提 + */ +#ifndef TC_TRANSFER_FRAME_DEFINE_H_ +#define TC_TRANSFER_FRAME_DEFINE_H_ + +#include + +/** + * @enum TCTF_SCID + * @brief Spacecraft ID + * @note 10 bit + */ +typedef enum +{ + TCTF_SCID_SAMPLE_SATELLITE = 0x157, // SCID for command of sample satellite + TCTF_SCID_UNKNOWN +} TCTF_SCID; + +#define TCTD_SCID_MY_ID (TCTF_SCID_SAMPLE_SATELLITE) //!< 自分の SCID + +/** + * @brief バイト列から TCTF_SCID を取得 + * @param scid: TCTF_SCID 候補の uint16_t + * @note 不正な入力のときは TCTF_SCID_UNKNOWN を返す + * @return TCTF_SCID + */ +TCTF_SCID TCTF_get_scid_from_uint16(uint16_t scid); + +#endif diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h index 1d18a2b82..7418ccd98 100644 --- a/examples/mobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h +++ b/examples/mobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_CMD_PACKET_DEFINE_H_ #define COMMON_CMD_PACKET_DEFINE_H_ -#include +#include #include "./ccsds/apid_define.h" // CommonCmdPacket として CmdSpacePacket をつかう @@ -15,7 +15,7 @@ typedef CmdSpacePacket CommonCmdPacket; // 自分宛て CMD を示す AIPD を定義 // FIXME: Space Packet が整備されたら直す -#define CCP_APID_TO_ME (APID_MOBC_CMD) +#define CCP_APID_CMD_TO_ME (APID_CMD_TO_MOBC) /** * @enum CCP_DEST_TYPE diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h index f4846059d..33408fd6c 100644 --- a/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h +++ b/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_TLM_CMD_PACKET_DEFINE_H_ #define COMMON_TLM_CMD_PACKET_DEFINE_H_ -#include +#include // CommonTlmCmdPacket として SpacePacket をつかう typedef SpacePacket CommonTlmCmdPacket; diff --git a/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h b/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h index b1f59e820..0e0f3c66f 100644 --- a/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h +++ b/examples/mobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_TLM_PACKET_DEFINE_H_ #define COMMON_TLM_PACKET_DEFINE_H_ -#include +#include #include "./ccsds/apid_define.h" // CommonTlmPacket として TlmSpacePacket をつかう @@ -15,6 +15,6 @@ typedef TlmSpacePacket CommonTlmPacket; // 自分で生成される TLM を示す AIPD を定義 // FIXME: Space Packet が整備されたら直す -#define CTP_APID_FROM_ME (APID_MOBC_TLM) +#define CTP_APID_TLM_FROM_ME (APID_TLM_MOBC) #endif diff --git a/examples/mobc/src/src_user/tlm_cmd/CMakeLists.txt b/examples/mobc/src/src_user/tlm_cmd/CMakeLists.txt index c7cd1b936..cc0d7962a 100644 --- a/examples/mobc/src/src_user/tlm_cmd/CMakeLists.txt +++ b/examples/mobc/src/src_user/tlm_cmd/CMakeLists.txt @@ -14,11 +14,6 @@ set(C2A_SRCS normal_block_command_definition/nbc_start_hk_tlm.c normal_block_command_definition/nbc_respond_eh_for_test.c normal_block_command_definition/nbc_test_bcl.c - ccsds/m_pdu.c - ccsds/tc_transfer_frame.c - ccsds/tcp_to_m_pdu.c - ccsds/tc_segment.c - ccsds/vcdu.c ) if(C2A_BUILD_AS_CXX) diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.h b/examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.h deleted file mode 100644 index 4dc706687..000000000 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef M_PDU_H_ -#define M_PDU_H_ - - -#include -#include - - -#define M_PDU_HEADER_SIZE (2u) -#define M_PDU_DATA_SIZE (432u) -#define M_PDU_LEN (M_PDU_HEADER_SIZE + M_PDU_DATA_SIZE) - -typedef struct -{ - uint8_t header[M_PDU_HEADER_SIZE]; - uint8_t data[M_PDU_DATA_SIZE]; -} M_PDU; - -typedef enum -{ - M_PDU_PTR_NO_HDR = 0x07ff, // 11111111111b - M_PDU_PTR_IDLE = 0x7fe // 11111111110b -} M_PDU_PTR; - -void M_PDU_generate_byte_stream(const M_PDU* m_pdu, - uint8_t byte_stream[M_PDU_LEN]); - -void M_PDU_setup_idle_m_pdu(M_PDU* m_pdu); - -uint16_t M_PDU_get_1st_hdr_ptr(const M_PDU* m_pdu); - -void M_PDU_set_1st_hdr_ptr(M_PDU* m_pdu, - uint16_t ptr); - -const uint8_t* M_PDU_get_data_head(const M_PDU* m_pdu); - -void M_PDU_set_data(M_PDU* m_pdu, - const uint8_t* data, - size_t offset, - size_t len); - -#endif // M_PDU_H_ diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.c b/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.c deleted file mode 100644 index f50924980..000000000 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.c +++ /dev/null @@ -1,222 +0,0 @@ -#pragma section REPRO -#include "vcdu.h" - -#include // for memcpy - -static void VCDU_set_common_hdr_(VCDU* vcdu); -static void VCDU_clear_spare_(VCDU* vcdu); - -void VCDU_generate_byte_stream(const VCDU* vcdu, - uint8_t byte_stream[VCDU_LEN]) -{ - memcpy(byte_stream, vcdu->header, VCDU_HEADER_SIZE); - byte_stream += VCDU_HEADER_SIZE; - - M_PDU_generate_byte_stream(&(vcdu->m_pdu), byte_stream); - byte_stream += M_PDU_LEN; - - memcpy(byte_stream, vcdu->trailer, VCDU_TRAILER_SIZE); -} - -void VCDU_setup_fill_vcdu(VCDU* vcdu) -{ - VCDU_set_common_hdr_(vcdu); - VCDU_set_vcid(vcdu, VCDU_VCID_FILL); - M_PDU_setup_idle_m_pdu(&(vcdu->m_pdu)); -} - -void VCDU_setup_realtime_vcdu_hdr(VCDU* vcdu, - uint32_t counter) -{ - VCDU_set_common_hdr_(vcdu); - VCDU_set_vcid(vcdu, VCDU_VCID_REALTIME); - VCDU_set_vcdu_counter(vcdu, counter); -} - -void VCDU_setup_replay_vcdu_hdr(VCDU* vcdu, - uint32_t counter) -{ - VCDU_set_common_hdr_(vcdu); - VCDU_set_replay_flag(vcdu, VCDU_REPLAY_TRUE); - VCDU_set_vcid(vcdu, VCDU_VCID_REPLAY); - VCDU_set_vcdu_counter(vcdu, counter); -} - -static void VCDU_set_common_hdr_(VCDU* vcdu) -{ - VCDU_set_ver(vcdu, VCDU_VER_2); - VCDU_set_scid(vcdu, VCDU_SCID_SAMPLE_SATELLITE); // FIXME: 仮 - VCDU_set_replay_flag(vcdu, VCDU_REPLAY_FALSE); - VCDU_clear_spare_(vcdu); -} - -static void VCDU_clear_spare_(VCDU* vcdu) -{ - unsigned int pos = 5; - uint8_t mask = 0x7f; // 01111111b - - vcdu->header[pos] &= (uint8_t)(~mask); -} - -VCDU_VER VCDU_get_ver(const VCDU* vcdu) -{ - unsigned int pos = 0; - uint8_t mask = 0xc0; // 11000000b - - VCDU_VER ver = (VCDU_VER)((vcdu->header[pos] & mask) >> 6); - - switch (ver) - { - case VCDU_VER_2: - return ver; - - default: - return VCDU_VER_UNKNOWN; - } -} - -void VCDU_set_ver(VCDU* vcdu, - VCDU_VER ver) -{ - unsigned int pos = 0; - uint8_t mask = 0xc0; // 11000000b - uint8_t val = (uint8_t)((ver << 6) & mask); - - vcdu->header[pos] &= (uint8_t)(~mask); - vcdu->header[pos] |= val; -} - -VCDU_SCID VCDU_get_scdi(const VCDU* vcdu) -{ - unsigned int pos = 0; - uint8_t mask1 = 0x3f; // 00111111b - uint8_t mask2 = 0xc0; // 11000000b - - int scid = (vcdu->header[pos] & mask1); - scid <<= 2; - scid |= ((vcdu->header[pos + 1] & mask2) >> 6); - - switch (scid) - { - case VCDU_SCID_SAMPLE_SATELLITE: - return (VCDU_SCID)scid; - - default: - return VCDU_SCID_UNKNOWN; - } -} - -void VCDU_set_scid(VCDU* vcdu, - VCDU_SCID scid) -{ - unsigned int pos = 0; - uint8_t mask1 = 0x3f; // 00111111b - uint8_t mask2 = 0xc0; // 11000000b - - vcdu->header[pos] &= (uint8_t)(~mask1); - vcdu->header[pos] |= (uint8_t)((scid >> 2) & mask1); - vcdu->header[pos + 1] &= (uint8_t)(~mask2); - vcdu->header[pos + 1] |= (uint8_t)((scid << 6) & mask2); -} - -VCDU_VCID VCDU_get_vcid(const VCDU* vcdu) -{ - unsigned int pos = 1; - uint8_t mask = 0x3f; // 00111111b - - VCDU_VCID vcid = (VCDU_VCID)(vcdu->header[pos] & mask); - - switch (vcid) - { - case VCDU_VCID_REALTIME: // FALLTHROUGH - case VCDU_VCID_REPLAY: // FALLTHROUGH - case VCDU_VCID_FILL: // FALLTHROUGH - return vcid; - - default: - return VCDU_VCID_UNKNOWN; - } -} - -void VCDU_set_vcid(VCDU* vcdu, - VCDU_VCID vcid) -{ - unsigned int pos = 1; - uint8_t mask = 0x3f; // 00111111b - - vcdu->header[pos] &= (uint8_t)(~mask); - vcdu->header[pos] |= (uint8_t)(vcid & mask); -} - -uint32_t VCDU_get_vcdu_counter(const VCDU* vcdu) -{ - unsigned int pos = 2; - - uint32_t counter = vcdu->header[pos]; - counter <<= 8; - counter |= vcdu->header[pos + 1]; - counter <<= 8; - counter |= vcdu->header[pos + 2]; - - return counter; -} - -void VCDU_set_vcdu_counter(VCDU* vcdu, - uint32_t counter) -{ - unsigned int pos = 2; - - vcdu->header[pos] = (uint8_t)((counter >> 16) & 0xff); - vcdu->header[pos + 1] = (uint8_t)((counter >> 8) & 0xff); - vcdu->header[pos + 2] = (uint8_t)(counter & 0xff); -} - -VCDU_REPLAY_FLAG VCDU_get_replay_flag(const VCDU* vcdu) -{ - unsigned int pos = 5; - uint8_t mask = 0x80; // 10000000b - - return (VCDU_REPLAY_FLAG)((vcdu->header[pos] & mask) >> 7); -} - -void VCDU_set_replay_flag(VCDU* vcdu, - VCDU_REPLAY_FLAG flag) -{ - unsigned int pos = 5; - uint8_t mask = 0x80; // 10000000b - - vcdu->header[pos] &= (uint8_t)(~mask); - vcdu->header[pos] |= (uint8_t)((flag << 7) & mask); -} - -uint32_t VCDU_get_clcw(const VCDU* vcdu) -{ - unsigned int pos = 0; - - uint32_t clcw = vcdu->trailer[pos]; - clcw <<= 8; - clcw |= vcdu->trailer[pos + 1]; - clcw <<= 8; - clcw |= vcdu->trailer[pos + 2]; - clcw <<= 8; - clcw |= vcdu->trailer[pos + 3]; - - return clcw; -} - -void VCDU_set_clcw(VCDU* vcdu, - uint32_t clcw) -{ - unsigned int pos = 0; - - vcdu->trailer[pos] = (uint8_t)((clcw >> 24) & 0xff); - vcdu->trailer[pos + 1] = (uint8_t)((clcw >> 16) & 0xff); - vcdu->trailer[pos + 2] = (uint8_t)((clcw >> 8) & 0xff); - vcdu->trailer[pos + 3] = (uint8_t)(clcw & 0xff); -} - -uint32_t VCDU_calc_next_counter(uint32_t prev) -{ - return (prev + 1) % VCDU_COUNTER_MAX; -} -#pragma section diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.h b/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.h deleted file mode 100644 index 701da1c4d..000000000 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/vcdu.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef VCDU_H_ -#define VCDU_H_ - -#include "m_pdu.h" - -#define VCDU_HEADER_SIZE (6u) -#define VCDU_TRAILER_SIZE (4u) -#define VCDU_LEN (VCDU_HEADER_SIZE + M_PDU_LEN + VCDU_TRAILER_SIZE) -#define VCDU_COUNTER_MAX (0x01000000) // 24bit長 - -typedef struct -{ - uint8_t header[VCDU_HEADER_SIZE]; - M_PDU m_pdu; - uint8_t trailer[VCDU_TRAILER_SIZE]; -} VCDU; - -typedef enum -{ - VCDU_VER_2 = 1, // 01b: Version2 - VCDU_VER_UNKNOWN -} VCDU_VER; - -typedef enum -{ - VCDU_SCID_SAMPLE_SATELLITE = 0x00, - VCDU_SCID_UNKNOWN -} VCDU_SCID; - -typedef enum -{ - VCDU_VCID_REALTIME = 0x01, // 000001b: Realtime Transfer Frame - VCDU_VCID_REPLAY = 0x02, // 000010b: Stored Transfer Frame - VCDU_VCID_FILL = 0x3f, // 111111b: Fill Transfer Frame - VCDU_VCID_UNKNOWN -} VCDU_VCID; - -typedef enum -{ - VCDU_REPLAY_FALSE = 0, // 0b: Realtime Transfer Frame - VCDU_REPLAY_TRUE = 1 // 1b: Replay Transfer Frame -} VCDU_REPLAY_FLAG; - -void VCDU_generate_byte_stream(const VCDU* vcdu, - uint8_t byte_stream[VCDU_LEN]); - -void VCDU_setup_fill_vcdu(VCDU* vcdu); - -void VCDU_setup_realtime_vcdu_hdr(VCDU* vcdu, - uint32_t counter); - -void VCDU_setup_replay_vcdu_hdr(VCDU* vcdu, - uint32_t counter); - -VCDU_VER VCDU_get_ver(const VCDU* vcdu); - -void VCDU_set_ver(VCDU* vcdu, - VCDU_VER ver); - -VCDU_SCID VCDU_get_scdi(const VCDU* vcdu); - -void VCDU_set_scid(VCDU* vcdu, - VCDU_SCID scid); - -VCDU_VCID VCDU_get_vcid(const VCDU* vcdu); - -void VCDU_set_vcid(VCDU* vcdu, - VCDU_VCID vcid); - -uint32_t VCDU_get_vcdu_counter(const VCDU* vcdu); - -void VCDU_set_vcdu_counter(VCDU* vcdu, - uint32_t counter); - -VCDU_REPLAY_FLAG VCDU_get_replay_flag(const VCDU* vcdu); - -void VCDU_set_replay_flag(VCDU* vcdu, - VCDU_REPLAY_FLAG flag); - -uint32_t VCDU_get_clcw(const VCDU* vcdu); - -void VCDU_set_clcw(VCDU* vcdu, - uint32_t clcw); - -uint32_t VCDU_calc_next_counter(uint32_t prev); - -#endif // VCDU_H_ diff --git a/examples/mobc/src/src_user/tlm_cmd/common_cmd_packet.c b/examples/mobc/src/src_user/tlm_cmd/common_cmd_packet.c index f510cf381..a0da7a640 100644 --- a/examples/mobc/src/src_user/tlm_cmd/common_cmd_packet.c +++ b/examples/mobc/src/src_user/tlm_cmd/common_cmd_packet.c @@ -5,7 +5,7 @@ * @note CCP: CommonCmdPacket */ #include -#include +#include #include diff --git a/examples/mobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c b/examples/mobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c index 259626eaa..c02e70958 100644 --- a/examples/mobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c +++ b/examples/mobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c @@ -7,7 +7,7 @@ * @note CCP: CommonCmdPacket */ #include -#include +#include #include diff --git a/examples/mobc/src/src_user/tlm_cmd/common_tlm_packet.c b/examples/mobc/src/src_user/tlm_cmd/common_tlm_packet.c index dbac65371..f0d6674e7 100644 --- a/examples/mobc/src/src_user/tlm_cmd/common_tlm_packet.c +++ b/examples/mobc/src/src_user/tlm_cmd/common_tlm_packet.c @@ -5,7 +5,7 @@ * @note CTP: CommonTlmPacket */ #include -#include +#include #include #include diff --git a/examples/mobc/src/src_user/tlm_cmd/normal_block_command_definition/nbc_test_bcl.c b/examples/mobc/src/src_user/tlm_cmd/normal_block_command_definition/nbc_test_bcl.c index a8fbb0448..1799a120d 100644 --- a/examples/mobc/src/src_user/tlm_cmd/normal_block_command_definition/nbc_test_bcl.c +++ b/examples/mobc/src/src_user/tlm_cmd/normal_block_command_definition/nbc_test_bcl.c @@ -31,7 +31,7 @@ void BCL_load_test_bcl(void) // other_obc コマンドのチェック // FIXME: other OBC のコマンド数が 本OBC より多くなるとキャストできなくて困る BCL_tool_prepare_param_uint8(3); - BCL_tool_register_cmd_to_other_obc(5, APID_AOBC_CMD, (CMD_CODE)AOBC_Cmd_CODE_MM_START_TRANSITION); + BCL_tool_register_cmd_to_other_obc(5, APID_CMD_TO_AOBC, (CMD_CODE)AOBC_Cmd_CODE_MM_START_TRANSITION); } #pragma section diff --git a/examples/mobc/src/src_user/tlm_cmd/telemetry_definitions.c b/examples/mobc/src/src_user/tlm_cmd/telemetry_definitions.c index 9eda2f3e2..d5e1c3b9f 100644 --- a/examples/mobc/src/src_user/tlm_cmd/telemetry_definitions.c +++ b/examples/mobc/src/src_user/tlm_cmd/telemetry_definitions.c @@ -180,7 +180,7 @@ static TF_TLM_FUNC_ACK Tlm_MOBC_(uint8_t* packet, uint16_t* len, uint16_t max_le TF_copy_u32(&packet[322], (uint32_t)gs_driver->latest_info->tx.send_cycle); TF_copy_u32(&packet[326], gs_driver->driver_ccsds.ccsds_config.bitrate); TF_copy_u8(&packet[330], (uint8_t)gs_driver->latest_info->tx.vcid); - TF_copy_u32(&packet[331], gs_driver->latest_info->tx.vcdu_counter); + TF_copy_u32(&packet[331], gs_driver->latest_info->tx.aostf_counter); #endif *len = 335; @@ -3564,7 +3564,7 @@ static TF_TLM_FUNC_ACK Tlm_GS_(uint8_t* packet, uint16_t* len, uint16_t max_len) TF_copy_u8(&packet[40], (uint8_t)gs_driver->info[0].rx.tctf.bd_rec_status); TF_copy_u32(&packet[41], (uint32_t)gs_driver->info[0].tx.send_cycle); TF_copy_u8(&packet[45], (uint8_t)gs_driver->info[0].tx.vcid); - TF_copy_u32(&packet[46], gs_driver->info[0].tx.vcdu_counter); + TF_copy_u32(&packet[46], gs_driver->info[0].tx.aostf_counter); TF_copy_u8(&packet[50], gs_driver->ccsds_info.buffer_num); TF_copy_u8(&packet[51], gs_driver->driver_uart.uart_config.ch); TF_copy_u32(&packet[52], gs_driver->driver_uart.uart_config.baudrate); @@ -3582,7 +3582,7 @@ static TF_TLM_FUNC_ACK Tlm_GS_(uint8_t* packet, uint16_t* len, uint16_t max_len) TF_copy_u8(&packet[73], (uint8_t)gs_driver->info[1].rx.tctf.bd_rec_status); TF_copy_u32(&packet[74], (uint32_t)gs_driver->info[1].tx.send_cycle); TF_copy_u8(&packet[78], (uint8_t)gs_driver->info[1].tx.vcid); - TF_copy_u32(&packet[79], gs_driver->info[1].tx.vcdu_counter); + TF_copy_u32(&packet[79], gs_driver->info[1].tx.aostf_counter); TF_copy_u8(&packet[83], gs_driver->driver_uart.is_tlm_on); TF_copy_u8(&packet[84], gs_validate_info->type_a_counter); TF_copy_u8(&packet[85], gs_validate_info->type_b_counter); @@ -3591,10 +3591,10 @@ static TF_TLM_FUNC_ACK Tlm_GS_(uint8_t* packet, uint16_t* len, uint16_t max_len) TF_copy_u8(&packet[88], gs_validate_info->positive_window_width); TF_copy_u32(&packet[89], (uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval); TF_copy_u32(&packet[93], (uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.last_updated); - TF_copy_u32(&packet[97], (uint32_t)CSRV_GS_rt_tlm_packet_handler->vcdu_counter); + TF_copy_u32(&packet[97], (uint32_t)CSRV_GS_rt_tlm_packet_handler->aostf_counter); TF_copy_u32(&packet[101], (uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval); TF_copy_u32(&packet[105], (uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.last_updated); - TF_copy_u32(&packet[109], (uint32_t)CSRV_GS_rp_tlm_packet_handler->vcdu_counter); + TF_copy_u32(&packet[109], (uint32_t)CSRV_GS_rp_tlm_packet_handler->aostf_counter); #endif *len = 113; diff --git a/examples/mobc/src/src_user/tlm_cmd/user_packet_handler.c b/examples/mobc/src/src_user/tlm_cmd/user_packet_handler.c index 45525777d..f5fd49961 100644 --- a/examples/mobc/src/src_user/tlm_cmd/user_packet_handler.c +++ b/examples/mobc/src/src_user/tlm_cmd/user_packet_handler.c @@ -39,12 +39,12 @@ PH_ACK PH_user_analyze_cmd(const CommonCmdPacket* packet) { switch (apid) { - case APID_AOBC_CMD: + case APID_CMD_TO_AOBC: return (PH_add_aobc_cmd_(packet) == PH_ACK_SUCCESS) ? PH_ACK_FORWARDED : PH_ACK_PL_LIST_FULL; - case APID_TOBC_CMD: + case APID_CMD_TO_TOBC: return (PH_add_tobc_cmd_(packet) == PH_ACK_SUCCESS) ? PH_ACK_FORWARDED : PH_ACK_PL_LIST_FULL; default: - // APID_MOBC_CMD + // APID_CMD_TO_MOBC // 不正な APID // はここに return PH_ACK_UNKNOWN; @@ -74,10 +74,10 @@ CCP_CmdRet PH_user_cmd_router(const CommonCmdPacket* packet) APID apid = CCP_get_apid(packet); switch (apid) { - case APID_AOBC_CMD: + case APID_CMD_TO_AOBC: // AOBCに配送 return CSRV_AOBC_dispatch_command(packet); - case APID_TOBC_CMD: + case APID_CMD_TO_TOBC: // TOBCに配送 // return CSRV_TOBC_dispatch_command(packet); default: @@ -95,7 +95,7 @@ TF_TLM_FUNC_ACK PH_user_telemetry_router(APID apid, { switch (apid) { - case APID_AOBC_TLM: + case APID_TLM_AOBC: return AOBC_pick_up_tlm_buffer(aobc_driver, (AOBC_TLM_CODE)tlm_id, packet, len, max_len); default: return TF_TLM_FUNC_ACK_NOT_DEFINED; diff --git a/examples/mobc/tlm-cmd-db/CMD_DB/SAMPLE_MOBC_CMD_DB_CMD_DB.csv b/examples/mobc/tlm-cmd-db/CMD_DB/SAMPLE_MOBC_CMD_DB_CMD_DB.csv index 6e275f424..225a128d0 100644 --- a/examples/mobc/tlm-cmd-db/CMD_DB/SAMPLE_MOBC_CMD_DB_CMD_DB.csv +++ b/examples/mobc/tlm-cmd-db/CMD_DB/SAMPLE_MOBC_CMD_DB_CMD_DB.csv @@ -160,8 +160,8 @@ Comment,,,,,Type,Description,Type,Description,Type,Description,Type,Description, **,,,,,,,,,,,,,,,,,,,, * CDH,GS用,,,,,,,,,,,,,,,,,,, ,CSRV_GS_DRIVER_RESET,OBC,0x0100,0,,,,,,,,,,,,,,,GS ドライバの初期化, -,CSRV_GS_SET_RT_FLUSH_INTERVAL,OBC,0x0101,1,uint32_t,排出間隔,,,,,,,,,,,,,RT VCDUの排出間隔設定, -,CSRV_GS_SET_RP_FLUSH_INTERVAL,OBC,0x0102,1,uint32_t,排出間隔,,,,,,,,,,,,,RP VCDUの排出間隔設定, +,CSRV_GS_SET_RT_FLUSH_INTERVAL,OBC,0x0101,1,uint32_t,排出間隔,,,,,,,,,,,,,RT AOSTFの排出間隔設定, +,CSRV_GS_SET_RP_FLUSH_INTERVAL,OBC,0x0102,1,uint32_t,排出間隔,,,,,,,,,,,,,RP AOSTFの排出間隔設定, ,CSRV_GS_SET_FARM_PW,OBC,0x0103,1,uint8_t,positive_window_width,,,,,,,,,,,,,FARM-1のPositive Window Width設定, ,CSRV_GS_SET_INFO,OBC,0x0104,1,uint8_t,TLM選択,,,,,,,,,,,,,GS送信TLMが0ならCCSDSに@@ 1ならUARTの情報が出てくる, ,CSRV_GS_CCSDS_GET_BUFFER,OBC,0x0105,0,,,,,,,,,,,,,,,, diff --git a/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_GS.csv b/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_GS.csv index 766d8c619..c4ab7b154 100644 --- a/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_GS.csv +++ b/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_GS.csv @@ -31,7 +31,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,CCSDS.TCTF.BD_REC_STATUS,uint8_t,(uint8_t)gs_driver->info[0].rx.tctf.bd_rec_status,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),STATUS,,,,,,,0=SUCCESS@@ 1=TCTF_VER@@ 2=TCTF_SCID@@ 3=TCTF_VCID@@ 4=TCTF_TYPE@@ 5=LOCKOUT@@ 6=TCTF_SEQ_FLAG@@ 7=TCP_VER@@ 8=TCP_2ND_HDR_FLAG@@ 9=APID@@ 10=TCP_TYPE_IS_NOT_CMD@@ 11=TCP_SEQ_IS_NOTE_SINGLE@@ 12=FECW_MISSMATCH@@ 13=FARM1_PWA@@ 14=FARM1_NWA@@ 15=FARM1_LOCKOUT_AREA@@ 16=FARM1_SAME_NUMBER@@ 17=INVALID_BC_CMD,, ,CCSDS.TX.SEND_CYCLE,uint32_t,(uint32_t)gs_driver->info[0].tx.send_cycle,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,CCSDS.TX.VCID,uint8_t,(uint8_t)gs_driver->info[0].tx.vcid,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),STATUS,,,,,,,1=REALTIME@@2=REPLAY@@63=FILL@@*=UNKNOWN,, -,CCSDS.TX.VCDU_COUNTER,uint32_t,gs_driver->info[0].tx.vcdu_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,CCSDS.TX.AOSTF_COUNTER,uint32_t,gs_driver->info[0].tx.aostf_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,CCSDS.TX.BUFFER_NUM,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,UART.CH,uint8_t,gs_driver->driver_uart.uart_config.ch,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,UART.BAUDRATE,uint32_t,gs_driver->driver_uart.uart_config.baudrate,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, @@ -49,19 +49,19 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,UART.TCTF.BD_REC_STATUS,uint8_t,(uint8_t)gs_driver->info[1].rx.tctf.bd_rec_status,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),STATUS,,,,,,,0=SUCCESS@@ 1=TCTF_VER@@ 2=TCTF_SCID@@ 3=TCTF_VCID@@ 4=TCTF_TYPE@@ 5=LOCKOUT@@ 6=TCTF_SEQ_FLAG@@ 7=TCP_VER@@ 8=TCP_2ND_HDR_FLAG@@ 9=APID@@ 10=TCP_TYPE_IS_NOT_CMD@@ 11=TCP_SEQ_IS_NOTE_SINGLE@@ 12=FECW_MISSMATCH@@ 13=FARM1_PWA@@ 14=FARM1_NWA@@ 15=FARM1_LOCKOUT_AREA@@ 16=FARM1_SAME_NUMBER@@ 17=INVALID_BC_CMD,, ,UART.TX.SEND_CYCLE,uint32_t,(uint32_t)gs_driver->info[1].tx.send_cycle,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,UART.TX.VCID,uint8_t,(uint8_t)gs_driver->info[1].tx.vcid,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),STATUS,,,,,,,1=REALTIME@@2=REPLAY@@63=FILL@@*=UNKNOWN,, -,UART.TX.VCDU_COUNTER,uint32_t,gs_driver->info[1].tx.vcdu_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,UART.TX.AOSTF_COUNTER,uint32_t,gs_driver->info[1].tx.aostf_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,UART.IS_TLM_ON,uint8_t,gs_driver->driver_uart.is_tlm_on,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),STATUS,,,,,,,0=OFF@@ 1=ON,, ,COP-1.TYPE_A_COUNTER,uint8_t,gs_validate_info->type_a_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,COP-1.TYPE_B_COUNTER,uint8_t,gs_validate_info->type_b_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,COP-1.LOCKOUT_FLAG,uint8_t,gs_validate_info->lockout_flag,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,COP-1.RETRANSMIT_FLAG,uint8_t,gs_validate_info->retransmit_flag,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,COP-1.POSITIVE_WINDOW_WIDTH,uint8_t,gs_validate_info->positive_window_width,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RT_TLM.VCDU.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RT_TLM.VCDU.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RT_TLM.VCDU.COUNTER,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->vcdu_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RP_TLM.VCDU.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RP_TLM.VCDU.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, -,RP_TLM.VCDU.COUNTER,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->vcdu_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RT_TLM.AOSTF.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RT_TLM.AOSTF.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RT_TLM.AOSTF.COUNTER,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->aostf_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RP_TLM.AOSTF.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RP_TLM.AOSTF.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, +,RP_TLM.AOSTF.COUNTER,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->aostf_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, diff --git a/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_MOBC.csv b/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_MOBC.csv index 635ee25af..b337f273c 100644 --- a/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_MOBC.csv +++ b/examples/mobc/tlm-cmd-db/TLM_DB/SAMPLE_MOBC_TLM_DB_MOBC.csv @@ -122,7 +122,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,BCT_CMD_PTR,uint8_t,(uint8_t)(block_command_table->pos.cmd),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,BCT コマンドポインタ, ,BCT_REGD_TIME,uint32_t,((block_command_table->pos.cmd == 0) ? 0 : (uint32_t)BCT_get_ti(block_command_table->pos.block@@ (uint8_t)(block_command_table->pos.cmd-1))),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,BCT 登録コマンド時刻,変数指定が大変なことに… ,BCT_REGD_ID,uint16_t,(uint16_t)((block_command_table->pos.cmd == 0) ? 0 : BCT_get_id(block_command_table->pos.block@@ (uint8_t)(block_command_table->pos.cmd-1))),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,BCT 登録コマンドID,変数指定が大変なことに… -,RT_BUFFER_AVAILABLE,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,CCSDS RT VCDU 使用量, +,RT_BUFFER_AVAILABLE,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,CCSDS RT AOSTF 使用量, ,RT_T2M_FLUSH_INTERVAL,uint32_t,(uint32_t)(CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,TL0コマンドカウンタ, ,RP_T2M_FLUSH_INTERVAL,uint32_t,(uint32_t)(CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,TL0コマンドカウンタ, ,RT_TLM_COUNTER,uint32_t,PL_count_executed_nodes(&PH_rt_tlm_list),PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,TL0コマンドカウンタ, @@ -134,7 +134,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,TCI_TX_CYCLE,uint32_t,(uint32_t)gs_driver->latest_info->tx.send_cycle,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,時刻校正情報::送出サイクル, ,TCI_TX_BITRATE,uint32_t,gs_driver->driver_ccsds.ccsds_config.bitrate,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,時刻校正情報::送出ビットレート, ,TCI_VCID,uint8_t,(uint8_t)gs_driver->latest_info->tx.vcid,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,時刻構成情報::送出VCID, -,TCI_VCDU_COUNTER,uint32_t,gs_driver->latest_info->tx.vcdu_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,時刻校正情報::送出VCDUカウンタ, +,TCI_AOSTF_COUNTER,uint32_t,gs_driver->latest_info->tx.aostf_counter,PACKET,=R[-1]C+INT((R[-1]C[1]+R[-1]C[2])/8),=MOD((R[-1]C+R[-1]C[1])@@8),=IF(OR(EXACT(RC[-5]@@"uint8_t")@@EXACT(RC[-5]@@"int8_t"))@@8@@IF(OR(EXACT(RC[-5]@@"uint16_t")@@EXACT(RC[-5]@@"int16_t"))@@16@@IF(OR(EXACT(RC[-5]@@"uint32_t")@@EXACT(RC[-5]@@"int32_t")@@EXACT(RC[-5]@@"float"))@@32@@IF(EXACT(RC[-5]@@"double")@@64)))),NONE,,,,,,,,時刻校正情報::送出AOSTFカウンタ, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, diff --git a/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_GS.csv b/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_GS.csv index 6419ed366..69424a6a9 100644 --- a/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_GS.csv +++ b/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_GS.csv @@ -31,7 +31,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,CCSDS.TCTF.BD_REC_STATUS,uint8_t,(uint8_t)gs_driver->info[0].rx.tctf.bd_rec_status,PACKET,40,0,8,STATUS,,,,,,,0=SUCCESS@@ 1=TCTF_VER@@ 2=TCTF_SCID@@ 3=TCTF_VCID@@ 4=TCTF_TYPE@@ 5=LOCKOUT@@ 6=TCTF_SEQ_FLAG@@ 7=TCP_VER@@ 8=TCP_2ND_HDR_FLAG@@ 9=APID@@ 10=TCP_TYPE_IS_NOT_CMD@@ 11=TCP_SEQ_IS_NOTE_SINGLE@@ 12=FECW_MISSMATCH@@ 13=FARM1_PWA@@ 14=FARM1_NWA@@ 15=FARM1_LOCKOUT_AREA@@ 16=FARM1_SAME_NUMBER@@ 17=INVALID_BC_CMD,, ,CCSDS.TX.SEND_CYCLE,uint32_t,(uint32_t)gs_driver->info[0].tx.send_cycle,PACKET,41,0,32,NONE,,,,,,,,, ,CCSDS.TX.VCID,uint8_t,(uint8_t)gs_driver->info[0].tx.vcid,PACKET,45,0,8,STATUS,,,,,,,1=REALTIME@@2=REPLAY@@63=FILL@@*=UNKNOWN,, -,CCSDS.TX.VCDU_COUNTER,uint32_t,gs_driver->info[0].tx.vcdu_counter,PACKET,46,0,32,NONE,,,,,,,,, +,CCSDS.TX.AOSTF_COUNTER,uint32_t,gs_driver->info[0].tx.aostf_counter,PACKET,46,0,32,NONE,,,,,,,,, ,CCSDS.TX.BUFFER_NUM,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,50,0,8,NONE,,,,,,,,, ,UART.CH,uint8_t,gs_driver->driver_uart.uart_config.ch,PACKET,51,0,8,NONE,,,,,,,,, ,UART.BAUDRATE,uint32_t,gs_driver->driver_uart.uart_config.baudrate,PACKET,52,0,32,NONE,,,,,,,,, @@ -49,19 +49,19 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,UART.TCTF.BD_REC_STATUS,uint8_t,(uint8_t)gs_driver->info[1].rx.tctf.bd_rec_status,PACKET,73,0,8,STATUS,,,,,,,0=SUCCESS@@ 1=TCTF_VER@@ 2=TCTF_SCID@@ 3=TCTF_VCID@@ 4=TCTF_TYPE@@ 5=LOCKOUT@@ 6=TCTF_SEQ_FLAG@@ 7=TCP_VER@@ 8=TCP_2ND_HDR_FLAG@@ 9=APID@@ 10=TCP_TYPE_IS_NOT_CMD@@ 11=TCP_SEQ_IS_NOTE_SINGLE@@ 12=FECW_MISSMATCH@@ 13=FARM1_PWA@@ 14=FARM1_NWA@@ 15=FARM1_LOCKOUT_AREA@@ 16=FARM1_SAME_NUMBER@@ 17=INVALID_BC_CMD,, ,UART.TX.SEND_CYCLE,uint32_t,(uint32_t)gs_driver->info[1].tx.send_cycle,PACKET,74,0,32,NONE,,,,,,,,, ,UART.TX.VCID,uint8_t,(uint8_t)gs_driver->info[1].tx.vcid,PACKET,78,0,8,STATUS,,,,,,,1=REALTIME@@2=REPLAY@@63=FILL@@*=UNKNOWN,, -,UART.TX.VCDU_COUNTER,uint32_t,gs_driver->info[1].tx.vcdu_counter,PACKET,79,0,32,NONE,,,,,,,,, +,UART.TX.AOSTF_COUNTER,uint32_t,gs_driver->info[1].tx.aostf_counter,PACKET,79,0,32,NONE,,,,,,,,, ,UART.IS_TLM_ON,uint8_t,gs_driver->driver_uart.is_tlm_on,PACKET,83,0,8,STATUS,,,,,,,0=OFF@@ 1=ON,, ,COP-1.TYPE_A_COUNTER,uint8_t,gs_validate_info->type_a_counter,PACKET,84,0,8,NONE,,,,,,,,, ,COP-1.TYPE_B_COUNTER,uint8_t,gs_validate_info->type_b_counter,PACKET,85,0,8,NONE,,,,,,,,, ,COP-1.LOCKOUT_FLAG,uint8_t,gs_validate_info->lockout_flag,PACKET,86,0,8,NONE,,,,,,,,, ,COP-1.RETRANSMIT_FLAG,uint8_t,gs_validate_info->retransmit_flag,PACKET,87,0,8,NONE,,,,,,,,, ,COP-1.POSITIVE_WINDOW_WIDTH,uint8_t,gs_validate_info->positive_window_width,PACKET,88,0,8,NONE,,,,,,,,, -,RT_TLM.VCDU.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,89,0,32,NONE,,,,,,,,, -,RT_TLM.VCDU.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,93,0,32,NONE,,,,,,,,, -,RT_TLM.VCDU.COUNTER,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->vcdu_counter,PACKET,97,0,32,NONE,,,,,,,,, -,RP_TLM.VCDU.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,101,0,32,NONE,,,,,,,,, -,RP_TLM.VCDU.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,105,0,32,NONE,,,,,,,,, -,RP_TLM.VCDU.COUNTER,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->vcdu_counter,PACKET,109,0,32,NONE,,,,,,,,, +,RT_TLM.AOSTF.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,89,0,32,NONE,,,,,,,,, +,RT_TLM.AOSTF.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,93,0,32,NONE,,,,,,,,, +,RT_TLM.AOSTF.COUNTER,uint32_t,(uint32_t)CSRV_GS_rt_tlm_packet_handler->aostf_counter,PACKET,97,0,32,NONE,,,,,,,,, +,RP_TLM.AOSTF.FLUSH_INTERVAL,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval,PACKET,101,0,32,NONE,,,,,,,,, +,RP_TLM.AOSTF.LAST_UPDATED,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.last_updated,PACKET,105,0,32,NONE,,,,,,,,, +,RP_TLM.AOSTF.COUNTER,uint32_t,(uint32_t)CSRV_GS_rp_tlm_packet_handler->aostf_counter,PACKET,109,0,32,NONE,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, diff --git a/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_MOBC.csv b/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_MOBC.csv index 2794564b0..5a42da589 100644 --- a/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_MOBC.csv +++ b/examples/mobc/tlm-cmd-db/TLM_DB/calced_data/SAMPLE_MOBC_TLM_DB_MOBC.csv @@ -122,7 +122,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,BCT_CMD_PTR,uint8_t,(uint8_t)(block_command_table->pos.cmd),PACKET,291,0,8,NONE,,,,,,,,BCT コマンドポインタ, ,BCT_REGD_TIME,uint32_t,((block_command_table->pos.cmd == 0) ? 0 : (uint32_t)BCT_get_ti(block_command_table->pos.block@@ (uint8_t)(block_command_table->pos.cmd-1))),PACKET,292,0,32,NONE,,,,,,,,BCT 登録コマンド時刻,変数指定が大変なことに… ,BCT_REGD_ID,uint16_t,(uint16_t)((block_command_table->pos.cmd == 0) ? 0 : BCT_get_id(block_command_table->pos.block@@ (uint8_t)(block_command_table->pos.cmd-1))),PACKET,296,0,16,NONE,,,,,,,,BCT 登録コマンドID,変数指定が大変なことに… -,RT_BUFFER_AVAILABLE,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,298,0,8,NONE,,,,,,,,CCSDS RT VCDU 使用量, +,RT_BUFFER_AVAILABLE,uint8_t,gs_driver->ccsds_info.buffer_num,PACKET,298,0,8,NONE,,,,,,,,CCSDS RT AOSTF 使用量, ,RT_T2M_FLUSH_INTERVAL,uint32_t,(uint32_t)(CSRV_GS_rt_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval),PACKET,299,0,32,NONE,,,,,,,,TL0コマンドカウンタ, ,RP_T2M_FLUSH_INTERVAL,uint32_t,(uint32_t)(CSRV_GS_rp_tlm_packet_handler->tc_packet_to_m_pdu.flush_interval),PACKET,303,0,32,NONE,,,,,,,,TL0コマンドカウンタ, ,RT_TLM_COUNTER,uint32_t,PL_count_executed_nodes(&PH_rt_tlm_list),PACKET,307,0,32,NONE,,,,,,,,TL0コマンドカウンタ, @@ -134,7 +134,7 @@ Comment,TLM Entry,Onboard Software Info.,,Extraction Info.,,,,Conversion Info.,, ,TCI_TX_CYCLE,uint32_t,(uint32_t)gs_driver->latest_info->tx.send_cycle,PACKET,322,0,32,NONE,,,,,,,,時刻校正情報::送出サイクル, ,TCI_TX_BITRATE,uint32_t,gs_driver->driver_ccsds.ccsds_config.bitrate,PACKET,326,0,32,NONE,,,,,,,,時刻校正情報::送出ビットレート, ,TCI_VCID,uint8_t,(uint8_t)gs_driver->latest_info->tx.vcid,PACKET,330,0,8,NONE,,,,,,,,時刻構成情報::送出VCID, -,TCI_VCDU_COUNTER,uint32_t,gs_driver->latest_info->tx.vcdu_counter,PACKET,331,0,32,NONE,,,,,,,,時刻校正情報::送出VCDUカウンタ, +,TCI_AOSTF_COUNTER,uint32_t,gs_driver->latest_info->tx.aostf_counter,PACKET,331,0,32,NONE,,,,,,,,時刻校正情報::送出AOSTFカウンタ, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,, diff --git a/examples/subobc/check_coding_rule.json b/examples/subobc/check_coding_rule.json index 5c9e1e795..5f191bb54 100644 --- a/examples/subobc/check_coding_rule.json +++ b/examples/subobc/check_coding_rule.json @@ -31,7 +31,12 @@ "CommonCmdPacket", "SpacePacket", "TlmSpacePacket", - "CmdSpacePacket" + "CmdSpacePacket", + "AosTransferFrame", + "MultiplexingProtocolDataUnit", + "TcpToMPdu", + "TcSegment", + "TcTransferFrame" ], "comment_additional_type" : [ "FIXME: TCP はもう存在しないはずなので,どこかで消す", diff --git a/examples/subobc/src/src_user/applications/component_service/csrv_mobc.c b/examples/subobc/src/src_user/applications/component_service/csrv_mobc.c index ddc25b38d..2cc2c107d 100644 --- a/examples/subobc/src/src_user/applications/component_service/csrv_mobc.c +++ b/examples/subobc/src/src_user/applications/component_service/csrv_mobc.c @@ -112,8 +112,8 @@ static RESULT CSRV_MOBC_rt_tlm_packet_handler_(void) PL_drop_executed(&PH_rt_tlm_list); // FIXME: 現状,WINGS の問題から DUMP TLMは考えない. - // APID_AOBC_TLM 以外を弾いている. - if (CTP_get_apid(&packet) != APID_AOBC_TLM) + // APID_TLM_AOBC 以外を弾いている. + if (CTP_get_apid(&packet) != APID_TLM_AOBC) { // FIXME: アノマリいれる? 最後のエラーは以下で保存されるので不要な気もする. // AOBC のアノマリ基準は? diff --git a/examples/subobc/src/src_user/component_driver/etc/mobc.c b/examples/subobc/src/src_user/component_driver/etc/mobc.c index 3c0baaf4b..f85d916cd 100644 --- a/examples/subobc/src/src_user/component_driver/etc/mobc.c +++ b/examples/subobc/src/src_user/component_driver/etc/mobc.c @@ -106,7 +106,7 @@ static CDS_ERR_CODE MOBC_analyze_rec_data_(CDS_StreamConfig* p_stream_config, vo // MOBC からのコマンドは以下のパターン // APID: - // APID_AOBC_CMD + // APID_CMD_TO_AOBC // CCP_EXEC_TYPE: // CCP_EXEC_TYPE_GS <- GS から MOBC のキューに入らず直接転送されたもの // CCP_EXEC_TYPE_TL0 <- GS から MOBC のキューに入らず直接転送されたもの diff --git a/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c b/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c index 57afc6e33..274132fd4 100644 --- a/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c +++ b/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.c @@ -11,14 +11,14 @@ APID APID_get_apid_from_uint16(uint16_t apid) { switch ((APID)apid) { - case APID_MOBC_CMD: // FALLTHROUGH - case APID_AOBC_CMD: // FALLTHROUGH - case APID_TOBC_CMD: // FALLTHROUGH - case APID_TCAL_TLM: // FALLTHROUGH - case APID_MOBC_TLM: // FALLTHROUGH - case APID_AOBC_TLM: // FALLTHROUGH - case APID_TOBC_TLM: // FALLTHROUGH - case APID_DUMP_TLM: // FALLTHROUGH + case APID_CMD_TO_MOBC: // FALLTHROUGH + case APID_CMD_TO_AOBC: // FALLTHROUGH + case APID_CMD_TO_TOBC: // FALLTHROUGH + case APID_TLM_TCAL: // FALLTHROUGH + case APID_TLM_MOBC: // FALLTHROUGH + case APID_TLM_AOBC: // FALLTHROUGH + case APID_TLM_TOBC: // FALLTHROUGH + case APID_TLM_DUMP: // FALLTHROUGH case APID_FILL_PKT: return (APID)apid; diff --git a/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h b/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h index c2a6d24b0..a4de47d3e 100644 --- a/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h +++ b/examples/subobc/src/src_user/settings/tlm_cmd/ccsds/apid_define.h @@ -12,18 +12,19 @@ * @enum APID * @brief Application Process ID * @note 11bit + * @note 命名規則は tlm_cmd/common_tlm_cmd_packet.h を参照 */ typedef enum { - APID_MOBC_CMD = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD - APID_AOBC_CMD = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD - APID_TOBC_CMD = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD - APID_TCAL_TLM = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) - APID_MOBC_TLM = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM - APID_AOBC_TLM = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM - APID_TOBC_TLM = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM - APID_DUMP_TLM = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) - APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET + APID_CMD_TO_MOBC = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD + APID_CMD_TO_AOBC = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD + APID_CMD_TO_TOBC = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD + APID_TLM_TCAL = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) + APID_TLM_MOBC = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM + APID_TLM_AOBC = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM + APID_TLM_TOBC = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM + APID_TLM_DUMP = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) + APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET APID_UNKNOWN } APID; diff --git a/examples/subobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h b/examples/subobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h index b21f5ee09..45b35cd83 100644 --- a/examples/subobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h +++ b/examples/subobc/src/src_user/settings/tlm_cmd/common_cmd_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_CMD_PACKET_DEFINE_H_ #define COMMON_CMD_PACKET_DEFINE_H_ -#include +#include #include "./ccsds/apid_define.h" // CommonCmdPacket として CmdSpacePacket をつかう @@ -15,7 +15,7 @@ typedef CmdSpacePacket CommonCmdPacket; // 自分宛て CMD を示す AIPD を定義 // FIXME: Space Packet が整備されたら直す -#define CCP_APID_TO_ME (APID_AOBC_CMD) +#define CCP_APID_CMD_TO_ME (APID_CMD_TO_AOBC) /** * @enum CCP_DEST_TYPE diff --git a/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h b/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h index f4846059d..33408fd6c 100644 --- a/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h +++ b/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_cmd_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_TLM_CMD_PACKET_DEFINE_H_ #define COMMON_TLM_CMD_PACKET_DEFINE_H_ -#include +#include // CommonTlmCmdPacket として SpacePacket をつかう typedef SpacePacket CommonTlmCmdPacket; diff --git a/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h b/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h index b0785c362..9cdb8104a 100644 --- a/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h +++ b/examples/subobc/src/src_user/settings/tlm_cmd/common_tlm_packet_define.h @@ -5,7 +5,7 @@ #ifndef COMMON_TLM_PACKET_DEFINE_H_ #define COMMON_TLM_PACKET_DEFINE_H_ -#include +#include #include "./ccsds/apid_define.h" // CommonTlmPacket として TlmSpacePacket をつかう @@ -15,6 +15,6 @@ typedef TlmSpacePacket CommonTlmPacket; // 自分で生成される TLM を示す AIPD を定義 // FIXME: Space Packet が整備されたら直す -#define CTP_APID_FROM_ME (APID_AOBC_TLM) +#define CTP_APID_TLM_FROM_ME (APID_TLM_AOBC) #endif diff --git a/examples/subobc/src/src_user/test/test_comm_between_c2a.py b/examples/subobc/src/src_user/test/test_comm_between_c2a.py index 94fb3caee..ec5faa4df 100644 --- a/examples/subobc/src/src_user/test/test_comm_between_c2a.py +++ b/examples/subobc/src/src_user/test/test_comm_between_c2a.py @@ -22,7 +22,7 @@ SUB_OBC = "AOBC" Tlm_CODE_SUB_OBC_HK = c2a_enum.Tlm_CODE_AOBC_HK -TLM_APID_SUB_OBC = c2a_enum.APID_AOBC_TLM +TLM_APID_SUB_OBC = c2a_enum.APID_TLM_AOBC USE_BCT_ID = 100 # NOP だと id が 0x00 なのでちがうのを diff --git a/examples/subobc/src/src_user/tlm_cmd/common_cmd_packet.c b/examples/subobc/src/src_user/tlm_cmd/common_cmd_packet.c index f510cf381..a0da7a640 100644 --- a/examples/subobc/src/src_user/tlm_cmd/common_cmd_packet.c +++ b/examples/subobc/src/src_user/tlm_cmd/common_cmd_packet.c @@ -5,7 +5,7 @@ * @note CCP: CommonCmdPacket */ #include -#include +#include #include diff --git a/examples/subobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c b/examples/subobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c index 259626eaa..c02e70958 100644 --- a/examples/subobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c +++ b/examples/subobc/src/src_user/tlm_cmd/common_tlm_cmd_packet.c @@ -7,7 +7,7 @@ * @note CCP: CommonCmdPacket */ #include -#include +#include #include diff --git a/examples/subobc/src/src_user/tlm_cmd/common_tlm_packet.c b/examples/subobc/src/src_user/tlm_cmd/common_tlm_packet.c index f8274edb5..ee1d2789d 100644 --- a/examples/subobc/src/src_user/tlm_cmd/common_tlm_packet.c +++ b/examples/subobc/src/src_user/tlm_cmd/common_tlm_packet.c @@ -5,7 +5,7 @@ * @note CTP: CommonTlmPacket */ #include -#include +#include #include diff --git a/library/bind-utils/Cargo.toml b/library/bind-utils/Cargo.toml index e802a5ee7..bbb1c799c 100644 --- a/library/bind-utils/Cargo.toml +++ b/library/bind-utils/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" license = "MIT" [dependencies] -bindgen = "0.68.1" +bindgen = "0.69.1" doxygen-rs = "0.4.2" diff --git a/library/endian.c b/library/endian.c index 4d63b8dbb..77f144c81 100644 --- a/library/endian.c +++ b/library/endian.c @@ -1,8 +1,8 @@ +#pragma section REPRO /** * @file * @brief エンディアンに関するものを定義する */ -#pragma section REPRO #include "endian.h" #include #include diff --git a/library/libc/bsearch.c b/library/libc/bsearch.c index a4a320ab3..fd89f4e72 100644 --- a/library/libc/bsearch.c +++ b/library/libc/bsearch.c @@ -1,3 +1,4 @@ +#pragma section REPRO /** * @file * @brief C2A が依存する libc 関数 bsearch を自前実装し,c2a-core から提供することで,C2A の移植性を高める. @@ -49,3 +50,4 @@ void *bsearch(const void* key, const void* base, size_t nmemb, size_t size, comp // not found return NULL; } +#pragma section diff --git a/library/libc/memchr.c b/library/libc/memchr.c index 457cb329a..d835d528b 100644 --- a/library/libc/memchr.c +++ b/library/libc/memchr.c @@ -1,3 +1,4 @@ +#pragma section REPRO /** * @file * @brief C2A が依存する libc 関数 memchr を自前実装し,c2a-core から提供することで,C2A の移植性を高める. @@ -22,3 +23,4 @@ void* memchr(const void* buf, int c, size_t n) return NULL; } +#pragma section diff --git a/script/migration/v4-rename-applications.sh b/script/migration/v4-rename-applications.sh index 4eac9c73a..63ce2bd0f 100755 --- a/script/migration/v4-rename-applications.sh +++ b/script/migration/v4-rename-applications.sh @@ -1,5 +1,5 @@ #!/bin/bash -echo "Script -> script migration" +echo "Applications -> applications migration" function find_all() { find . -name "*" -not \( -path "*/.git/*" -o -path "*/src_core/*" -o -path "*.xlsm" \) -type f -print0 @@ -36,32 +36,32 @@ done echo "rename ref: Applications/*" +echo " DriverInstances -> driver_instances" find_all | xargs -0 sed -i -e "s#Applications/DriverInstances#applications/driver_instances#g" find_all | xargs -0 sed -i -e "s#Applications\\\DriverInstances#applications\\\driver_instances#g" +find_all | xargs -0 sed -i -e "s#DriverInstances/#driver_instances/#g" +echo " Middleware -> middleware" find_all | xargs -0 sed -i -e "s#Applications/Middleware#applications/middleware#g" find_all | xargs -0 sed -i -e "s#Applications\\\Middleware#applications\\\middleware#g" - -find_all | xargs -0 sed -i -e "s#Applications/UserDefined#applications/user_defined#g" -find_all | xargs -0 sed -i -e "s#Applications\\\UserDefined#applications\\\user_defined#g" - -find_all | xargs -0 sed -i -e "s#/Applications#/applications#g" -find_all | xargs -0 sed -i -e "s#\\\Applications#\\\applications#g" - -# CMake -find_all | xargs -0 sed -i -e "s#DriverInstances/#driver_instances/#g" find_all | xargs -0 sed -i -e "s#Middleware/#middleware/#g" -echo "rename ref: UserDefined" +echo " UserDefined -> user_defined" for ((i=0; i<${#user_defined_org[@]}; i++)); do - echo " ${user_defined_org[i]} -> ${user_defined_new[i]}" + echo " ${user_defined_org[i]} -> ${user_defined_new[i]}" - find_all | xargs -0 sed -i -e "s#UserDefined/${drv_org[i]}#user_defined/${drv_new[i]}#g" - find_all | xargs -0 sed -i -e "s#UserDefined\\\${drv_org}#user_defined\\\${drv_new}#g" + find_all | xargs -0 sed -i -e "s#UserDefined/${user_defined_org[i]}#user_defined/${user_defined_new[i]}#g" + find_all | xargs -0 sed -i -e "s#UserDefined\\\${user_defined_org[i]}#user_defined\\\${user_defined_new[i]}#g" done - +echo " ." +find_all | xargs -0 sed -i -e "s#Applications/UserDefined#applications/user_defined#g" +find_all | xargs -0 sed -i -e "s#Applications\\\UserDefined#applications\\\user_defined#g" find_all | xargs -0 sed -i -e "s#UserDefined/#user_defined/#g" +echo " ." +find_all | xargs -0 sed -i -e "s#/Applications#/applications#g" +find_all | xargs -0 sed -i -e "s#\\\Applications#\\\applications#g" + # Settings echo "rename dir: src_user/Settings/Applications -> src_user/Settings/applications" mv src/src_user/Settings/Applications src/src_user/Settings/applications diff --git a/script/migration/v4-rename-component-driver-prefix.sh b/script/migration/v4-rename-component-driver-prefix.sh index 12b149b25..959ade6eb 100755 --- a/script/migration/v4-rename-component-driver-prefix.sh +++ b/script/migration/v4-rename-component-driver-prefix.sh @@ -6,13 +6,17 @@ function find_all() { } ## c2a-core ref -header_org=("common_tlm_cmd_packet_for_driver_super.h" "eb90_frame_for_driver_super.h" "eb90_packet_for_driver_super.h") -header_new=("cdrv_common_tlm_cmd_packet.h" "cdrv_eb90_frame.h" "cdrv_eb90_packet.h") +src_org=("common_tlm_cmd_packet_for_driver_super" "eb90_frame_for_driver_super" "eb90_packet_for_driver_super") +src_new=("cdrv_common_tlm_cmd_packet" "cdrv_eb90_frame" "cdrv_eb90_packet") echo "rename c2a-core header file name prefix & remove _for_driver_super suffix" -for i in ${!header_org[@]}; do - echo " ${header_org[$i]} -> ${header_new[$i]}" - find_all | xargs -0 sed -i -e "s#${header_org[$i]}#${header_new[$i]}#g" +for i in ${!src_org[@]}; do + echo " ${src_org[$i]}.h -> ${src_new[$i]}.h" + find_all | xargs -0 sed -i -e "s#${src_org[$i]}\.h#${src_new[$i]}\.h#g" + + # rename c2a-core source impl ref for not CMake environment + echo " ${src_org[$i]}.c -> ${src_new[$i]}.c" + find_all | xargs -0 sed -i -e "s#${src_org[$i]}\.c#${src_new[$i]}\.c#g" done echo "rename init func" diff --git a/script/migration/v4-rename-driver2.sh b/script/migration/v4-rename-driver2.sh index 7923a6c6a..8da8cbdee 100755 --- a/script/migration/v4-rename-driver2.sh +++ b/script/migration/v4-rename-driver2.sh @@ -19,6 +19,7 @@ mv src/src_user/Settings/DriverSuper src/src_user/Settings/component_driver_supe find_all | xargs -0 sed -i -e "s#\${C2A_USER_DIR}/driver#\${C2A_USER_DIR}/component_driver#g" find_all | xargs -0 sed -i -e "s#/driver/#/component_driver/#g" +find_all | xargs -0 sed -i -e "s#\\\driver\\\#\\\component_driver\\\#g" ## _init_dssc(), _from_dssc(), _to_dssc() find_all | xargs -0 sed -i "s/dssc/cdssc/g" diff --git a/script/migration/v4-rename-if-list.sh b/script/migration/v4-rename-if-list.sh index a5cc004f6..6c8e09e92 100755 --- a/script/migration/v4-rename-if-list.sh +++ b/script/migration/v4-rename-if-list.sh @@ -15,9 +15,11 @@ mv src/src_user/hal/if_list.c src/src_user/Settings/component_driver_super/hal_h sed -i -e "s#IF_LIST_H_#HAL_HANDLER_REGISTRY_H_#g" src/src_user/Settings/component_driver_super/hal_handler_registry.h ### ref -sed -i -e "s#\"if_list\.h\"#\"hal_handler_registry\.h\"#g" src/src_user/Settings/component_driver_super/hal_handler_registry.c - find_all | xargs -0 sed -i -e "s#src_user/hal/if_list\.h#src_user/Settings/component_driver_super/hal_handler_registry\.h#g" +find_all | xargs -0 sed -i -e "s#src_user\\\hal\\\if_list\.h#src_user\\\Settings\\\component_driver_super\\\hal_handler_registry\.h#g" +find_all | xargs -0 sed -i -e "s#src_user\\\hal\\\if_list\.c#src_user\\\Settings\\\component_driver_super\\\hal_handler_registry\.c#g" + +sed -i -e "s#\"if_list\.h\"#\"hal_handler_registry\.h\"#g" src/src_user/Settings/component_driver_super/hal_handler_registry.c ## CMake echo "remove src/src_user/hal/if_list.c from CMakeLists.txt" diff --git a/script/migration/v4-rename-script.sh b/script/migration/v4-rename-script.sh index abf4a02cf..bf7354983 100755 --- a/script/migration/v4-rename-script.sh +++ b/script/migration/v4-rename-script.sh @@ -28,14 +28,14 @@ mv src/src_user/script/CI src/src_user/script/ci mv src/src_user/script/Git src/src_user/script/git echo "rename ref: src_user/Script -> src_user/script" -find_all | xargs -0 sed -i -e "s#src_user/Script/AddSection#src_user/script/add_section#g" -find_all | xargs -0 sed -i -e "s#src_user\\\Script\\\AddSection#src_user\\\script\\\add_section#g" +find_all | xargs -0 sed -i -e "s#Script/AddSection#script/add_section#g" +find_all | xargs -0 sed -i -e "s#Script\\\AddSection#script\\\add_section#g" -find_all | xargs -0 sed -i -e "s#src_user/Script/CI#src_user/script/ci#g" -find_all | xargs -0 sed -i -e "s#src_user\\\Script\\\CI#src_user\\\script\\\ci#g" +find_all | xargs -0 sed -i -e "s#Script/CI#script/ci#g" +find_all | xargs -0 sed -i -e "s#Script\\\CI#script\\\ci#g" -find_all | xargs -0 sed -i -e "s#src_user/Script/Git#src_user/script/git#g" -find_all | xargs -0 sed -i -e "s#src_user\\\Script\\\Git#src_user\\\script\\\git#g" +find_all | xargs -0 sed -i -e "s#Script/Git#script/git#g" +find_all | xargs -0 sed -i -e "s#Script\\\Git#script\\\git#g" find_all | xargs -0 sed -i -e "s#src_user/Script#src_user/script#g" find_all | xargs -0 sed -i -e "s#src_user\\\Script#src_user\\\script#g" diff --git a/script/migration/v4-rename-settings.sh b/script/migration/v4-rename-settings.sh index b0460741e..170ab4a0c 100755 --- a/script/migration/v4-rename-settings.sh +++ b/script/migration/v4-rename-settings.sh @@ -27,6 +27,7 @@ for ((i=0; i<${#tl_org[@]}; i++)); do sed -i -e "s#modes/task_lists/${tl_org[i]}#modes/task_lists/${tl_new[i]}#g" src/src_user/settings/CMakeLists.txt find_all | xargs -0 sed -i -e "s#Settings/Modes/TaskLists/${tl_org[i]}#settings/modes/task_lists/${tl_new[i]}#g" + find_all | xargs -0 sed -i -e "s#Settings\\\Modes\\\TaskLists\\\\${tl_org[i]}#settings\\\modes\\\task_lists\\\\${tl_new[i]}#g" if [ -e src/src_user/settings/modes/task_lists/${tl_org[i]} ]; then mv src/src_user/settings/modes/task_lists/${tl_org[i]} src/src_user/settings/modes/task_lists/${tl_new[i]} @@ -34,6 +35,7 @@ for ((i=0; i<${#tl_org[@]}; i++)); do done find_all | xargs -0 sed -i -e "s#Settings/Modes/TaskLists#settings/modes/task_lists#g" +find_all | xargs -0 sed -i -e "s#Settings\\\Modes\\\TaskLists#settings\\\modes\\\task_lists#g" echo " /modes/Transitions -> transitions" @@ -45,18 +47,27 @@ mv src/src_user/settings/modes/Transitions src/src_user/settings/modes/transitio for ((i=0; i<${#tr_org[@]}; i++)); do echo " /transitions/${tr_org[i]} -> ${tr_new[i]}" + sed -i -e "s#modes/transitions/${tr_org[i]}#modes/transitions/${tr_new[i]}#g" src/src_user/settings/CMakeLists.txt + find_all | xargs -0 sed -i -e "s#Settings/Modes/Transitions/${tr_org[i]}#settings/modes/transitions/${tr_new[i]}#g" + find_all | xargs -0 sed -i -e "s#Settings\\\Modes\\\Transitions\\\\${tr_org[i]}#settings\\\modes\\\transitions\\\\${tr_new[i]}#g" if [ -e src/src_user/settings/modes/transitions/${tr_org[i]} ]; then mv src/src_user/settings/modes/transitions/${tr_org[i]} src/src_user/settings/modes/transitions/${tr_new[i]} fi done find_all | xargs -0 sed -i -e "s#Settings/Modes/Transitions#settings/modes/transitions#g" +find_all | xargs -0 sed -i -e "s#Settings\\\Modes\\\Transitions#settings\\\modes\\\transitions#g" # ref find_all | xargs -0 sed -i -e "s#Settings/Modes#settings/modes#g" +find_all | xargs -0 sed -i -e "s#Settings\\\Modes#settings\\\modes#g" + find_all | xargs -0 sed -i -e "s#Settings/AnomalyHandlerRules#settings/anomaly_handler_rules#g" +find_all | xargs -0 sed -i -e "s#Settings\\\AnomalyHandlerRules#settings\\\anomaly_handler_rules#g" + find_all | xargs -0 sed -i -e "s#Settings/AnomalyLogger#settings/anomaly_logger#g" +find_all | xargs -0 sed -i -e "s#Settings\\\AnomalyLogger#settings\\\anomaly_logger#g" find_all | xargs -0 sed -i -e "s#Settings/ComponentDriverSuper#settings/component_driver_super#g" find_all | xargs -0 sed -i -e "s#Settings\\\ComponentDriverSuper#settings\\\component_driver_super#g" diff --git a/script/migration/v4-rename-system.sh b/script/migration/v4-rename-system.sh index 3c4ccdbc9..fd12c617d 100755 --- a/script/migration/v4-rename-system.sh +++ b/script/migration/v4-rename-system.sh @@ -41,11 +41,11 @@ mv src/src_user/Settings/system/EventHandlerRules src/src_user/Settings/system/e find_settings | xargs -0 sed -i -e "s#System/EventHandlerRules#system/event_handler_rules#g" find_settings | xargs -0 sed -i -e "s#System#system#g" -find_all | xargs -0 sed -i -e "s#src_user/Settings/System/EventHandlerRules#src_user/Setting/system/event_handler_rules#g" -find_all | xargs -0 sed -i -e "s#src_user\\\Settings\\\System\\\EventHandlerRules#src_user\\\Settings\\\system\\\event_handler_rules#g" +find_all | xargs -0 sed -i -e "s#Settings/System/EventHandlerRules#Settings/system/event_handler_rules#g" +find_all | xargs -0 sed -i -e "s#Settings\\\System\\\EventHandlerRules#Settings\\\system\\\event_handler_rules#g" -find_all | xargs -0 sed -i -e "s#src_user/Settings/System#src_user/Settings/system#g" -find_all | xargs -0 sed -i -e "s#src_user\\\Settings\\\System#src_user\\\Settings\\\system#g" +find_all | xargs -0 sed -i -e "s#Settings/System#Settings/system#g" +find_all | xargs -0 sed -i -e "s#Settings\\\System#Settings\\\system#g" # Test echo "rename test dir: test/src_core/System -> test/src_core/system" diff --git a/script/migration/v4-rename-test-dir.sh b/script/migration/v4-rename-test-dir.sh index 3a3f9dce3..e9626ef3a 100755 --- a/script/migration/v4-rename-test-dir.sh +++ b/script/migration/v4-rename-test-dir.sh @@ -3,7 +3,10 @@ echo "rename test top dir src/src_user/Test -> src/src_user/test" mv src/src_user/Test src/src_user/test -echo "move test case files to test dir" +echo "move test case files to src/src_user/test" mv src/src_user/test/test/* src/src_user/test +echo "remove test dir src/src_user/test/test" +rm -r src/src_user/test/test + sed -i 's#ROOT_PATH = "../"#ROOT_PATH = "./"#' src/src_user/test/conftest.py diff --git a/script/migration/v4-rename-tlmcmd.sh b/script/migration/v4-rename-tlmcmd.sh index d9dd409ab..aa1a1e436 100755 --- a/script/migration/v4-rename-tlmcmd.sh +++ b/script/migration/v4-rename-tlmcmd.sh @@ -38,7 +38,9 @@ find_all | xargs -0 sed -i -e "s#TlmCmd\\\#tlm_cmd\\\#g" # CMake echo "rename ref: TlmCmd/*" find_all | xargs -0 sed -i -e "s#Ccsds/#ccsds/#g" +find_all | xargs -0 sed -i -e "s#Ccsds\\\#ccsds\\\#g" find_all | xargs -0 sed -i -e "s#NormalBlockCommandDefinition/#normal_block_command_definition/#g" +find_all | xargs -0 sed -i -e "s#NormalBlockCommandDefinition\\\#normal_block_command_definition\\\#g" # Settings echo "rename settings dir: Settings/TlmCmd -> Settings/tlm_cmd" diff --git a/tlm_cmd/block_command_table.c b/tlm_cmd/block_command_table.c index 57ad9a455..0b04ac5cd 100644 --- a/tlm_cmd/block_command_table.c +++ b/tlm_cmd/block_command_table.c @@ -21,8 +21,8 @@ #include "common_cmd_packet_util.h" // FIXME: この include は依存的にダメなので, TCP → Space Packet 大工事が終わったら直す -#include "./ccsds/space_packet.h" -#include "./ccsds/cmd_space_packet.h" +#include "./ccsds/space_packet_protocol/space_packet.h" +#include "./ccsds/space_packet_protocol/cmd_space_packet.h" static BlockCommandTable block_command_table_; const BlockCommandTable* const block_command_table = &block_command_table_; diff --git a/tlm_cmd/ccsds/aos_space_data_link_protocol/CMakeLists.txt b/tlm_cmd/ccsds/aos_space_data_link_protocol/CMakeLists.txt new file mode 100644 index 000000000..a9b512b74 --- /dev/null +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.13) + +project(C2A_CORE_CCSDS_AOS_SPACE_DATA_LINK_PROTOCOL) + +set(C2A_SRCS + aos_transfer_frame.c + multiplexing_protocol_data_unit.c + tcp_to_m_pdu.c +) + +if(C2A_BUILD_AS_CXX) + set_source_files_properties(${C2A_SRCS} PROPERTIES LANGUAGE CXX) # C++ +endif() + +add_library(${PROJECT_NAME} OBJECT ${C2A_SRCS}) + +include(${C2A_CORE_DIR}/common.cmake) diff --git a/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.c b/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.c new file mode 100644 index 000000000..6e5f170f3 --- /dev/null +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.c @@ -0,0 +1,210 @@ +#pragma section REPRO +/** + * @file + * @brief CCSDS で規定される AOS Transfer Frame の実装 + * @note 詳細は aos_transfer_frame.h を参照 + */ +#include "aos_transfer_frame.h" + +#include // for memcpy + +static void AOSTF_set_common_hdr_(AosTransferFrame* aostf); +static void AOSTF_clear_spare_(AosTransferFrame* aostf); + +void AOSTF_generate_byte_stream(const AosTransferFrame* aostf, uint8_t byte_stream[AOSTF_LEN]) +{ + memcpy(byte_stream, aostf->header, AOSTF_HEADER_SIZE); + byte_stream += AOSTF_HEADER_SIZE; + + M_PDU_generate_byte_stream(&(aostf->m_pdu), byte_stream); + byte_stream += M_PDU_LEN; + + memcpy(byte_stream, aostf->trailer, AOSTF_TRAILER_SIZE); +} + +void AOSTF_setup_fill_aostf(AosTransferFrame* aostf) +{ + AOSTF_set_common_hdr_(aostf); + AOSTF_set_vcid(aostf, AOSTF_VCID_FILL); + M_PDU_setup_idle_m_pdu(&(aostf->m_pdu)); +} + +void AOSTF_setup_realtime_aostf_hdr(AosTransferFrame* aostf, uint32_t counter) +{ + AOSTF_set_common_hdr_(aostf); + AOSTF_set_vcid(aostf, AOSTF_VCID_REALTIME); + AOSTF_set_aostf_counter(aostf, counter); +} + +void AOSTF_setup_replay_aostf_hdr(AosTransferFrame* aostf, uint32_t counter) +{ + AOSTF_set_common_hdr_(aostf); + AOSTF_set_replay_flag(aostf, AOSTF_REPLAY_TRUE); + AOSTF_set_vcid(aostf, AOSTF_VCID_REPLAY); + AOSTF_set_aostf_counter(aostf, counter); +} + +static void AOSTF_set_common_hdr_(AosTransferFrame* aostf) +{ + AOSTF_set_ver(aostf, AOSTF_VER_2); + AOSTF_set_scid(aostf, AOSTF_SCID_MY_ID); + AOSTF_set_replay_flag(aostf, AOSTF_REPLAY_FALSE); + AOSTF_clear_spare_(aostf); +} + +static void AOSTF_clear_spare_(AosTransferFrame* aostf) +{ + unsigned int pos = 5; + uint8_t mask = 0x7f; // 01111111b + + aostf->header[pos] &= (uint8_t)(~mask); +} + +AOSTF_VER AOSTF_get_ver(const AosTransferFrame* aostf) +{ + unsigned int pos = 0; + uint8_t mask = 0xc0; // 11000000b + + AOSTF_VER ver = (AOSTF_VER)((aostf->header[pos] & mask) >> 6); + + switch (ver) + { + case AOSTF_VER_2: + return ver; + default: + return AOSTF_VER_UNKNOWN; + } +} + +void AOSTF_set_ver(AosTransferFrame* aostf, AOSTF_VER ver) +{ + unsigned int pos = 0; + uint8_t mask = 0xc0; // 11000000b + uint8_t val = (uint8_t)((ver << 6) & mask); + + aostf->header[pos] &= (uint8_t)(~mask); + aostf->header[pos] |= val; +} + +AOSTF_SCID AOSTF_get_scdi(const AosTransferFrame* aostf) +{ + unsigned int pos = 0; + uint8_t mask1 = 0x3f; // 00111111b + uint8_t mask2 = 0xc0; // 11000000b + + int scid = (aostf->header[pos] & mask1); + scid <<= 2; + scid |= ((aostf->header[pos + 1] & mask2) >> 6); + + return AOSTF_get_scid_from_uint8((uint8_t)scid); +} + +void AOSTF_set_scid(AosTransferFrame* aostf, AOSTF_SCID scid) +{ + unsigned int pos = 0; + uint8_t mask1 = 0x3f; // 00111111b + uint8_t mask2 = 0xc0; // 11000000b + + aostf->header[pos] &= (uint8_t)(~mask1); + aostf->header[pos] |= (uint8_t)((scid >> 2) & mask1); + aostf->header[pos + 1] &= (uint8_t)(~mask2); + aostf->header[pos + 1] |= (uint8_t)((scid << 6) & mask2); +} + +AOSTF_VCID AOSTF_get_vcid(const AosTransferFrame* aostf) +{ + unsigned int pos = 1; + uint8_t mask = 0x3f; // 00111111b + + AOSTF_VCID vcid = (AOSTF_VCID)(aostf->header[pos] & mask); + + switch (vcid) + { + case AOSTF_VCID_REALTIME: // FALLTHROUGH + case AOSTF_VCID_REPLAY: // FALLTHROUGH + case AOSTF_VCID_FILL: // FALLTHROUGH + return vcid; + default: + return AOSTF_VCID_UNKNOWN; + } +} + +void AOSTF_set_vcid(AosTransferFrame* aostf, AOSTF_VCID vcid) +{ + unsigned int pos = 1; + uint8_t mask = 0x3f; // 00111111b + + aostf->header[pos] &= (uint8_t)(~mask); + aostf->header[pos] |= (uint8_t)(vcid & mask); +} + +uint32_t AOSTF_get_aostf_counter(const AosTransferFrame* aostf) +{ + unsigned int pos = 2; + + uint32_t counter = aostf->header[pos]; + counter <<= 8; + counter |= aostf->header[pos + 1]; + counter <<= 8; + counter |= aostf->header[pos + 2]; + + return counter; +} + +void AOSTF_set_aostf_counter(AosTransferFrame* aostf, uint32_t counter) +{ + unsigned int pos = 2; + + aostf->header[pos] = (uint8_t)((counter >> 16) & 0xff); + aostf->header[pos + 1] = (uint8_t)((counter >> 8) & 0xff); + aostf->header[pos + 2] = (uint8_t)(counter & 0xff); +} + +AOSTF_REPLAY_FLAG AOSTF_get_replay_flag(const AosTransferFrame* aostf) +{ + unsigned int pos = 5; + uint8_t mask = 0x80; // 10000000b + + return (AOSTF_REPLAY_FLAG)((aostf->header[pos] & mask) >> 7); +} + +void AOSTF_set_replay_flag(AosTransferFrame* aostf, AOSTF_REPLAY_FLAG flag) +{ + unsigned int pos = 5; + uint8_t mask = 0x80; // 10000000b + + aostf->header[pos] &= (uint8_t)(~mask); + aostf->header[pos] |= (uint8_t)((flag << 7) & mask); +} + +uint32_t AOSTF_get_clcw(const AosTransferFrame* aostf) +{ + unsigned int pos = 0; + + uint32_t clcw = aostf->trailer[pos]; + clcw <<= 8; + clcw |= aostf->trailer[pos + 1]; + clcw <<= 8; + clcw |= aostf->trailer[pos + 2]; + clcw <<= 8; + clcw |= aostf->trailer[pos + 3]; + + return clcw; +} + +void AOSTF_set_clcw(AosTransferFrame* aostf, uint32_t clcw) +{ + unsigned int pos = 0; + + aostf->trailer[pos] = (uint8_t)((clcw >> 24) & 0xff); + aostf->trailer[pos + 1] = (uint8_t)((clcw >> 16) & 0xff); + aostf->trailer[pos + 2] = (uint8_t)((clcw >> 8) & 0xff); + aostf->trailer[pos + 3] = (uint8_t)(clcw & 0xff); +} + +uint32_t AOSTF_calc_next_counter(uint32_t prev) +{ + return (prev + 1) % AOSTF_COUNTER_MAX; +} + +#pragma section diff --git a/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.h b/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.h new file mode 100644 index 000000000..1a7cc4a41 --- /dev/null +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/aos_transfer_frame.h @@ -0,0 +1,122 @@ +/** + * @file + * @brief CCSDS で規定される AOS Transfer Frame の実装 + * @note packet 構造 + * |---------+-------+-------+--------------------------| + * | Pos | Pos | Size | Name | + * | [octet] | [bit] | [bit] | | + * |---------+-------+-------+--------------------------| + * | === Primary Header ================================| + * |---------+-------+-------+--------------------------| + * | 0 | 0 | 2 | Version Number | + * | 0 | 2 | 8 | Spacecraft ID | + * | 1 | 2 | 6 | Virtual Channel ID | + * | 2 | 0 | 24 | Virtual Channel | + * | | | | Frame Count | + * | 5 | 0 | 1 | Replay Flag | + * | 5 | 1 | 1 | VC Frame Count | + * | | | | Usage Flag | + * | 5 | 2 | 2 | Reserved Spare | + * | 5 | 4 | 4 | VC Frame Count Cycle | + * |---------+-------+-------+--------------------------| + * | === User Data Field ===============================| + * |---------+-------+-------+--------------------------| + * | 6 | 0 | * | M_PDU など | + * |---------+-------+-------+--------------------------| + * | === Trailer =======================================| + * |---------+-------+-------+--------------------------| + * | N - 4 | 0 | 32 | CLCW | + * |---------+-------+-------+--------------------------| + * + * Primary Header: + * Version Number と Spacecraft ID をまとめて Master Channel ID と呼ぶ + * 以下をまとめて Signaling Field と呼ぶ + * Frame Header Error Control がある Option もある + * Transfer Frame Insert Zone: + * Primary Header の後に Transfer Frame Insert Zone がある Option もある + * Trailer: + * ここでの定義以外にさまざまな Option がある + */ +#ifndef AOS_TRANSFER_FRAME_H_ +#define AOS_TRANSFER_FRAME_H_ + +#include "multiplexing_protocol_data_unit.h" + +#define AOSTF_HEADER_SIZE (6u) +#define AOSTF_TRAILER_SIZE (4u) +#define AOSTF_LEN (AOSTF_HEADER_SIZE + M_PDU_LEN + AOSTF_TRAILER_SIZE) +#define AOSTF_COUNTER_MAX (0x01000000) // 24bit長 + +// ここで AOSTF_SCID, AOSTF_SCID_MY_ID を定義する +// AOSTF_SCID_UNKNOWN は必須 +/* 例 +typedef enum +{ + AOSTF_SCID_SAMPLE_SATELLITE = 0x00, + AOSTF_SCID_UNKNOWN +} AOSTF_SCID; +*/ +#include + +typedef struct +{ + uint8_t header[AOSTF_HEADER_SIZE]; + MultiplexingProtocolDataUnit m_pdu; + uint8_t trailer[AOSTF_TRAILER_SIZE]; +} AosTransferFrame; + +typedef enum +{ + AOSTF_VER_2 = 1, // 01b: Version2 + AOSTF_VER_UNKNOWN +} AOSTF_VER; + +typedef enum +{ + AOSTF_VCID_REALTIME = 0x01, // 000001b: Realtime Transfer Frame + AOSTF_VCID_REPLAY = 0x02, // 000010b: Stored Transfer Frame + AOSTF_VCID_FILL = 0x3f, // 111111b: Fill Transfer Frame + AOSTF_VCID_UNKNOWN +} AOSTF_VCID; + +typedef enum +{ + AOSTF_REPLAY_FALSE = 0, // 0b: Realtime Transfer Frame + AOSTF_REPLAY_TRUE = 1 // 1b: Replay Transfer Frame +} AOSTF_REPLAY_FLAG; + +void AOSTF_generate_byte_stream(const AosTransferFrame* aostf, uint8_t byte_stream[AOSTF_LEN]); + +void AOSTF_setup_fill_aostf(AosTransferFrame* aostf); + +void AOSTF_setup_realtime_aostf_hdr(AosTransferFrame* aostf, uint32_t counter); + +void AOSTF_setup_replay_aostf_hdr(AosTransferFrame* aostf, uint32_t counter); + +AOSTF_VER AOSTF_get_ver(const AosTransferFrame* aostf); + +void AOSTF_set_ver(AosTransferFrame* aostf, AOSTF_VER ver); + +AOSTF_SCID AOSTF_get_scdi(const AosTransferFrame* aostf); + +void AOSTF_set_scid(AosTransferFrame* aostf, AOSTF_SCID scid); + +AOSTF_VCID AOSTF_get_vcid(const AosTransferFrame* aostf); + +void AOSTF_set_vcid(AosTransferFrame* aostf, AOSTF_VCID vcid); + +uint32_t AOSTF_get_aostf_counter(const AosTransferFrame* aostf); + +void AOSTF_set_aostf_counter(AosTransferFrame* aostf, uint32_t counter); + +AOSTF_REPLAY_FLAG AOSTF_get_replay_flag(const AosTransferFrame* aostf); + +void AOSTF_set_replay_flag(AosTransferFrame* aostf, AOSTF_REPLAY_FLAG flag); + +uint32_t AOSTF_get_clcw(const AosTransferFrame* aostf); + +void AOSTF_set_clcw(AosTransferFrame* aostf, uint32_t clcw); + +uint32_t AOSTF_calc_next_counter(uint32_t prev); + +#endif diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.c b/tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.c similarity index 81% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.c rename to tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.c index 2d809741f..6140b8c99 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/m_pdu.c +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.c @@ -1,22 +1,24 @@ #pragma section REPRO -#include "m_pdu.h" - +/** + * @file + * @brief CCSDS で規定される M_PDU (Multiplexing Protocol Data Unit) の実装 + * @note 詳細は multiplexing_protocol_data_unit.h を参照 + */ +#include "multiplexing_protocol_data_unit.h" #include "string.h" // for memcpy -static void M_PDU_clear_spare_(M_PDU* m_pdu); +static void M_PDU_clear_spare_(MultiplexingProtocolDataUnit* m_pdu); -void M_PDU_generate_byte_stream(const M_PDU* m_pdu, - uint8_t byte_stream[M_PDU_LEN]) +void M_PDU_generate_byte_stream(const MultiplexingProtocolDataUnit* m_pdu, uint8_t byte_stream[M_PDU_LEN]) { memcpy(byte_stream, m_pdu->header, M_PDU_HEADER_SIZE); byte_stream += M_PDU_HEADER_SIZE; - memcpy(byte_stream, m_pdu->data, M_PDU_DATA_SIZE); } -void M_PDU_setup_idle_m_pdu(M_PDU* m_pdu) +void M_PDU_setup_idle_m_pdu(MultiplexingProtocolDataUnit* m_pdu) { - static uint8_t temp_fill_vcdu_data[432] = { + static uint8_t temp_fill_aostf_data_[432] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -47,10 +49,10 @@ void M_PDU_setup_idle_m_pdu(M_PDU* m_pdu) M_PDU_clear_spare_(m_pdu); M_PDU_set_1st_hdr_ptr(m_pdu, M_PDU_PTR_IDLE); - memcpy(&m_pdu->data[0], &temp_fill_vcdu_data[0], 432); + memcpy(&m_pdu->data[0], &temp_fill_aostf_data_[0], 432); } -static void M_PDU_clear_spare_(M_PDU* m_pdu) +static void M_PDU_clear_spare_(MultiplexingProtocolDataUnit* m_pdu) { unsigned int pos = 0; uint8_t mask = 0xf8; // 11111000b @@ -58,7 +60,7 @@ static void M_PDU_clear_spare_(M_PDU* m_pdu) m_pdu->header[pos] &= (uint8_t)(~mask); } -uint16_t M_PDU_get_1st_hdr_ptr(const M_PDU* m_pdu) +uint16_t M_PDU_get_1st_hdr_ptr(const MultiplexingProtocolDataUnit* m_pdu) { unsigned int pos = 0; uint8_t mask = 0x3f; // 00111111b @@ -70,8 +72,7 @@ uint16_t M_PDU_get_1st_hdr_ptr(const M_PDU* m_pdu) return ptr; } -void M_PDU_set_1st_hdr_ptr(M_PDU* m_pdu, - uint16_t ptr) +void M_PDU_set_1st_hdr_ptr(MultiplexingProtocolDataUnit* m_pdu, uint16_t ptr) { unsigned int pos = 0; uint8_t mask = 0x3f; // 00111111b @@ -81,10 +82,7 @@ void M_PDU_set_1st_hdr_ptr(M_PDU* m_pdu, m_pdu->header[pos + 1] = (uint8_t)(ptr & 0xff); } -void M_PDU_set_data(M_PDU* m_pdu, - const uint8_t* data, - size_t offset, - size_t len) +void M_PDU_set_data(MultiplexingProtocolDataUnit* m_pdu, const uint8_t* data, size_t offset, size_t len) { // 指定されたデータ長が上限値を超過する場合は上限値に制限 if (offset + len > M_PDU_DATA_SIZE) @@ -95,4 +93,5 @@ void M_PDU_set_data(M_PDU* m_pdu, // offset以降にデータを書き込む memcpy(m_pdu->data + offset, data, len); } + #pragma section diff --git a/tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.h b/tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.h new file mode 100644 index 000000000..800af2152 --- /dev/null +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/multiplexing_protocol_data_unit.h @@ -0,0 +1,54 @@ +/** + * @file + * @brief CCSDS で規定される M_PDU (Multiplexing Protocol Data Unit) の実装 + * @note packet 構造 + * |---------+-------+-------+--------------------------| + * | Pos | Pos | Size | Name | + * | [octet] | [bit] | [bit] | | + * |---------+-------+-------+--------------------------| + * | === Header ========================================| + * |---------+-------+-------+--------------------------| + * | 0 | 0 | 5 | Reserved Spare | + * | 0 | 5 | 11 | First Header Pointer | + * |---------+-------+-------+--------------------------| + * | === Packet Zone ===================================| + * |---------+-------+-------+--------------------------| + * | 2 | 0 | * | いくつかの Space Packet | + * |---------+-------+-------+--------------------------| + */ +#ifndef MULTIPLEXING_PROTOCOL_DATA_UNIT_H_ +#define MULTIPLEXING_PROTOCOL_DATA_UNIT_H_ + +#include +#include + +#define M_PDU_HEADER_SIZE (2u) +#define M_PDU_DATA_SIZE (432u) +#define M_PDU_LEN (M_PDU_HEADER_SIZE + M_PDU_DATA_SIZE) + +typedef struct +{ + uint8_t header[M_PDU_HEADER_SIZE]; + uint8_t data[M_PDU_DATA_SIZE]; +} MultiplexingProtocolDataUnit; + +typedef enum +{ + M_PDU_PTR_NO_HDR = 0x07ff, // 11111111111b + M_PDU_PTR_IDLE = 0x7fe // 11111111110b +} M_PDU_PTR; + +void M_PDU_generate_byte_stream(const MultiplexingProtocolDataUnit* m_pdu, uint8_t byte_stream[M_PDU_LEN]); + +void M_PDU_setup_idle_m_pdu(MultiplexingProtocolDataUnit* m_pdu); + +uint16_t M_PDU_get_1st_hdr_ptr(const MultiplexingProtocolDataUnit* m_pdu); + +void M_PDU_set_1st_hdr_ptr(MultiplexingProtocolDataUnit* m_pdu, uint16_t ptr); + +// FIXME: 存在しなかったためコメントアウトした +// const uint8_t* M_PDU_get_data_head(const MultiplexingProtocolDataUnit* m_pdu); + +void M_PDU_set_data(MultiplexingProtocolDataUnit* m_pdu, const uint8_t* data, size_t offset, size_t len); + +#endif diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.c b/tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.c similarity index 95% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.c rename to tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.c index 2622c61c7..83e7e79e7 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.c +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.c @@ -2,11 +2,12 @@ /** * @file * @brief PacketList から TCPacket を取ってきてそれを送信可能な M_PDU へと変換する + * @note FIXME: これはリファクタしてなんとかしたい・・・ */ #include "tcp_to_m_pdu.h" // FIXME: CTP ではなく TSP を使ってしまっている.できれば抽象化するべき -#include +#include "../space_packet_protocol/tlm_space_packet.h" void T2M_initialize(TcpToMPdu* tcp_to_m_pdu) { @@ -15,7 +16,7 @@ void T2M_initialize(TcpToMPdu* tcp_to_m_pdu) tcp_to_m_pdu->m_pdu_wp = 0; tcp_to_m_pdu->fhp_valid = 0; // 強制送出待ち時間の初期値は10秒 - // 32kbpsなら8VCDU/secの送信能力 + // 32kbpsなら8AOSTF/secの送信能力 tcp_to_m_pdu->flush_interval = OBCT_sec2cycle(10); // 最終更新時刻は現在時刻に設定 tcp_to_m_pdu->last_updated = TMGR_get_master_total_cycle(); @@ -23,7 +24,7 @@ void T2M_initialize(TcpToMPdu* tcp_to_m_pdu) return; } -T2M_ACK T2M_form_m_pdu(TcpToMPdu* tcp_to_m_pdu, PacketList* pl, M_PDU* m_pdu) +T2M_ACK T2M_form_m_pdu(TcpToMPdu* tcp_to_m_pdu, PacketList* pl, MultiplexingProtocolDataUnit* m_pdu) { // M_PDUが完成する or TC Packetがなくなるまで実施 while (tcp_to_m_pdu->m_pdu_wp != M_PDU_DATA_SIZE) diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.h b/tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.h similarity index 82% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.h rename to tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.h index ba9df4491..fc568710d 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/tcp_to_m_pdu.h +++ b/tlm_cmd/ccsds/aos_space_data_link_protocol/tcp_to_m_pdu.h @@ -1,6 +1,7 @@ /** * @file * @brief PacketList から TCPacket を取ってきてそれを送信可能な M_PDU へと変換する + * @note FIXME: これはリファクタしてなんとかしたい・・・ */ #ifndef TCP_TO_M_PDU_H_ #define TCP_TO_M_PDU_H_ @@ -9,9 +10,9 @@ #include // for size_t -#include -#include "m_pdu.h" -#include +#include "multiplexing_protocol_data_unit.h" +#include "../../packet_list.h" +#include "../../../system/time_manager/time_manager.h" /** * @enum T2M_ACK @@ -52,6 +53,6 @@ void T2M_initialize(TcpToMPdu* tcp_to_m_pdu); * @param[out] m_pdu: 生成される M_PDU * @return T2M_ACK */ -T2M_ACK T2M_form_m_pdu(TcpToMPdu* tcp_to_m_pdu, PacketList* pl, M_PDU* m_pdu); +T2M_ACK T2M_form_m_pdu(TcpToMPdu* tcp_to_m_pdu, PacketList* pl, MultiplexingProtocolDataUnit* m_pdu); #endif diff --git a/tlm_cmd/ccsds/cmd_space_packet.c b/tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.c similarity index 99% rename from tlm_cmd/ccsds/cmd_space_packet.c rename to tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.c index 2a8aa55af..16a32a294 100644 --- a/tlm_cmd/ccsds/cmd_space_packet.c +++ b/tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.c @@ -290,7 +290,7 @@ void CSP_set_common_hdr(CmdSpacePacket* csp) // ここでは Secondary Header は必須 CSP_set_2nd_hdr_flag(csp, SP_2ND_HDR_FLAG_PRESENT); // APID - CSP_set_apid(csp, CCP_APID_TO_ME); + CSP_set_apid(csp, CCP_APID_CMD_TO_ME); // ここでは Sequence Flag は Standalone Packet に固定 CSP_set_seq_flag(csp, SP_SEQ_FLAG_SINGLE); // ここでは Sequence Count は 0 固定 diff --git a/tlm_cmd/ccsds/cmd_space_packet.h b/tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.h similarity index 99% rename from tlm_cmd/ccsds/cmd_space_packet.h rename to tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.h index 38b997afd..65dbfeabd 100644 --- a/tlm_cmd/ccsds/cmd_space_packet.h +++ b/tlm_cmd/ccsds/space_packet_protocol/cmd_space_packet.h @@ -62,7 +62,7 @@ typedef enum #include #include "space_packet_typedef.h" #include "space_packet.h" -#include "../common_cmd_packet.h" +#include "../../common_cmd_packet.h" #if CSP_MAX_LEN <= SP_PRM_HDR_LEN #error CSP_MAX_LEN is too small diff --git a/tlm_cmd/ccsds/space_packet.c b/tlm_cmd/ccsds/space_packet_protocol/space_packet.c similarity index 99% rename from tlm_cmd/ccsds/space_packet.c rename to tlm_cmd/ccsds/space_packet_protocol/space_packet.c index 938a81c21..5589f9a02 100644 --- a/tlm_cmd/ccsds/space_packet.c +++ b/tlm_cmd/ccsds/space_packet_protocol/space_packet.c @@ -5,7 +5,7 @@ * @note 詳細は space_packet.h を参照 */ #include "space_packet.h" -#include "../../library/endian.h" +#include "../../../library/endian.h" #include diff --git a/tlm_cmd/ccsds/space_packet.h b/tlm_cmd/ccsds/space_packet_protocol/space_packet.h similarity index 99% rename from tlm_cmd/ccsds/space_packet.h rename to tlm_cmd/ccsds/space_packet_protocol/space_packet.h index cdfb82bca..d1e91d739 100644 --- a/tlm_cmd/ccsds/space_packet.h +++ b/tlm_cmd/ccsds/space_packet_protocol/space_packet.h @@ -38,7 +38,7 @@ #include #include "space_packet_typedef.h" -#include "../common_tlm_cmd_packet.h" +#include "../../common_tlm_cmd_packet.h" #define SP_PRM_HDR_LEN (6) //!< Packet Primary Header 長 diff --git a/tlm_cmd/ccsds/space_packet_typedef.h b/tlm_cmd/ccsds/space_packet_protocol/space_packet_typedef.h similarity index 96% rename from tlm_cmd/ccsds/space_packet_typedef.h rename to tlm_cmd/ccsds/space_packet_protocol/space_packet_typedef.h index 5832bc674..621c136d1 100644 --- a/tlm_cmd/ccsds/space_packet_typedef.h +++ b/tlm_cmd/ccsds/space_packet_protocol/space_packet_typedef.h @@ -8,7 +8,7 @@ #include -#define TSP_MAX_LEN (432) //!< TlmSpacePacket の最大パケット長.VCDU 分割しないならこれが最大値 +#define TSP_MAX_LEN (432) //!< TlmSpacePacket の最大パケット長.AOSTF 分割しないならこれが最大値 #define CSP_MAX_LEN (128) //!< CmdSpacePacket の最大パケット長.値は適当においている // TSP_MAX_LEN, CSP_MAX_LEN を再定義 diff --git a/tlm_cmd/ccsds/tlm_space_packet.c b/tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.c similarity index 100% rename from tlm_cmd/ccsds/tlm_space_packet.c rename to tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.c diff --git a/tlm_cmd/ccsds/tlm_space_packet.h b/tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.h similarity index 99% rename from tlm_cmd/ccsds/tlm_space_packet.h rename to tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.h index 5b5976f85..fe4259b3c 100644 --- a/tlm_cmd/ccsds/tlm_space_packet.h +++ b/tlm_cmd/ccsds/space_packet_protocol/tlm_space_packet.h @@ -75,7 +75,7 @@ typedef enum #include #include "space_packet_typedef.h" #include "space_packet.h" -#include "../common_tlm_packet.h" +#include "../../common_tlm_packet.h" #if TSP_MAX_LEN <= SP_PRM_HDR_LEN #error TSP_MAX_LEN is too small diff --git a/tlm_cmd/ccsds/tc_space_data_link_protocol/CMakeLists.txt b/tlm_cmd/ccsds/tc_space_data_link_protocol/CMakeLists.txt new file mode 100644 index 000000000..cb6894dcb --- /dev/null +++ b/tlm_cmd/ccsds/tc_space_data_link_protocol/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.13) + +project(C2A_CORE_CCSDS_TC_SPACE_DATA_LINK_PROTOCOL) + +set(C2A_SRCS + tc_segment.c + tc_transfer_frame.c +) + +if(C2A_BUILD_AS_CXX) + set_source_files_properties(${C2A_SRCS} PROPERTIES LANGUAGE CXX) # C++ +endif() + +add_library(${PROJECT_NAME} OBJECT ${C2A_SRCS}) + +include(${C2A_CORE_DIR}/common.cmake) diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_segment.c b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_segment.c similarity index 100% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tc_segment.c rename to tlm_cmd/ccsds/tc_space_data_link_protocol/tc_segment.c diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_segment.h b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_segment.h similarity index 97% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tc_segment.h rename to tlm_cmd/ccsds/tc_space_data_link_protocol/tc_segment.h index 21524d2d8..7c57fa6f8 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_segment.h +++ b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_segment.h @@ -20,7 +20,7 @@ #define TC_SEGMENT_H_ #include -#include +#include "../space_packet_protocol/cmd_space_packet.h" #include #define TCS_HEADER_SIZE (1) diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.c b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.c similarity index 89% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.c rename to tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.c index 4c90be69b..b32736a66 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.c +++ b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.c @@ -6,7 +6,7 @@ #include "tc_transfer_frame.h" #include -#include +#include "../../../library/crc.h" TCTF_VER TCTF_get_ver(const TcTransferFrame* tctf) { @@ -50,18 +50,11 @@ TCTF_SCID TCTF_get_scid(const TcTransferFrame* tctf) uint8_t mask = 0x03; // 0000 0011b // pos = 0の下位2bitsとpos = 1の8bitsを合わせた10bits - TCTF_SCID scid = (TCTF_SCID)(tctf->packet[pos] & mask); - scid = (TCTF_SCID)(scid << 8); - scid = (TCTF_SCID)(scid + tctf->packet[pos + 1]); + uint16_t scid = (uint16_t)(tctf->packet[pos] & mask); + scid = (uint16_t)(scid << 8); + scid = (uint16_t)(scid + tctf->packet[pos + 1]); - switch (scid) - { - case TCTF_SCID_SAMPLE_SATELLITE: - return scid; - - default: - return TCTF_SCID_UNKNOWN; - } + return TCTF_get_scid_from_uint16(scid); } TCTF_VCID TCTF_get_vcid(const TcTransferFrame* tctf) diff --git a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.h b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.h similarity index 95% rename from examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.h rename to tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.h index e16667f9e..d69102ee5 100644 --- a/examples/mobc/src/src_user/tlm_cmd/ccsds/tc_transfer_frame.h +++ b/tlm_cmd/ccsds/tc_space_data_link_protocol/tc_transfer_frame.h @@ -45,6 +45,17 @@ #error TCTCF LEN IS LONGER THAN TCTF MAX LEN #endif +// ここで TCTF_SCID, TCTD_SCID_MY_ID を定義する +// TCTF_SCID_UNKNOWN は必須 +/* 例 +typedef enum +{ + TCTF_SCID_SAMPLE_SATELLITE = 0x000, + TCTF_SCID_UNKNOWN +} TCTF_SCID; +*/ +#include + /** * @struct TcTransferFrame * @brief TC Transfer Frame のパケット構造体 @@ -78,17 +89,6 @@ typedef enum TCTF_TYPE_UNKNOWN } TCTF_TYPE; -/** - * @enum TCTF_SCID - * @brief Spacecraft ID - * @note 10 bit - */ -typedef enum -{ - TCTF_SCID_SAMPLE_SATELLITE = 0x157, // SCID for command of sample satellite - TCTF_SCID_UNKNOWN -} TCTF_SCID; - /** * @enum TCTF_VCID * @brief Virtual Channel ID diff --git a/tlm_cmd/common_cmd_packet.h b/tlm_cmd/common_cmd_packet.h index 84b5fc1bc..7e332de0b 100644 --- a/tlm_cmd/common_cmd_packet.h +++ b/tlm_cmd/common_cmd_packet.h @@ -25,7 +25,7 @@ typedef enum CCP_DEST_TYPE_TO_APID = 0xf } CCP_DEST_TYPE; */ -// さらに, CCP_APID_TO_ME, CCP_MAX_LEN, CommonCmdPacket として使うパケット型を指定する +// さらに, CCP_APID_CMD_TO_ME, CCP_MAX_LEN, CommonCmdPacket として使うパケット型を指定する #include // ここで APID を定義する diff --git a/tlm_cmd/common_tlm_cmd_packet.h b/tlm_cmd/common_tlm_cmd_packet.h index 2f6440f07..33b156ab1 100644 --- a/tlm_cmd/common_tlm_cmd_packet.h +++ b/tlm_cmd/common_tlm_cmd_packet.h @@ -14,25 +14,36 @@ #include "./common_tlm_packet.h" #include "./common_cmd_packet.h" -// ここで APID を定義する -// APID_UNKNOWN, APID_FILL_PKT は必須 +// ここで APID を定義する.APID_UNKNOWN, APID_FILL_PKT は必須とする. +// 命名規則: +// Tlm: APID_TLM_{送信元}_TO_{受信先}_VIA_{経由地} +// Cmd: APID_CMD_{送信元}_TO_{受信先}_VIA_{経由地} +// ただし,Tlm の TO_SGS,Cmd の SGS は省略できる +// 例: +// APID_CMD_TO_MOBC (SGS を省略) +// APID_TLM_AOBC (TO_SGS を省略.パスが単一しかありえないので, VIA_MOBCも省略) +// APID_TLM_CAMERA_TO_XGS_VIA_MIF (全部記載) +// 注意: +// 同一コンポからアプリケーション等を区別して APID を発行したい場合 (eg; HK テレメ,ミッションデータ,Sバンドデータ,X バンドデータ,など) は {送信元} にそれを識別する命名ができる +// APID_TLM_AOBC, APID_TLM_AOBC_STT_IMG, など +// 詳細: https://github.com/arkedge/c2a-core/issues/186#issuecomment-1798685321 /* 例 -// FIXME: CCSDS JAXA 標準になおす -// FIXME: APID は Space Packet なので, CTCP にあるのは不適切? 抽象化してもいいかも typedef enum { - APID_MOBC_CMD = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD - APID_AOBC_CMD = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD - APID_TOBC_CMD = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD - APID_TCAL_TLM = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) - APID_MOBC_TLM = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM - APID_AOBC_TLM = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM - APID_TOBC_TLM = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM - APID_DUMP_TLM = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) - APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET + APID_CMD_TO_MOBC = 0x210, //!< 01000010000b: APID for MOBC 宛の CMD + APID_CMD_TO_AOBC = 0x211, //!< 01000010001b: APID for AOBC 宛の CMD + APID_CMD_TO_TOBC = 0x212, //!< 01000010010b: APID for TOBC 宛の CMD + APID_TLM_TCAL = 0x410, //!< 10000010000b: APID for TIME CARIBLATION TLM (FIXME: 現在まともに使ってない) + APID_TLM_MOBC = 0x510, //!< 10100010000b: APID for MOBC で生成される TLM + APID_TLM_AOBC = 0x511, //!< 10100010001b: APID for AOBC で生成される TLM + APID_TLM_TOBC = 0x512, //!< 10100010002b: APID for TOBC で生成される TLM + APID_TLM_DUMP = 0x710, //!< 11100010000b: APID for DUMP TLM (FIXME: 現在まともに使ってない) + APID_FILL_PKT = 0x7ff, //!< 11111111111b: APID for FILL PACKET APID_UNKNOWN } APID; */ +// FIXME: CCSDS JAXA 標準になおす +// FIXME: APID は Space Packet なので, CTCP にあるのは不適切? 抽象化してもいいかも #include diff --git a/tlm_cmd/common_tlm_packet.h b/tlm_cmd/common_tlm_packet.h index a1d9cb0b9..1c0c9fd04 100644 --- a/tlm_cmd/common_tlm_packet.h +++ b/tlm_cmd/common_tlm_packet.h @@ -9,7 +9,7 @@ #include "../system/time_manager/obc_time.h" #include -// ここで, CTP_APID_FROM_ME, CTP_MAX_LEN, CommonTlmPacket として使うパケット型を指定する +// ここで, CTP_APID_TLM_FROM_ME, CTP_MAX_LEN, CommonTlmPacket として使うパケット型を指定する #include // ここで APID を定義する diff --git a/tlm_cmd/packet_handler.c b/tlm_cmd/packet_handler.c index 81e4710f5..186dd432d 100644 --- a/tlm_cmd/packet_handler.c +++ b/tlm_cmd/packet_handler.c @@ -236,7 +236,7 @@ CCP_CmdRet PH_dispatch_command(const CommonCmdPacket* packet) } // FIXME: CTCP, SpacePacket 整理で直す - if (CCP_get_apid(packet) == CCP_APID_TO_ME) + if (CCP_get_apid(packet) == CCP_APID_CMD_TO_ME) { // 自分宛てのコマンドの場合は対応処理を呼び出し。 return CA_execute_cmd(packet); diff --git a/tlm_cmd/telemetry_generator.c b/tlm_cmd/telemetry_generator.c index f7a55853a..dfc6796be 100644 --- a/tlm_cmd/telemetry_generator.c +++ b/tlm_cmd/telemetry_generator.c @@ -11,7 +11,7 @@ #include #include #include -#include "./ccsds/tlm_space_packet.h" // FIXME: TSP 依存性はNGなので, TCP → SP 大工事終わったら直す +#include "./ccsds/space_packet_protocol/tlm_space_packet.h" // FIXME: TSP 依存性はNGなので, TCP → SP 大工事終わったら直す /** @@ -72,7 +72,7 @@ CCP_CmdRet Cmd_GENERATE_TLM(const CommonCmdPacket* packet) if (num_dumps >= 8) { // パケット生成回数の上限は8回とする。 - // 32kbpsでのDL時に8VCDU/secで1秒分の通信量。 + // 32kbpsでのDL時に8AOSTF/secで1秒分の通信量。 // これを超える場合は複数回コマンドを送信して対応する。 return CCP_make_cmd_ret_without_err_code(CCP_EXEC_ILLEGAL_PARAMETER); } @@ -102,7 +102,7 @@ CCP_CmdRet Cmd_GENERATE_TLM(const CommonCmdPacket* packet) { // Primary Header // FIXME: Space Packet 依存を直す - TSP_setup_primary_hdr(&TG_ctp_, CTP_APID_FROM_ME, TG_get_next_seq_count_(), len); + TSP_setup_primary_hdr(&TG_ctp_, CTP_APID_TLM_FROM_ME, TG_get_next_seq_count_(), len); // Secondary Header TSP_set_board_time(&TG_ctp_, (uint32_t)(TMGR_get_master_total_cycle())); @@ -224,7 +224,7 @@ static CCP_CmdRet TG_generate_tlm_(TLM_CODE tlm_id, { // FIXME: 要検討? // パケット生成回数の上限は 8 回とする。 - // 32 kbpsでの DL 時に 8 VCDU / sec で 1 秒分の通信量。 + // 32 kbpsでの DL 時に 8 AOSTF / sec で 1 秒分の通信量。 // これを超える場合は複数回コマンドを送信して対応する。 return CCP_make_cmd_ret(CCP_EXEC_ILLEGAL_PARAMETER, TLM_CODE_MAX); } @@ -246,7 +246,7 @@ static CCP_CmdRet TG_generate_tlm_(TLM_CODE tlm_id, // 自身の OBC のテレメ生成を前提としているので, Cmd_GENERATE_TLM のように sub OBC 判定はいれない // Primary Header - TSP_setup_primary_hdr(&TG_ctp_, CTP_APID_FROM_ME, TG_get_next_seq_count_(), packet_len); + TSP_setup_primary_hdr(&TG_ctp_, CTP_APID_TLM_FROM_ME, TG_get_next_seq_count_(), packet_len); // Secondary Header TSP_set_2nd_hdr_ver(&TG_ctp_, TSP_2ND_HDR_VER_1);