Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CTCPをCCPとTCPに分離する #204

Closed
4 of 5 tasks
meltingrabbit opened this issue Jan 21, 2022 · 3 comments
Closed
4 of 5 tasks

CTCPをCCPとTCPに分離する #204

meltingrabbit opened this issue Jan 21, 2022 · 3 comments
Assignees
Labels
enhancement New feature or request priority::high priorityg high

Comments

@meltingrabbit
Copy link
Collaborator

meltingrabbit commented Jan 21, 2022

概要

CTCP (Common Tlm Cmd Packet) をCCP (Common Cmd Packet)とCTP (Common TlmPacket) に分離する

詳細

  • 現在,C2Aを流れるパケット(CCSDSで規定する SpacePacket (CCSDS周りのコードをcoreで管理する? #51 , CCSDS準拠をまとめ,準拠してないものは準拠させる #198 参照) は,C2A上でCTCPとして抽象化されている.
  • 一般的にCmdに対してTlmのほうがバイト長が長いため,CCPのサイズがそれに引きずられて大きくなってしまっている
  • これは,メモリの小さなOBCには致命的に無駄になる
  • したがって,これを明示的に分離する
  • なお,CCPもCTPもどちらもspace packetであり,primary headerは同じである.また,オンボードネットワークを流れるパケットとしても同一視できる
  • したがって,CTCPとCCP,CTPのキャストはできるようにしておく(Cなのでここがちょっとめんどくさいねぇ...)

close条件

分離できたら

備考

いろいろ重すぎたので,分離した.

関連

@meltingrabbit meltingrabbit added enhancement New feature or request priority::high priorityg high labels Jan 21, 2022
@meltingrabbit meltingrabbit self-assigned this Jan 21, 2022
@meltingrabbit
Copy link
Collaborator Author

meltingrabbit commented Jan 24, 2022

CCP, CTPとCTCPの抽象化,

typedef struct
{
  uint8_t packet[CCP_MAX_LEN]:
} CommonCmdPacket;

typedef struct
{
  uint8_t packet[CTP_MAX_LEN]:
} CommonTlmPacket;

typedef struct
{
  uint8_t packet[CTCP_MAX_LEN]:
} CommonTlmCmdPacket;

const CommonTlmCmdPacket* conv_ccp_to_ctcp{const CommonCmdPacket* ccp)
{
   if len(ccp) > CTCP_MAX_LEN return NULL;
   return (const CommonTlmCmdPacket*)ccp;
}

const CommonCmdPacket* conv_ctcp_to_ccp{const CommonTlmCmdPacket* ctcp)
{
   if len(ctcp) > CCP_MAX_LEN return NULL;
   if (!is_cmd_packet(ctcp)) return NULL
   return (const CommonCmdPacket*)ctcp;
}

Cでは上のようにするしかなさそう.

CTCPがNULLになる可能性がでてくるので,ここは丁寧にCoreに隠蔽し,気合でチェックしていくしかなさそう.

@meltingrabbit
Copy link
Collaborator Author

CommonHogePacket, Common いらないのでは? 長いし.という話が出てきた.

とはいえ,まずは https://github.com/ut-issl/c2a-core/blob/04c18a7d9dd28902d133b68f55cd306f47d3981e/TlmCmd/Ccsds/TCPacket.c を消し去らないと名前がかぶるので, space packet実装を優先する.

@meltingrabbit
Copy link
Collaborator Author

クリティカルな部分は終わった.後の細かい話は以下で引き継ぎ,これはcloseする

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request priority::high priorityg high
Projects
None yet
Development

No branches or pull requests

1 participant