Satellite Flight Software: Command-Centric Architecture

Related tags

Miscellaneous c2a
Overview

Core of Command Centric Architecture

C2A

  • Command Centric Architecture
  • OBC 搭載フライトソフトウェアフレームワーク

C2A core

  • 各 C2A で共通利用される C2A の中核部のコード
  • 基本的には,各々の C2A user repository (サンプル: TBW) にて, git submodule で参照される.
  • core 開発のための最小限の user 部は Examples/ にあり,これを用いてビルドし,検証する.

開発のためのセットアップ

  1. clone 後, setup.bat or setup.sh を実行

ドキュメント

  • ドキュメント: TBW
  • リファレンス: TBW

関連リポジトリ

  • TBW
Issues
  • Add SILS mockup for c89 build

    Add SILS mockup for c89 build

    概要

    C89でビルドするためのSILS mockupと,github actionsを追加

    Issue

    • https://github.com/ut-issl/c2a-core/issues/20
    • https://github.com/ut-issl/c2a-core/issues/27
    • https://github.com/ut-issl/c2a-core/issues/2

    詳細

    https://github.com/ut-issl/c2a-core/issues/27 を参照

    検証結果

    actionsが通っていそうならOK

    影響範囲

    NA

    補足

    関連: https://github.com/ut-issl/c2a-core/pull/26

    enhancement priority::medium 
    opened by meltingrabbit 37
  • minimum_user_for_s2eを使ったS2E向けビルドCI

    minimum_user_for_s2eを使ったS2E向けビルドCI

    概要

    Examples/minimun_user_for_s2eをビルドするだけ

    Issue

    • #20

    詳細

    とりあえずS2E with C2AではなくC2Aのみで完結したビルドCIが欲しい(C2A単体でのワーニングなどを認識するため). そこで,exampleのsrc下にこのリポジトリをsrc/src_userとしてcloneしてしまい,ビルドする.

    検証結果

    windows runnerを使ってビルドが通った https://github.com/ut-issl/c2a-core/runs/4285174934?check_suite_focus=true

    影響範囲

    小: Examples/minimum_user_for_s2eのCMakeのオプションを追加しただけ.後でいいかんじにしたくはあるものの,とりあえず現状に即してはいる.

    補足

    いいかんじにやるならcoreのuser部への依存を整理したり色々やる必要があるが,とりあえず現状の状態でビルドCIを入れるならこう

    enhancement 
    opened by sksat 15
  • S2E mockup

    S2E mockup

    概要

    S2Eとリンクできるか確認するためのモックアップ

    Issue

    • #35 (Issueではないが)

    詳細

    C2A単体でビルドが通っていてもS2Eとリンクできないとつらい

    検証結果

    CIのWindows runnerでこれをビルドして通ればよし

    影響範囲

    N/A

    priority::medium S2E 
    opened by sksat 13
  • Fix job name of workflow

    Fix job name of workflow

    概要

    ビルドCI Actions の job nameが同じで,branch protectionで区別できないことの修正

    Issue

    • https://github.com/ut-issl/c2a-core/issues/30

    詳細

    https://github.com/ut-issl/c2a-core/issues/30 参照

    検証結果

    CIが通ればOK

    bug priority::high tools 
    opened by meltingrabbit 13
  • documentsを入れる

    documentsを入れる

    概要

    documentsを入れる

    詳細

    C2Aとは,各種tips,パラメタの説明,コーディングルールなどをいれる.

    どこにどのように入れるかも議論する.

    close条件

    いれたら

    documentation priority::medium 
    opened by meltingrabbit 12
  • [minimum_user] SILS用のラッパー部分のソースファイルを.cppにする

    [minimum_user] SILS用のラッパー部分のソースファイルを.cppにする

    概要

    Fix #36

    SILS専用のラッパー部分のC++としてしかコンパイルされない.cなファイルの拡張子を.cppにする.

    Issue

    • #36

    詳細

    N/A

    検証結果

    CIが通り,かつS2Eとリンクできればよし

    影響範囲

    S2Eが変更するファイル名に依存していればS2E側も修正する必要があるが,ヘッダを変えなければほぼ無いだろうと思われる.

    補足

    N/A

    enhancement priority::high S2E 
    opened by sksat 12
  • ビルドCI Actions の job nameが同じで,branch protectionで区別できない

    ビルドCI Actions の job nameが同じで,branch protectionで区別できない

    概要

    ビルドCI Actions の job nameが同じで,branch protectionで区別できない

    詳細

    どっちも build_minimum_user になってるので.

    https://github.com/ut-issl/c2a-core/blob/62e835382a108c6ec688c798d4b918e8ad28b598/.github/workflows/build_as_c89.yml#L18-L19

    close条件

    • [ ] 名前をユニークにしたら
    • [ ] branch_protection_rules を再設定したら
    priority::high tools 
    opened by meltingrabbit 8
  • 最低限S2Eでビルドする & 軽いチェックを行う CI を建てる

    最低限S2Eでビルドする & 軽いチェックを行う CI を建てる

    概要

    最低限S2Eでビルドする & 軽いチェックを行う CI を建てる

    詳細

    ビルドと規約チェックぐらい?

    • [x] S2E ビルド
    • [x] エンコーディングチェック
    • [x] 規約チェック
    • [ ] (できれば)テストCI

    一旦HW依存ビルドは置いておく(coreなので)

    https://github.com/ut-issl/c2a-core/issues/1 からの引き継ぎ内容

    • 現在,S2EやWINGSの可搬性が高くないこともあるので,一旦ISSL内部でオンプレでもつ?
      • オンプレでもつ問題は https://github.com/ut-issl/c2a-core/issues/16
    • user部をどうするか? 簡素なsampleをつくってS2Eでまわすか?
      • その時,coreのPRでマージ前は,orgがut-isslではなく,フォーク先なので,user側のsubmoduleのURLを書き換える必要
      • → https://github.com/ut-issl/c2a-core/issues/2 で議論

    close条件

    CIがたったら

    備考

    NA

    priority::high tools 
    opened by meltingrabbit 8
  • src_user/IfWrapper/Silsに.cなC++のソースファイルがあってよくない

    src_user/IfWrapper/Silsに.cなC++のソースファイルがあってよくない

    概要

    src_user/IfWrapper/Sils/*.c にC++のコードを置くことについて議論する

    詳細

    • https://github.com/ut-issl/c2a-core/pull/35 でいろいろ話が出た
    • これらはCとしてもC++としてもビルドされる,というわけではなく,C++としてしかビルドされない(SILS専用)
    • それにも関わらず拡張子が.cになっており非常に分かりにくい
    • さらに,CMakeでビルドする上でも都合が悪そう

    close条件

    なんとなく今後の方向性が見えてきたら.

    enhancement priority::low 
    opened by meltingrabbit 7
  • testをいれる

    testをいれる

    概要

    testをいれる

    詳細

    pytestで書かれたやつ.

    どこにどのように入れるかも議論する.

    close条件

    いれたら

    enhancement priority::medium tools 
    opened by meltingrabbit 5
  • c89のgcc Wextra Warningに対応すると,あるマイコンIDEにてWarningが出てしまう

    c89のgcc Wextra Warningに対応すると,あるマイコンIDEにてWarningが出てしまう

    概要

    c89のgcc Wextra Warningに対応すると,あるマイコンIDEにてWarningが出てしまう

    詳細

    • https://github.com/ut-issl/c2a-core/pull/73 にて, const uint32_t などの返り値を uint32_t などにした
      • warning: type qualifiers ignored on function return type [-Wignored-qualifiers] が発生
      • 基本型をconstつけて返しても,値渡しなため意味がないから
    • 一方で,以下などでは,const構造体のメンバをconstなしで返している,として,あるマイコンIDEでは C0008 (W) Conversion in return を出してしまう.
      • https://github.com/ut-issl/c2a-core/blob/1280836a5c6a6a5fc7a4fc8a5a9211134345b5b5/Drivers/Super/driver_super.c#L1513-L1516

    close条件

    どちらの環境でもWarningがでなくなったら

    備考

    どうしようか.とりあえず,上の例だと,意味はないんだけど (uint16_t) とキャストさせる?

    bug help wanted priority::high 
    opened by meltingrabbit 0
  • Docs内部のリンクを修正

    Docs内部のリンクを修正

    概要

    Docs内部のリンクを修正

    Issue

    NA

    documentation priority::low 
    opened by meltingrabbit 0
  • ELの軽微な性能改善

    ELの軽微な性能改善

    概要

    ELの軽微な性能改善

    Issue

    • https://github.com/ut-issl/c2a-core/issues/48

    詳細

    forを減らしたり,早く関数を返すようにしたり.

    検証結果

    既存のELのpytestが通ることを確認.

    影響範囲

    なし.

    priority::medium 
    opened by meltingrabbit 2
  • Update pre-commit hook

    Update pre-commit hook

    概要

    • [x] pre-commit hook内で呼び出しているコマンドでエイリアスを実行しないようにする
    • [ ] core.hooksPathを使うようにする(スクリプトで再帰しないようにする)

    Issue

    NA

    詳細

    以下で試みられていたが,\cはエスケープされるので\\cp ~にする必要があった https://github.com/ut-issl/c2a-core/blob/a6e93db543b2b210ba05f028233f5e008912c184/Script/Git/pre-commit.pl#L24

    検証結果

    test へのリンクや,検証結果へのリンク

    影響範囲

    cpgitに対してaliasを設定していてもpre-commit hookでそれらが実行されなくなる

    補足

    何かあれば

    bug priority::low tools 
    opened by sksat 7
  • Cmd_BCT_OVERWRITE_CMD が可変長引数コマンドに対応できていない

    Cmd_BCT_OVERWRITE_CMD が可変長引数コマンドに対応できていない

    概要

    Cmd_BCT_OVERWRITE_CMD が可変長引数コマンドに対応できていない

    詳細

    param_len が可変長引数に対応できていない.

    close条件

    直ったら.

    bug good first issue priority::high 
    opened by meltingrabbit 0
  • WIP: コマンドのパラメタ取得の定型化

    WIP: コマンドのパラメタ取得の定型化

    概要

    コマンドのパラメタ取得の定型化

    Issue

    • https://github.com/ut-issl/c2a-core/issues/46

    詳細

    issueの要件をすべて満たす CCP_get_param_from_packet マクロを作成

    雰囲気は,既存のコマンドの引数取得を修正したdiffを参照. Cmd_EL_RECORD_EVENT とかが劇的にきれいになっている.

    検証結果

    既存のtestを全部まわしてOKならOKでしょう

    影響範囲

    TBW

    補足

    関数ではなくマクロなのが若干気になる.

    toolの更新はこれ

    • https://github.com/ut-issl/c2a-tlm-cmd-code-generator/pull/2

    あと,Cmd登録コマンドの修正と,testの追加をやる必要がある

    enhancement priority::medium 
    opened by meltingrabbit 4
  • S2E側から呼び出すC2Aの初期化関数を,1つづつincludeして呼び出しているのはおかしい

    S2E側から呼び出すC2Aの初期化関数を,1つづつincludeして呼び出しているのはおかしい

    概要

    S2E側から呼び出すC2Aの初期化関数を,1つづつincludeして呼び出しているのはおかしい

    詳細

    void OBC_C2A::Initialize()
    

    のなかに,各種initがいるのは良くなく,この中のinitはC2A側で持つべき.
    C2A側でinit関数が変わったら,そのたびにS2E側も更新しないといけないのはおかしい.

    close条件

    きれいになったら

    備考

    • https://github.com/ut-issl/c2a-core/pull/67 ででた
    priority::medium S2E 
    opened by meltingrabbit 0
  • CoreとUserの分離,UserからCoreの利用のスキーマについて,改善を考える

    CoreとUserの分離,UserからCoreの利用のスキーマについて,改善を考える

    概要

    CoreとUserの分離,UserからCoreの利用のスキーマについて,改善を考える

    詳細

    2021年にそれまでOBCごとに1つのrepositoryで作業していたC2AをUserランドとCoreに分離し,すべてのOBCでCoreを共通化した.
    一方で,あまり詳細を考えず,鈴本一人でがっと分離・実装してしまっているので,改善していきたい.

    userとcoreでincludeが交錯しまくっているのとかもどうにかしたいし,パラメタ管理をもう少しいい感じにもしたい.

    close条件

    とりあえず議論から.議論してから考える

    備考

    https://github.com/ut-issl/c2a-core/issues/6 も関連しそう

    help wanted icebox 
    opened by meltingrabbit 0
  • UTCなどの絶対時刻でTLC (Time Line Command) が打てるようにする

    UTCなどの絶対時刻でTLC (Time Line Command) が打てるようにする

    概要

    UTCなどの絶対時刻でTLC (Time Line Command) が打てるようにする

    詳細

    • OBC_TL.Cmd_HOGE において,時刻引数をtiではなく,utcなどの絶対時刻にて打てるようにする.
      • 既存の OBC_TL.Cmd_HOGE は残すので,あらたに追加することになる.
        • 命名は? OBC_ATL (absolute tl)?,OBC_UTL (utc tl)?
    • これは,あくまでエイリアス的な機能であることに注意する
      • 現在, OBC_TL.Cmd_HOGE は TCP_CMD_EXEC_TYPE_TL のTCP_EXEC_TYPEとなり,それはCCP_EXEC_TYPE_TL0のCCP_EXEC_TYPEに対応し,TL0に展開される.
      • ここで作るものは,コマンド受信部  (https://github.com/ut-issl/c2a-core/blob/31dbe6e8c347252b55b6fc63ef7c11016b75e9b5/CmdTlm/packet_handler.c#L77) では,別のTCP_EXEC_TYPEとして受理されるが,最終的にはCCP_EXEC_TYPE_TL0に変換されるべき(つまり, https://github.com/ut-issl/c2a-core/blob/31dbe6e8c347252b55b6fc63ef7c11016b75e9b5/CmdTlm/packet_handler.c#L94 にルーティングされるべき)である.
      • つまり,引数はUTCなどであるが,それがPacketHandlerにて,TIへ変換され(これはObcTimeの関数で行う)た後に,TL0コマンドに変換され,TL0のキューに登録される.
    • それに応じて,TCP_CMD_EXEC_TYPE はこのCmd用のtypeを追加する必要がある.
      • TCP_CMD_EXEC_TYPE などは 別途資料 を参照
    • その他の注意
      • 新しい TCP_CMD_EXEC_TYPE の対応や,コマンドファイル対応などでWINGSの改修が必要.
        • これは早めにWINGSと調整すべき.C2Aの実装が終わる前にもWINGS側はリリースして問題ないはず.はやくリリースされたほうが,SILSなどでの検証が楽.
      • ObcTime (https://github.com/ut-issl/c2a-core/blob/31dbe6e8c347252b55b6fc63ef7c11016b75e9b5/System/TimeManager/obc_time.h) を一度整理してもいいかもしれない
        • 結構汚いコードが残ってるので
        • 型とか公開関数とか整理しても良いかも

    close条件

    実装ができたら

    備考

    • https://github.com/ut-issl/c2a-core/issues/63 の娘issue
    enhancement priority::high 
    opened by meltingrabbit 0
  • テレメ,コマンドの UnixTime への対応

    テレメ,コマンドの UnixTime への対応

    概要

    テレメ,コマンドの UnixTime への対応

    詳細

    以下 UTC ≒ UnixTime として書く

    • MOBC の UTC 情報 を Tlm に入れる
    • UTCを引数としてTLC登録を受理出来るようにする → https://github.com/ut-issl/c2a-core/issues/64
    • TIのインクリメントと実時間の対応をGSから補正できるようにする

    close条件

    実装が終わったら

    備考

    NA

    enhancement priority::high tools 
    opened by meltingrabbit 0
Releases(v3.3.1)
Owner
Intelligent Space Systems Laboratory, The University of Tokyo
東京大学 航空宇宙工学専攻 中須賀・船瀬研究室の公開リポジトリ
Intelligent Space Systems Laboratory, The University of Tokyo
2021 NUSpace Balloon Satellite programme

Balloon-Satellite A team from the School of Science and Technology, Singapore. the team (left to right) : le yang, min gyu, jarrett, sean the satellit

le yang 1 Nov 28, 2021
The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.

Memestream This repository holds the code that I develop during my live game "modding" ?? sessions. When I stream, I like to speedrun making a success

Stephen Tong 20 Nov 14, 2021
Using Pi Pico to provide trimwheel for Flightgear Flight Simulator

Trimwheel for FGFS This uses a Rotary Encoder (RE) and a Raspberry Pi Pico (Pico) to connect the RE to FlightGear Flight Simulator as a Pitch Trimwhee

Dave Attwood 1 Nov 12, 2021
Arduino library for ST Microelectronics VL53L5 multizone Time-of-Flight ranging sensor

VL53L5 Arduino library for ST Microelectronics VL53L5 multizone Time-of-Flight ranging camera (get it here!) Quickstart Connect I2C in the usual way (

Simon D. Levy 15 Nov 10, 2021
MFD Button Switches for Flight Simulators. Arduino *.ino and PCB Gerber files and a picture. Now with FalconBMS specific firmwares.

MFD-Switches Use at your own risk. I am not accepting responsiblity for anything. Copyright Ron Lyttle 2021. I have to copyright because of some of th

Ron Lyttle 7 Dec 5, 2021
Repository Containing the Code associated with the Paper: "Learning High-Speed Flight in the Wild"

Learning High-Speed Flight in the Wild This repo contains the code associated with the paper Learning Agile Flight in the Wild. For more information,

Robotics and Perception Group 258 Dec 6, 2021
Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Chris Humphries 27 Nov 5, 2021
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

HuangJianyu 29 Sep 16, 2021
Add virtual monitors to your windows 10 device! Works with Oculus software, obs, and any desktop sharing software

License MIT and CC0 or Public Domain, whichever is least restrictive -- Use it AS IS - NO IMPLICIT OR EXPLICIT warranty This may break your computer,

Rashi Abramson 81 Dec 5, 2021
An 8-bit minicomputer with a fully custom architecture

JDH-8 An fully custom 8-bit minicomputer with a unique architecture and the express goal of playing PONG. The program above is running in the emulator

jdh 556 Dec 3, 2021
FastPath_MP: An FPGA-based multi-path architecture for direct access from FPGA to NVMe SSD

FastPath_MP Description This repository stores the source code of FastPath_MP, an FPGA-based multi-path architecture for direct access from FPGA to NV

Beehive lab 16 Nov 9, 2021
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.2k Dec 5, 2021
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.2k Dec 5, 2021
Project #1: Run-length Encoding (Computer Architecture, Fall 2021)

4190.308 Computer Architecture (Fall 2021) Project #1: Run-length Encoding Due: 11:59PM, September 26 (Sunday) Introduction In this project, you need

SNU Systems Software & Architecture Laboratory 3 Sep 19, 2021
Project #2: FP10 Representation (Computer Architecture, Fall 2021)

4190.308 Computer Architecture (Fall 2021) Project #2: FP10 (10-bit Floating Point) Representation Due: 11:59PM, October 17 (Sunday) Introduction The

SNU Systems Software & Architecture Laboratory 3 Oct 14, 2021
Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn Engine Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU. Unicorn offers some unparalleled fe

lazymio 1 Nov 7, 2021
Decentralized architecture for loss tolerant semi-autonomous robotics

gestalt-arch Decentralized architecture for loss tolerant semi-autonomous robotics Objective We demonstrate a decentralized robot control architecture

null 4 Nov 30, 2021
Protobuf for Proxyman app - Include Apple Silicon & Intel architecture

Protobuf for Proxyman macOS app Protobuf for Proxyman app - Include Apple Silicon & Intel architecture How to build Open the project on the latest Xco

Proxyman 6 Nov 29, 2021
Lightweight C++ command line option parser

Release versions Note that master is generally a work in progress, and you probably want to use a tagged release version. Version 3 breaking changes I

null 2.9k Dec 5, 2021