diff --git a/docs/cFE_FunctionalRequirements.csv b/docs/cFE_FunctionalRequirements.csv index d893e3ee6..3b3fbdc68 100644 --- a/docs/cFE_FunctionalRequirements.csv +++ b/docs/cFE_FunctionalRequirements.csv @@ -463,45 +463,61 @@ TBL: Manage,cTBL6316,"Upon receipt of a Request, the cFE shall perform the follo TBL: Free Resources On Power On Reset,cTBL6500,Upon a Power-on Reset all Table resources shall be freed.,The Table Service cannot assume the contents of any Table is legitimate after a reset. TBL: Free Resources On Processor Reset,cTBL6501,Upon a Processor Reset all Table resources shall be freed.,The Table Service cannot assume the contents of any Table is legitimate after a reset. TBL: Free Resources On Processor Reset - Preserve Critical,cTBL6501.1,If the Table is a critical table then the contents of the Table shall be preserved.,Goal of a processor reset is preserve certain data to facilitate recovery. -TIME: Housekeeping Message,cTIME2000,"Upon receipt of Command the cFE shall generate a Software Bus message that includes the following items: +TIME: Housekeeping Message,cTIME2000,"The cFE shall provide the following Time Services items in a housekeeping message: - Time Status - MET - STCF - Leap Seconds -- STCF continuous adjustment value.",It is common for sub-systems to report housekeeping status upon receipt of a housekeeping request command. -TIME: NOOP Event,cTIME2001,Upon receipt of Command the cFE shall generate a NO-OP event message. (Time Server and Time Client),This command is useful as a general sub-system aliveness test. -TIME: Zero Counters,cTIME2002,Upon receipt of Command the cFE shall set to zero all counters reported in Time Services telemetry. (Time Server and Time Client),This command is a common feature in heritage sub-system software design. +- STCF continuous adjustment value.",Periodically report housekeeping telemetry for system awareness and management. +TIME: NOOP Event,cTIME2001,Upon receipt of Command the cFE shall generate a NO-OP event message.,This command is useful as a general sub-system aliveness test. +TIME: Zero Counters,cTIME2002,Upon receipt of Command the cFE shall set to zero all counters reported in Time Services telemetry.,This command is a common feature in heritage sub-system software design. TIME: Valid Command Counter,cTIME2003,"Upon receipt of valid command, the cFE shall increment the valid command counter.",The ground needs the capability to verify that the command was received and accepted by the cFE. Details of valid commands are documented in the cFE User's Guide. TIME: Invalid Command Counter,cTIME2004,"Upon receipt of an invalid command, the cFE shall in increment the invalid command counter.",The ground needs an indicator if a command is rejected by the cFE. Details of what makes a command invalid are documented in the cFE User's Guide. TIME: Set Leap Seconds,cTIME2005,Upon receipt of Command the cFE shall set the number of Leap Seconds to the Command-specified value.,The decision to introduce a leap second in UTC is the responsibility of the International Earth Rotation Service (IERS). The count of Leap Seconds has been incremented about every 500 days since 1972. It is therefore likely that a mission will need to update. TIME: Set STCF,cTIME2006,Upon receipt of Command the cFE shall set the STCF to the Command specified value.,"The cFE must be provided with the appropriate correlation factor, that when combined with the current MET and Leap Seconds values, will result in current time. Historically this command has been referred to as 'jam loading' time." -TIME: Compute STCF,cTIME2007,Upon receipt of Command the cFE shall compute a new value for STCF using the Command-specified value as current time.,"This command provides a useful alternative to setting the STCF +TIME: Update STCF Given Current Time,cTIME2007,Upon receipt of Command the cFE shall compute a new value for STCF using the Command-specified value as current time.,"This command provides a useful alternative to setting the STCF explicitly, as the command does not require knowledge of the current MET value. If the default time format is TAI then the new value for STCF is the Command-specified time value less MET." -TIME: Adjust STCF,cTIME2008,Upon receipt of Command the cFE shall make a one time delta adjustment to the STCF by the Command-specified value.,"It is common to set the clock as a delta adjustment from the current time value. The commanded value is signed so a positive or negative adjustment may be made. Note, there's no need for a command to apply a 'large' adjustment over a command-spec." TIME: Delta Adjust STCF,cTIME2009,Upon receipt of Command the cFE shall make a continuous 1Hz delta adjustment to the STCF by the Command-specified value.,"Upon receipt of a Command to make a 'continuous' adjustment to the STCF, the cFE shall adjust the STCF each second by the Command-specified value. The commanded value is signed so a positive or negative adjustment may be made." -TIME: Switch Source,cTIME2010,`` Upon receipt of Command the cFE shall switch to the Command-specified hardware clock source.,This command is extremely hardware configuration dependent. The number and nature of alternate clocks will vary by system. Many system designs provide primary and redundant clock sources (tone signals) and require autonomous clock switching based on failure. +TIME: Switch Tone Signal Source,cTIME2010,Upon receipt of Command the cFE shall switch to the Command-specified Tone Signal source.,"The behavior of this command is hardware specific, but provides the capability to command Tone Signal source selection if implemented at the hardware level." TIME: Diagnostic Message,cTIME2011,Upon receipt of Command the cFE shall generate a Software Bus message that includes time diagnostic information.,"When testing or debugging the time application, more details about time services are required." -TIME: Flywheel State,cTIME2012,Upon receipt of Command the cFE Time Services shall enter the Flywheel state.,Useful for testing. This provides an easy way to cause the server or client to enter flywheeling mode so that local time calculations can be verified. Also useful for testing the server/client time relations. -TIME: Flywheel State - Ignore Updates,cTIME2012.1,The cFE shall ignore Time Updates while in Flywheel state.,"Again, this is used mainly for testing purposes. Want to ignore time updates and update time using the local hardware clock." -TIME: Add To Spacecraft Time,cTIME2013,Upon receipt of Command the cFE shall adjust the spacecraft time by adding the Command specified value (seconds and subseconds) to spacecraft time.,"The client’s local clock might be running a little behind the tone, therefore, an adjustment needs to be made to the time client’s time calculation." -TIME: Subtract From Spacecraft Time,cTIME2014,Upon receipt of Command the cFE shall adjust the spacecraft time by subtracting the Command specified value (seconds and subseconds) from spacecraft time.,"The client’s local clock might be running a little ahead the tone, therefore, an adjustment needs to be made to the time client’s time calculation." -TIME: Provide TAI,cTIME2300,"Upon receipt of a Request for the current time computed as TAI, the cFE shall provide the TAI to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the TAI available to applications. -TIME: Provide UTC,cTIME2301,"Upon receipt of a Request for the current time computed as UTC, the cFE shall provide the UTC to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the UTC available to applications. -TIME: Provide Default,cTIME2302,"Upon receipt of a Request for the current time computed in the default format, the cFE shall provide the current time computed in the default selection of UTC or TAI to the requester using the format specified in the cFE Application Developer's Guide.",One of the mission defined selections is the choice of whether TAI or UTC will be the default time format. And most callers do not care which time format is the current default. This function avoids having to modify each individual caller when the default is requested. -TIME: Provide MET,cTIME2303,"Upon receipt of a Request for the current MET, the cFE shall provide the MET to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the MET available to applications. -TIME: Provide MET Seconds,cTIME2304,"Upon receipt of a Request for the current MET seconds, the cFE shall provide the MET seconds to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the MET seconds available to applications. This capability simplifies application logic. -TIME: Provide MET Sub-Seconds,cTIME2305,"Upon receipt of a Request for the current MET sub-seconds, the cFE shall provide the MET sub-seconds to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the MET sub-seconds available to applications. This capability simplifies application logic. -TIME: Provide STCF,cTIME2306,"Upon receipt of a Request for the current STCF, the cFE shall provide the STCF to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the STCF available to applications. -TIME: Provide Leap Seconds,cTIME2307,"Upon receipt of a Request for the current Leap Seconds, the cFE shall provide the Leap Seconds to the requester using the format specified in the cFE Application Developer's Guide.",Need to make the Leap Seconds available to applications. -TIME: Provide Clock State,cTIME2308,"Upon receipt of a Request for the current Clock State, the cFE shall provide the Clock State to the requester using the format specified in the cFE Application Developer's Guide.","Need to make the Clock State available to applications. Due to lack of a demonstrable use case, the requirement to provide clock state data as part of 'get time' functions has been deleted." -TIME: Add Values,cTIME2309,"Upon receipt of a Request to add two time values, the cFE shall provide the result to the requester using the format specified in the cFE Application Developer's Guide.",Need to provide a common time addition function available to applications. -TIME: Subtract Values,cTIME2310,"Upon receipt of a Request to subtract two time values, the cFE shall provide the result to the requester using the format specified in the cFE Application Developer's Guide.",Need to provide a common time subtraction function available to applications. -TIME: Compare Values,cTIME2311,"Upon receipt of a Request to compare two time values, the cFE shall provide the result to the requester using the format specified in the cFE Application Developer's Guide.",Need to provide a common time comparison function available to applications. -TIME: Convert Sub-Seconds To Micro-Seconds,cTIME2312,"Upon receipt of a Request to convert a cFE sub-seconds value to micro-seconds, the cFE shall provide the result to the requester.",Converting elapsed time from sub-seconds to micro-seconds is a commonly used conversion utility. -TIME: Convert Micro-Seconds To Sub-Seconds,cTIME2313,"Upon receipt of a Request to convert a number of micro-seconds to sub-seconds, the cFE shall provide the result to the requester.",Need to provide the inverse of the previous function. -TIME: Provide Readable Format,cTIME2314,Upon receipt of a Request the cFE shall return the provided system time in the following format: `yyyy-ddd-hh:mm:ss.xxxxx\0`,Provides time in a readable string format. +TIME: External Time Update Mode,cTIME2012,"Upon receipt of Command the cFE Time Services shall set the External Time Update Mode to the specified value, either use or ignore Tone Signal and Data when updating time.",Historically referred to as forced flywheeling. This provides an easy way to test local time calculations and compare against external time or force internal timekeeping operationally. +TIME: External Time Update Mode - Ignore Updates,cTIME2012.1,The cFE shall propagate time internally when set to ignore external time updates.,"Ignore external time updates and update time internally when configured to do so. Will still accept Tone Signal and Data, but won't update timekeeping based on the externally provided timing information." +TIME: External Time Update Mode - Use Updates,cTIME2012.2,The cFE shall update timekeeping when a Tone Signal and Data pair have been received when set to use external time updates.,"Use external time updates to update timekeeping values when configured to do so. Timekeeping in this context is intentionally vague since it depends on system mode, configuration and hardware implementation. This requirement just covers using the external data, not how exactly it is used." +TIME: Add To SCTF,cTIME2013,Upon receipt of Command the cFE shall add the Command specified value to SCTF.,One time (aka jump) value added to SCTF supports time adjustment for time servers or time clients that are set to ignore external Tone updates. +TIME: Subtract From SCTF,cTIME2014,Upon receipt of Command the cFE shall subtract the Command specified value from SCTF.,One time (aka jump) value subtracted from SCTF supports time adjustment for time servers or time clients that are set to ignore external Tone updates. +TIME: Tone Data Send,cTIME2015,Upon receipt of a Command the cFE shall generate a message that contains Tone Data.,Enables scheduler or another app to schedule time at tone data messages. +TIME: Tone Data Update,cTIME2016,"Upon receipt of a Command, the cFE shall update timekeeping if a paired Tone Signal has been received.","Once a Tone Data and Signal pair are received, timekeeping will be updated if External Data Use is enabled. Paired statement allows for time is or time was configuration (Data before or after Signal)." +TIME: Tone Signal Update,cTIME2017,"Upon receipt of a Command, the cFE shall update timekeeping if paired Tone Data has been received.","Once a Tone Data and Signal pair are received, timekeeping will be updated if External Data Use is enabled. Paired statement allows for time is or time was configuration (Data before or after Signal)." +TIME: Trigger 1Hz Cycle Processing,cTIME2018,"Upon receipt of a Command, the cFE shall trigger the 1 Hz processing cycle.","Allows command triggered 1 Hz processing to support synchronization. Actually processing depends on configuration such as registered synchronization callbacks, virtualized MET, etc so it's left as generic language in this requirement." +TIME: Set MET,cTIME2019,"Upon receipt of a Command, the cFE shall update MET with the provided value.","Hardware and configuration dependent command allows the capability to set MET if it is supported. If not utilizing a virtual MET, the hardware will reject the command if not supported." +TIME: Add to Source Time,cTIME2020,"Upon receipt of a Command, the cFE shall adjust timekeeping by adding the provided delta time.","Capability to adjust timekeeping independent of Tone and SCTF. Used to tune a system given Tone, 1Hz, or MET external dependencies. Timekeeping here remains abstract since it's dependent on configuration and mode governed by other requirements. Delta time persists until removed (independent of other external updates)." +TIME: Subtract From Source Time,cTIME2021,"Upon receipt of a Command, the cFE shall adjust timekeeping by subtracting the provided delta time.","Capability to adjust timekeeping independent of Tone and SCTF. Used to tune a system given Tone, 1Hz, or MET external dependencies. Timekeeping here remains abstract since it's dependent on configuration and mode governed by other requirements. Delta time persists until removed (independent of other external updates)." +TIME: Provide TAI,cTIME2300,"Upon receipt of a Request, the cFE shall provide the TAI.",Need to make the TAI available to applications. +TIME: Provide UTC,cTIME2301,"Upon receipt of a Request, the cFE shall provide the UTC.",Need to make the UTC available to applications. +TIME: Provide Time in Default Format,cTIME2302,"Upon receipt of a Request, the cFE shall provide the current time computed in the default selection of UTC or TAI.",One of the mission defined selections is the choice of whether TAI or UTC will be the default time format. And most callers do not care which time format is the current default. This function avoids having to modify each individual caller when the default is requested. +TIME: Provide MET,cTIME2303,"Upon receipt of a Request, the cFE shall provide the MET.",Need to make the MET available to applications. +TIME: Provide MET Seconds,cTIME2304,"Upon receipt of a Request, the cFE shall provide the MET seconds.",Need to make the MET seconds available to applications. This capability simplifies application logic. +TIME: Provide MET Sub-Seconds,cTIME2305,"Upon receipt of a Request, the cFE shall provide the MET sub-seconds.",Need to make the MET sub-seconds available to applications. This capability simplifies application logic. +TIME: Provide STCF,cTIME2306,"Upon receipt of a Request, the cFE shall provide the STCF.",Need to make the STCF available to applications. +TIME: Provide Leap Seconds,cTIME2307,"Upon receipt of a Request, the cFE shall provide the Leap Seconds.",Need to make the Leap Seconds available to applications. +TIME: Provide Clock State,cTIME2308,"Upon receipt of a Request, the cFE shall provide the Clock State.","Need to make the Clock State available to applications. Due to lack of a demonstrable use case, the requirement to provide clock state data as part of 'get time' functions has been deleted." +TIME: Add Values,cTIME2309,"Upon receipt of a Request, the cFE shall provide the result of adding the two requested time values.",Need to provide a common time addition function available to applications. +TIME: Subtract Values,cTIME2310,"Upon receipt of a Request, the cFE shall provide the result of subtracting the two requested time values.",Need to provide a common time subtraction function available to applications. +TIME: Compare Values,cTIME2311,"Upon receipt of a Request, the cFE shall provide the result of comparing the two requested time values.",Need to provide a common time comparison function available to applications. +TIME: Convert Sub-Seconds To Micro-Seconds,cTIME2312,"Upon receipt of a Request, the cFE shall provide the micro-second conversion of the requested sub-seconds value.",Converting elapsed time from sub-seconds to micro-seconds is a commonly used conversion utility. +TIME: Convert Micro-Seconds To Sub-Seconds,cTIME2313,"Upon receipt of a Request, the cFE shall provide the sub-second conversion of the requested micro-second value.",Abstract conversion support. +TIME: Provide Readable Format,cTIME2314,"Upon receipt of a Request, the cFE shall provide the requested time value in the following format: `yyyy-ddd-hh:mm:ss.xxxxx\0`",Converts the requested time value into a readable string format. +TIME: Tone Data Given MET,cTIME2315,"Upon receipt of a Request, the cFE shall update timekeeping based on the requested MET and provide a corresponding Tone Data message.",Trigger to create Tone Data message given external MET. +TIME: Tone Data Given Time and Leap Seconds,cTIME2316,"Upon receipt of a Request, the cFE shall update timekeeping based on the requested time and leap seconds and provide a corresponding Tone Data message.","Trigger to create Tone Data message given external time and leap seconds, typical of a GPS based timing system." +TIME: Tone Data Given Time,cTIME2317,"Upon receipt of a Request, the cFE shall update timekeeping based on the requested Time and provide a corresponding Tone Data message.",Trigger to create Tone Data message given external time. +TIME: Register Synchronization Callback,cTIME2318,"Upon receipt of a Request, the cFE shall register the requested function for callback upon receipt of Tone Signal.",Manage synchronization of calls at receipt of Tone Signal. +TIME: Unregister Synchronization Callback,cTIME2319,"Upon receipt of a Request, the cFE shall unregister the requested function for callback upon receipt of Tone Signal.",Manage synchronization of calls at receipt of Tone Signal. +TIME: Get Clock State Flags,cTIME2320,"Upon receipt of a Request, the cFE shall provide the clock state flags.",Provides clock state converted to flag values. +TIME: Convert MET to Spacecraft Time,cTIME2321,"Upon receipt of a Request, the cFE shall convert the provided MET to spacecraft time.",Converts the provided MET to spacecraft time based on current configuration of the system. +TIME: Trigger 1Hz Cycle Processing,cTIME2322,"Upon receipt of a Request, the cFE shall trigger the 1 Hz processing cycle.","Allows API triggered 1 Hz processing to support synchronization. Actually processing depends on configuration such as registered synchronization callbacks, virtualized MET, etc so it's left as generic language in this requirement." +TIME: Trigger Tone Signal Processing,cTIME2323,"Upon receipt of a Request, the cFE shall trigger the Tone Signal processing cycle.","Allows API triggered Tone Signal processing to support synchronization. Actually processing depends on configuration such as registered synchronization callbacks, virtualized MET, etc so it's left as generic language in this requirement." TIME: Power On Reset Default Values,cTIME2500,"Upon a Power-on Reset the cFE shall set the following time elements to their `` default values: - Time Status Data @@ -520,6 +536,3 @@ TIME: CDS Elements,cTIME2700,"During normal operation, the cFE shall preserve th - STCF - Leap Seconds - MET",Time is a critical system resource and every effort should be made to preserve it. Preserving time allows applications to 'fly through' resets. -TIME: Time At Tone Window,cTIME2701,The cFE Time Services Server shall send a time at the tone Software Bus message within a `` period of time preceding or following the tone.,"The primary purpose of a time server is to distribute time updates to time clients. Although the time tone is generally a 1PPS signal, there is no cFE restriction on the frequency of the tone. Also, there is no cFE restriction on whether the ""time at the tone"" message precedes or follows the tone." -TIME: Update MET,cTIME2702,The cFE Time Services Server shall update its MET using the timer hardware interface defined in the cFE Application Developer's Guide.,Every mission needs an MET and using a cFE-defined software interface to the timer hardware driver makes the Time Services portable. -TIME: MET Resolution,cTIME2703,The cFE shall define a MET with a `` resolution.,"The resolution (clock ticks per second) is hardware dependent. Since no other cFE component places any constraints on the resolution this requirement is not bounded with a minimum. However, both the maximum number of MET seconds and the resolution of sub-seconds are both restricted to a value that can be stored as an unsigned 32 bit integer."