From 523e54c7a5b87098a360aa8503774c5d00bf8d6d Mon Sep 17 00:00:00 2001 From: Jacob Hageman Date: Tue, 24 May 2022 12:50:09 -0600 Subject: [PATCH 1/3] Fix #239 #128 #127 #122 #121 #119, Requirements clean-up --- docs/CF_Requirements_20_03_19.xlsx | Bin 26826 -> 0 bytes docs/cf_FunctionalRequirements.csv | 63 ++++++++++++++--------------- 2 files changed, 30 insertions(+), 33 deletions(-) delete mode 100644 docs/CF_Requirements_20_03_19.xlsx diff --git a/docs/CF_Requirements_20_03_19.xlsx b/docs/CF_Requirements_20_03_19.xlsx deleted file mode 100644 index 148a0ffc7482b03aba22b9866f130ffb95bcdc23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26826 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 wXCdy*eg1JSbf5I^nR8?qb6+x~I&Un033LI3~& diff --git a/docs/cf_FunctionalRequirements.csv b/docs/cf_FunctionalRequirements.csv index 7c5e4b36..98453a2a 100644 --- a/docs/cf_FunctionalRequirements.csv +++ b/docs/cf_FunctionalRequirements.csv @@ -9,15 +9,14 @@ CF1004.2,CF1004.2,"When CF rejects a command, CF shall issue a ""Command Rejecte CF2000,CF2000,"When CF receives a CFDP receive-file protocol-directive PDU, CF shall process the file transfer request according to the directive-specified CFDP Mode, ""Unacknowledged"" Class-1 Service or ""Acknowledged"" Class-2 Service. ",Basic file transfer function that specifies the CFDP classes that shall be implemented. CF2001,CF2001,CF shall extract uplinked CFDP PDUs from cFE-SB messages.,CF application is a cFS compliant component that must implement the cFS architectural patterns CF2002,CF2002,CF shall extract file data from File-Data PDUs and reconstruct an identical copy of the extracted file from the meta-data-specified directory.,Basic CFDP function with fault handling defined in sub requirements -CF2002.1,CF2002.1,"If CF detects that a ""fault"" has occurred, CF shall cancel the transaction and issue an ""Error"" cFE event message.","For robust and secure operations, errors in execution must be detected and handled with appropriate constraints on resource use and state machine iterations" +CF2002.1,CF2002.1,"If CF detects that a ""fault"" has occurred, CF shall close out the transaction and issue an ""Error"" cFE event message.","For robust and secure operations, errors in execution must be detected and handled with appropriate constraints on resource use and state machine iterations. ""Close out"" is intentionally vague since the action needs to be appropriate for the transmission class. As long as the transaction doesn't hang and become stale the requirement is met. Note ""cancel"" is overly specific, there's a cancel transaction command that is different than what is done here." CF2002.1.2,CF2002.1.2,"CF shall detect the following scenarios and identify them as faults: 1. Positive Ack Limit Reached 2. Filestore Rejection 3. File-CRC Mismatch Failure 4. File-Size Error 5. NAK Limit Reached -6. Inactivity Limit Reached -7. Suspend Request Received""","CF2002.1, CFDP-1S-18 Filestore procedures 4.9" +6. Inactivity Limit Reached",Fault scenarios explicitly listed and tested for specification compliance. CF3000,CF3000,"When CF receives a ""Transfer File"" command, CF shall play back the file indicated by the command-specified: filename, source path, destination path, keep/delete flag, service class, priority, channel, and peer-entity id. ","Also referred to as ""playback file"" command. Basic function of file transfer required to operate cFS flight systems. " CF3000.1,CF3000.1,"When CF receives a ""Transfer File"" command, if the command-specified is open, CF reject the command.",Open files are in a uncertain state and may change during transfer potential containing erroneous data or cause other undefined behaviors CF3000.3,CF3000.3,"When CF receives a ""Transfer File"" command, if the command-specified file is not found, CF shall reject the command.","For robust and secure operations, command must be validated prior to execution. Provides operational interface as to why the command was not executed." @@ -42,25 +41,26 @@ CF3009,CF3009,The CF channel playback-pending-queue depth shall be configurable. CF3010,CF3010,The CF file-transfer history-queue depth shall be configurable.,Operational interface to support user knowledge of which files have been transferred and in what order. CF4000,CF4000,The number of CF channels shall be defined by a CF configuration table.,Table-defined configurations support cFS architecture goals of scalability and reconfiguration of mission variability points CF4000.1,CF4000.1,CF-channel parameters shall be defined by a CF configuration table.,Table-defined configurations support cFS architecture goals of scalability and reconfiguration of mission variability points -CF4000.1.1,CF4000.1.1,"The ""CF Channel Configuration Table"" shall define the following parameters: --- Channel parameters (repeated for each playback channel) -1. Dequeue Enable -2. Downlink PDU MID -3. Pending Queue Depth -4. History Queue Depth -5. Channel Name -6. Handshake Semaphore Name --- Polling Directory Parameters (repeated for each polling directory) -7. Enable State -8. CFDP Class -9. Priority -10. Source Path -11. Destination Path -12. Preserve file -13. Peer Entity Id --- Input channel parameters (repeated for each input channel) -14. Input PDU MID -15. Class 2 Uplink Response Channel ","Playback/output channels are defined as paths to a destination. Each path has a separate configuration space with parameters for priority, bandwidth throttling, peer entity ID, Handshake Semaphore Name (mechanism for PDU Output rate), etc." +CF4000.1.1,CF4000.1.1,"The ""CF Configuration Table"" shall include the following parameters: +-- Engine parameter(s) +1. Local entity ID +-- Channel parameters (per-channel) +2. Dequeue Enable +3. Transmit PDU MID +4. Receive PDU MID +5. Handshake Semaphore Name +6. Acknowledge timer limit +7. Non-acknowledge timer limit +8. Acknowledge retry limit +9. Non-acknowledge retry limit +10. Inactivity timer limit +-- Polling Directory Parameters (per-polling directory) +11. Enable State +12. CFDP Class +13. Priority +14. Source Path +15. Destination Path +16. Peer Entity Id","Engine, channel, and polling directory configuration parameters for operational flexibility." CF4000.2,CF4000.2,Each CF channel shall have a dedicated and independent pending queue. ,"Playback channels should be independent to avoid one channels from stalling another channel. The channel dictates the SB MsgId / Apid that the playback data PDUs will be generated with. Separate queues also helps when the one channel is throttled - e.g. if there are two channels and one is slow and one is faster, a playback requests to the slow channel may block the faster channel if they shared a single pending queue." @@ -124,7 +124,7 @@ CF5022.1,CF5022.1,"When CF receives a ""De-Queue File"" command, if the command- CF5023,CF5023,"The maximum number of transmissions, that is, the sum of simultaneous transmit and receive transactions, shall be defined at compile time.",Supports scaling resource use for mission variability CF5024,CF5024,"When CF receives a file-transfer request, if the requested file's size is larger than 2^32 bytes, CF shall reject the request and issue an error event message.",Constrain resources use and exclude implementation complexity of CCSDS Large-file-size header extensions. CFDP-1S-01 CF5030,CF5030,Each CF output channel shall have 256 file-transfer priority levels.,Priority levels are used to control the order of file transfer PDUs within a channel. Priority levels allow the control of PDU interleaving in a output channel and prevent a lower-priority transfer from blocking a high-priority operational transfer. 256 priority levels provide a high-level of granularity in the compact space of 1 byte. -CF5030.1,CF5030.1,The CF file-transfer priority levels shall be configurable.,Allow for flexibility in configuration and operation. +CF5030.1,CF5030.1,The CF file transmission priority level for each polling directory shall be configurable.,Supports management of priorities for each polling directory. Commanded transfers (single file or playback directory) use the priority level contained in the command. CF5030.2,CF5030.2,The highest file-transfer priority level shall be zero.,Standardized interface. If the number of levels increases or decreases the highest priority will always be the same CF5031,CF5031,CF shall send NAK re-transmissions in the order received at the same priority as the NAK-targeted file,PDU re-transmission priority should be the same as the original request. To not do so would allow a form of priority inversion where a large number of NAKs on a lower priority transfer would suppress re-transmission of higher priority transfers. CF5040,CF5040,"CF shall support CFDP file transfers in ""Unacknowledged""(Class-1) Service Mode.","Basic file transfer function. Unacknowledged Mode, also called unreliable mode, is used for non-critical data or operations without bi-directional data paths." @@ -132,21 +132,18 @@ CF5041,CF5041,"CF shall support CFDP file transfer in ""Acknowledged"" (Class-2) CF6000,CF6000,"The CF Housekeeping message shall include 1. Command Counter 2. Command Error Counter -3. Playback-Pending Queue State --- Per-Channel HouseKeeping Entries (repeated for each channel) -- -4. Number of files on Playback-Pending Queue +-- Per-Channel HouseKeeping Entries +4. Number of transactions on the various queues 5. Frozen Status 6. Number of Valid PDUs Received 7. Number of Receive-Transaction Errors 8. Number of Sent PDUs -9. Number of Ack Timer-Limit Faults -10. Number of NAK Timer-Limit Faults +9. Number of Ack Limit Faults +10. Number of NAK Limit Faults 11. Number of Inactivity Timer-Limit Faults 12. Number of CRC Mismatch Faults -13. Number of Filestore Rejection Faults -14. Number of Filesize Error Faults -15. Number of Cancel Request Faults -",Operator interface that provides detailed status on operational state +13. Number of Filestore Rejection Faults (can be split by type) +14. Number of Filesize Mismatch Faults",Operator interface that provides detailed status on operational state CF7000,CF7000,"When CF is initialized, CF shall initialize the following data as specified below: 1. Command Counter = 0 2. Command Error Counter = 0 @@ -166,6 +163,6 @@ CF7000,CF7000,"When CF is initialized, CF shall initialize the following data as 15. Number of Cancel Request Faults = 0",All variable must be set to a known valid state on initialization to support reliable functioning CF7001,CF7001,"When CF is initialized, CF shall load valid CF Configuration Tables.",All variables must be set to a known valid state on initialization to support reliable functioning. Table interface supports operational reconfiguration of CF functions. CF7001.1,CF7001.1,"If a CF Configuration Table fails validation, CF shall issue an error cFE event message and exit.",Support constraints for security checks and resource utilization. Without a valid configuration CF can not initialize to a functional state. -CF7001.1.1,CF7001.1.1,CF shall validate all parameters in CF configuration tables,Support constraints for security checks and resource utilization. Without a valid configuration CF can not initialize to a functional state. This is a critical failure that can not be corrected using a file upload. +CF7001.1.1,CF7001.1.1,CF shall validate CF configuration table parameters.,Support constraints for security checks and resource utilization. Without a valid configuration CF can not initialize to a functional state. Specific content validation is implementation defined. CF8000,CF8000,"When CF receives an ""Initialize Engine"" command, CF shall enable the CFDP engine and re-load its configuration.",Supports operator interface to disable operations due to misconfiguration and other faults CF8001,CF8001,"When CF receives a ""Disable Engine"" command, CF shall disable the CFDP engine and reset its state.",Supports operator interface to disable operations due to misconfiguration and other faults From 2d22a18949a995d6dd215ddf50eece15d0e94111 Mon Sep 17 00:00:00 2001 From: Jacob Hageman Date: Tue, 24 May 2022 14:33:50 -0600 Subject: [PATCH 2/3] Part #120, Remove duplicate item from CF5002 requirements --- docs/cf_FunctionalRequirements.csv | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/cf_FunctionalRequirements.csv b/docs/cf_FunctionalRequirements.csv index 98453a2a..64547ee3 100644 --- a/docs/cf_FunctionalRequirements.csv +++ b/docs/cf_FunctionalRequirements.csv @@ -77,17 +77,15 @@ CF5002,CF5002,"The following parameters shall be configurable by a CF command: 1. CFDP channel Ack-Timer Value (seconds) 2. CFDP channel NAK-Timer Value (seconds) 3. CFDP channel Inactivity-Timeout Value (seconds) -4. CFDP channel Ack-Timer Value (seconds) -5. CFDP channel Maximum Ack Timeouts (integer counts) -6. CFDP channel Maximum NAK Timeouts (integer counts)","Operational interface to support mission variability and reconfiguration +4. CFDP channel Maximum Ack Timeouts (integer counts) +5. CFDP channel Maximum NAK Timeouts (integer counts)","Operational interface to support mission variability and reconfiguration " CF5002.1,CF5002.1,"The default values for the CFDP channel protocol parameters below shall be defined by a CF Configuration Table: 1. CFDP channel Ack-Timer Value (seconds) 2. CFDP channel NAK-Timer Value (seconds) 3. CFDP channel Inactivity-Timeout Value (seconds) -4. CFDP channel Ack-Timer Value (seconds) -5. CFDP channel Maximum Ack Timeouts (integer counts) -6. CFDP channel Maximum NAK Timeouts (integer counts)",Ensure CF starts in a known and valid operational state +4. CFDP channel Maximum Ack Timeouts (integer counts) +5. CFDP channel Maximum NAK Timeouts (integer counts)",Ensure CF starts in a known and valid operational state CF5002.2,CF5002.2,"When CF receives a ""Set CFDP Channel Protocol Configuration"" command, CF shall set the command-specified parameter to the command-specified value and issue a cFE event message that confirms the change. ",Operational Interface CF5002.3,CF5002.3,"When CF receives a ""Set CFDP Channel Protocol Configuration"" command, if the command-specified parameter is invalid, CF shall reject the command. ",Command validity check for robust operation CF5002.4,CF5002.4,"When CF receives a ""Set CFDP Channel Protocol Configuration"" command, if the command-specified parameter *value* is invalid, CF shall reject the command.",Command validity check for robust operation From a9f9f506f4a49d7587ab1a4f77d05e523bd8dedb Mon Sep 17 00:00:00 2001 From: Jacob Hageman Date: Wed, 25 May 2022 11:58:37 -0600 Subject: [PATCH 3/3] Fix #121, Clarify CF6000 and CF7000 HK elements --- docs/cf_FunctionalRequirements.csv | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/docs/cf_FunctionalRequirements.csv b/docs/cf_FunctionalRequirements.csv index 64547ee3..aa713b11 100644 --- a/docs/cf_FunctionalRequirements.csv +++ b/docs/cf_FunctionalRequirements.csv @@ -136,29 +136,13 @@ CF6000,CF6000,"The CF Housekeeping message shall include 6. Number of Valid PDUs Received 7. Number of Receive-Transaction Errors 8. Number of Sent PDUs -9. Number of Ack Limit Faults -10. Number of NAK Limit Faults +9. Number of Acknowledge Retry Limit Exceeded Faults +10. Number of Non-Acknowledge Retry Limit Exceeded Faults 11. Number of Inactivity Timer-Limit Faults 12. Number of CRC Mismatch Faults 13. Number of Filestore Rejection Faults (can be split by type) 14. Number of Filesize Mismatch Faults",Operator interface that provides detailed status on operational state -CF7000,CF7000,"When CF is initialized, CF shall initialize the following data as specified below: -1. Command Counter = 0 -2. Command Error Counter = 0 -3. Playback-Pending Queue State = enabled --- Per-Channel HK Entries (repeated for each channel) -- -4. Number of files on Playback-Pending Queue = 0 -5. Frozen Status = ""thawed"" -6. Number of Valid PDUs Received = 0 -7. Number of Receive-Transaction Errors = 0 -8. Number of Sent PDUs = 0 -9. Number of Ack Timer-Limit Faults = 0 -10. Number of NAK Timer-Limit Faults = 0 -11. Number of Inactivity Timer-Limit Faults = 0 -12. Number of CRC Mismatch Faults = 0 -13. Number of Filestore Rejection Faults = 0 -14. Number of Filesize Error Faults = 0 -15. Number of Cancel Request Faults = 0",All variable must be set to a known valid state on initialization to support reliable functioning +CF7000,CF7000,"When CF is initialized, CF shall initialize the the housekeeping counters/numbers to zero and the frozen status as ""thawed"".",All variable must be set to a known valid state on initialization to support reliable functioning CF7001,CF7001,"When CF is initialized, CF shall load valid CF Configuration Tables.",All variables must be set to a known valid state on initialization to support reliable functioning. Table interface supports operational reconfiguration of CF functions. CF7001.1,CF7001.1,"If a CF Configuration Table fails validation, CF shall issue an error cFE event message and exit.",Support constraints for security checks and resource utilization. Without a valid configuration CF can not initialize to a functional state. CF7001.1.1,CF7001.1.1,CF shall validate CF configuration table parameters.,Support constraints for security checks and resource utilization. Without a valid configuration CF can not initialize to a functional state. Specific content validation is implementation defined.