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

Fix #1544, add time get reference error bit #1593

Merged

Conversation

jphickey
Copy link
Contributor

@jphickey jphickey commented Jun 1, 2021

Describe the contribution
Use one of the unused time state bits to indicate if an error has occurred where CFE_TIME_GetReference was not able to get a consistent copy of the reference state data.

In a functional system this should never occur - there should be at most one retry, which only happens in the event there was a burst of updates (more than 4) concurrently with reading the structure.

The previous implementation did not report or handle the condition at all, this at least sets a TLM status bit and returns a reference struct filled with all zeros.

Fixes #1544

Testing performed
Build and sanity check CFE, run all unit tests
Check coverage report to ensure the new tests are being executed and confirm that the read error flag gets set, and the output state is all 0 in that case.
Force the error to occur during a syslog call and confirm the timestamp gets set, e.g.

1980-001-00:00:00.00000 ES Startup: Opened ES App Startup file: /cf/cfe_es_startup.scr

Expected behavior changes
If CFE_TIME_GetReference was ever not able to get a valid reference structure, it outputs all zeros and the "REFERR" bit (0x0010) will be set in the output TLM structure until the system is rebooted.

System(s) tested on
Ubuntu

Additional context
This solution was chosen over an event/syslog because both of those will also get the time, thereby introducing a recursive loop if the error happens again.

By zero-filling the structure the output is also identifiable; i.e. if the date "1980-001-00:00:00.00000" ever appears in a log file, failure of CFE_TIME_GetReference is really the only way a timestamp like that is possible. Without this change the time data would be variable/unpredicatable.

Contributor Info - All information REQUIRED for consideration of pull request
Joseph Hickey, Vantage Systems, Inc.

Use one of the unused time state bits to indicate if an error has
occurred where CFE_TIME_GetReference was not able to get a consistent
copy of the reference state data.

In a functional system this should never occur - there should be at
most one retry, which only happens in the event there was a burst
of updates (more than 4) concurrently with reading the structure.

The previous implementation did not report or handle the condition
at all, this at least sets a TLM status bit and returns a reference
struct filled with all zeros.
@jphickey jphickey force-pushed the fix-1544-time-referr-bit branch from 02b6cf9 to 69b0940 Compare June 1, 2021 17:40
@jphickey jphickey added the CCB:Ready Ready for discussion at the Configuration Control Board (CCB) label Jun 1, 2021
@astrogeco
Copy link
Contributor

CCB:2021-06-02 APPROVED

@astrogeco astrogeco added CCB:Approved Indicates code review and approval by community CCB and removed CCB:Ready Ready for discussion at the Configuration Control Board (CCB) labels Jun 2, 2021
@astrogeco astrogeco changed the base branch from main to integration-candidate June 10, 2021 22:33
@astrogeco astrogeco merged commit 65573bf into nasa:integration-candidate Jun 10, 2021
astrogeco added a commit to nasa/cFS that referenced this pull request Jun 10, 2021
nasa/cFE#1566, Simplify CFE_FS_SetTimestamp and fix syslog typo
nasa/cFE#1592, Removed redundant check/set of CFE_CPU_ID_VALUE
nasa/cFE#1593, add time get reference error bit

nasa/osal#1063, const correct OS_SelectFdIsSet
astrogeco added a commit to nasa/cFS that referenced this pull request Jun 17, 2021
nasa/cFE#1619 - cfe v6.8.0-rc1+dev693
nasa/osal#1076 - osal v5.1.0-rc1+dev530
nasa/PSP#296 - psp v1.5.0-rc1+dev118

*Documentation Updates:*

nasa/cFE#1598, Updated FS Read/WriteHeader API return documentation
nasa/cFE#1601, Document CFE_ES_RunLoop increment task counter behavior
nasa/cFE#1602, Document CFE_TBL_Unregister use-case
nasa/cFE#1603, Update version description per current design

*Standardize docs generation:*

nasa/cFE#1615, standardize on "docs" subdirectory
nasa/osal#1071, rename doc to docs
nasa/PSP#294, rename doc to docs

*Coding Standard:*

nasa/osal#1042
nasa/PSP#292

**Mutex for UTAssert**

nasa/cFE#1596, provide CFE assert lock/unlock
nasa/osal#1065, add mutex lock around UtAssert globals

*Resolve API-UT discrepancies:*

nasa/osal#1055, idmap API
nasa/osal#1056, file API
nasa/osal#1057, filesys API
nasa/osal#1060, socket API
nasa/osal#1064, select API

**Other cFE ixes**

nasa/cFE#1566, Simplify CFE_FS_SetTimestamp and fix syslog typo
nasa/cFE#1592, Removed redundant check/set of CFE_CPU_ID_VALUE
nasa/cFE#1593, add time get reference error bit
nasa/cFE#1600, Add workflow to build cFE documentation
nasa/cFE#1609, Requirements updates
nasa/cFE#1610, ES/ResourceID documentation cleanup
nasa/cFE#1613, allow multiple sources in add_cfe_coverage_test
nasa/cFE#1586, add ES Misc Functional test
nasa/cFE#1607, add Mempool functional tests
nasa/cFE#1605, Clean/simplify version header and reporting
nasa/cFE#1612, doxygen cleanup
nasa/cFE#1611, Prepend system log messages with function name

nasa/osal#1063, const correct OS_SelectFdIsSet
nasa/osal#1073, Fix OS_Select doxygen errors
nasa/osal#1073, Add missing OS_Select param doc
nasa/osal#1067, Add Workflow to build and verify OSAL API Guide
nasa/osal#1070, add detail design template
nasa/osal#1072, Update error codes and documentation
nasa/osal#1075, Increase UT object limit for testing

Co-authored-by: Jacob Hageman <skliper@users.noreply.github.com>
Co-authored-by: Joseph Hickey <jphickey@users.noreply.github.com>
Co-authored-by: Ariel Adams <ArielSAdamsNASA@users.noreply.github.com>
Co-authored-by: Alex Campbell <zanzaben@users.noreply.github.com>
Co-authored-by: Jose F Martinez Pedraza <pepepr08@users.noreply.github.com>
astrogeco added a commit to nasa/cFS that referenced this pull request Jun 17, 2021
nasa/cFE#1619 - cfe v6.8.0-rc1+dev693
nasa/osal#1076 - osal v5.1.0-rc1+dev530
nasa/PSP#296 - psp v1.5.0-rc1+dev118

*Documentation Updates:*

nasa/cFE#1598, Updated FS Read/WriteHeader API return documentation
nasa/cFE#1601, Document CFE_ES_RunLoop increment task counter behavior
nasa/cFE#1602, Document CFE_TBL_Unregister use-case
nasa/cFE#1603, Update version description per current design

*Standardize docs generation:*

nasa/cFE#1615, standardize on "docs" subdirectory
nasa/osal#1071, rename doc to docs
nasa/PSP#294, rename doc to docs

*Coding Standard:*

nasa/osal#1042
nasa/PSP#292

**Mutex for UTAssert**

nasa/cFE#1596, provide CFE assert lock/unlock
nasa/osal#1065, add mutex lock around UtAssert globals

*Resolve API-UT discrepancies:*

nasa/osal#1055, idmap API
nasa/osal#1056, file API
nasa/osal#1057, filesys API
nasa/osal#1060, socket API
nasa/osal#1064, select API

**Other cFE Fixes**

nasa/cFE#1566, Simplify CFE_FS_SetTimestamp and fix syslog typo
nasa/cFE#1592, Removed redundant check/set of CFE_CPU_ID_VALUE
nasa/cFE#1593, add time get reference error bit
nasa/cFE#1600, Add workflow to build cFE documentation
nasa/cFE#1609, Requirements updates
nasa/cFE#1610, ES/ResourceID documentation cleanup
nasa/cFE#1613, allow multiple sources in add_cfe_coverage_test
nasa/cFE#1586, add ES Misc Functional test
nasa/cFE#1607, add Mempool functional tests
nasa/cFE#1605, Clean/simplify version header and reporting
nasa/cFE#1612, doxygen cleanup
nasa/cFE#1611, Prepend system log messages with function name

**Other osal Fixes**

nasa/osal#1063, const correct OS_SelectFdIsSet
nasa/osal#1073, Fix OS_Select doxygen errors
nasa/osal#1073, Add missing OS_Select param doc
nasa/osal#1067, Add Workflow to build and verify OSAL API Guide
nasa/osal#1070, add detail design template
nasa/osal#1072, Update error codes and documentation
nasa/osal#1075, Increase UT object limit for testing

Co-authored-by: Jacob Hageman <skliper@users.noreply.github.com>
Co-authored-by: Joseph Hickey <jphickey@users.noreply.github.com>
Co-authored-by: Ariel Adams <ArielSAdamsNASA@users.noreply.github.com>
Co-authored-by: Alex Campbell <zanzaben@users.noreply.github.com>
Co-authored-by: Jose F Martinez Pedraza <pepepr08@users.noreply.github.com>
@jphickey jphickey deleted the fix-1544-time-referr-bit branch August 3, 2021 15:19
@skliper skliper added this to the 7.0.0 milestone Sep 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CCB:Approved Indicates code review and approval by community CCB
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve CFE_TIME_GetReference error handling
3 participants