From 7ce1dd15be14129f5dbcd7d45d7c49d3c5546b0f Mon Sep 17 00:00:00 2001 From: vitoria Date: Mon, 15 Aug 2022 14:58:54 -0300 Subject: [PATCH] Documenting code and structure of the telecommands #90 --- docs/img/ngham.png | Bin 0 -> 10810 bytes docs/telecommands.rst | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 docs/img/ngham.png diff --git a/docs/img/ngham.png b/docs/img/ngham.png new file mode 100644 index 0000000000000000000000000000000000000000..2df5337fa08f283494f79ca911dc4d70f914f023 GIT binary patch literal 10810 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

jhCNG=hEmisCTMl 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 C#vMWc literal 0 HcmV?d00001 diff --git a/docs/telecommands.rst b/docs/telecommands.rst index c5ae459..ce3faf4 100644 --- a/docs/telecommands.rst +++ b/docs/telecommands.rst @@ -13,7 +13,10 @@ Authentication All the telecommands classified as private use an HMAC authentication scheme. Every type of private telecommand has a unique 16-digit ASCII character key that with the telecommand sequence (or message) generates an 160-bits (20-bytes) hash sequence to -be transmitted together with the packet payload. The used hash algorithm is the SHA-1. +be transmitted together with the packet payload. The used hash algorithm is the SHA-1. [3]_ + +.. image:: img/hmac.png + :width: 500 Telecommands ============ @@ -53,3 +56,31 @@ Telecommands Structure of the packages ========================= +Every package payload countains its ID [1 byte], the source callsign (source address of the ground station) [7 bytes] and the package content (data) [up to 212 bytes]. This las tone can either have none or many parameters depending on the funtion of the telecommand. + +The communication protocol used is a python variation of the NGHam [1]_: the PyNGHam [2]_. + +.. image:: img/ngham.png + :width: 300 + +Telecommands Code +================= + +The Spacelab Transmitter has a generic telecommand class with these functions: + +- **generate**: which generate the telecommand payload; +- **set_id**: which sets a new ID for the telecommand; +- **get_id**: which gets the ID of the telecommand; +- **set_name**: which sets a new name for the telecommand; +- **get_name**: which gets the name of the telecommand; +- **_prepare_callsign**: which prepares a callsign for a transmission. + +Each telecommand has its own class with the Telecommand class working as a "superclass" with 14 telecommands classes working as "subclasses" (this process is called "inheritance" in object-oriented programming). + +References +========== + + +.. [1] https://github.com/skagmo/ngham +.. [2] https://github.com/mgm8/pyngham +.. [3] https://github.com/spacelab-ufsc/floripasat2-doc \ No newline at end of file