-
Notifications
You must be signed in to change notification settings - Fork 204
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
CCSDS Electronic Data Sheet (EDS) integration #207
Comments
Imported from trac issue 176. Created by jwilmot on 2016-10-24T14:37:39, last modified: 2019-03-05T14:58:28 |
Trac comment by glimes on 2016-11-08 14:17:08: Current crop of cfe-next are all going into CFE 6.6 |
Trac comment by jphickey on 2017-07-10 17:08:29: As a prerequisite to using any sort of generated header files or source code, it is highly beneficial to adopt a consistent naming convention for all identifiers. The GHAPS project did some work in this area and documented the recommended conventions. Note this is only concerning identifier names and not anything specifically related to EDS, it is just being proposed to establish a consistent practice which will have benefits going forward (with or without EDS). The document is in commit [changeset:c281e47] (markdown format) I will also also attach a PDF copy of the document to this ticket for review. |
Trac comment by jphickey on 2017-07-16 23:36:52: commit [changeset:32cba48] illustrates the enumerator naming convention applied to 6 select enums in CFE ES and CFE EVS. These 6 specific enums were chosen because they are part of the external messaging API. There are plenty of additional macros which are only used internally that are left as-is for now, but these would be good candidates to fix as well. The existing |
Trac comment by jphickey on 2017-07-24 10:46:52: Furthermore - there are commands such as The rule could be extended to handle multiple uppercase chars in a row and treat that as one word, but again that is not a reversible operation. This is another example of why it is generally better to avoid conversions and just preserve names as is where possible. |
Trac comment by jphickey on 2017-07-24 10:27:33: FYI the name convention for the {{{ Based on the suggested naming convention this should be changed to "Noop". The question is with respect to capitalization -- should it be made all uppercase as in I tend to prefer the case-preserved approach as it is easier particularly for multi-word command names. For instance CFE_ES has a "QueryOne" command, which would translate to either My preference would be the former i.e. |
Trac comment by jphickey on 2017-07-24 16:49:14: Commit [changeset:8728ebf] illustrates how this rule would be applied to the CC macros for ES and EVS. |
Trac comment by sstrege on 2017-08-07 13:13:12: On behalf of stashakk who writes: -----Original Message----- After reading through the meeting notes and looking at the ticket. I DO AGREE. The purpose and rationale are sound to why. As for the specifics, that to me is more personal preference (because it is more stylistic and controlling a style is hard because everyone will do it differently). So my personal opinion/thoughts (which I know others will differ): I have never liked the use of macros. They overly complicate code and very wrong things can be done with them, the language has the functionality already, so I feel that we should use it. I understand the purpose of going to a naming convention, but sometimes shortening things will always have conflicts, for instance with "msg" that has multiple contexts, or even things like ntp (network time protocol or nuclear thermal propulsion). So at some point collisions will happen with shortening. My biggest thing would be to keep a centralized list (in code or a document like cFS_IdentifierNamingConvention that continually keeps track of this information. |
Trac comment by jphickey on 2017-08-22 11:24:09: Updated commit available for review in [changeset:8ae2f8d] ** Note this is all-inclusive and replaces all previous changesets on this ticket ** (except for the proposal document itself) This change set focuses on updating all enumeration and command names according the proposal, across all core applications. As a result it is a fairly large changeset but the changes should be all straightforward and mechanical in nature, effectively the result of doing a global search and replace. Compatibility macros are included to preserve existing application code that may depend on the old symbol names. |
Trac comment by jphickey on 2017-08-22 11:29:29: Also pushed a branch |
Trac comment by jphickey on 2017-08-22 16:39:03: Per CCB review on 2017-08-22: The "ic-2017-08-22" branch on bamboo was modified to include additional CFS applications. The results are viewable at this link: The net result is that this specific change set did not break any apps ... BUT,
|
Trac comment by jphickey on 2017-08-22 16:43:55: Additional notes on [changeset:8ae2f8d]: In the new "extern_typedefs.h" file the content is conditional on: If that is defined then the EDS tool generated file will be pulled in, which entirely replaces the content of this header file. I am proposing adding this to the 6.6 release for two reasons:
Ideally for 6.6 release I think we should include the EDS XML files in the source tree even if they are not directly used. After all this is part of the reason for adding the extern_typedefs.h to begin with -- to have a direct 1:1 map between an EDS XML file and a header file that has the C version of the same content. When you actually see the C header file side by side with the corresponding XML file things make a lot more sense. |
Trac comment by jphickey on 2017-09-01 00:31:46: FYI - commit [changeset:fc652ab] contains the proposed EDS XML files for inclusion in CFE 6.6 In this commit is only new files, it does not change any existing files or build scripts. This is simply to include the proposed SOIS EDS XML files with the CFE core. They should describe basically what the FSW is sending/receiving from external entities. |
Trac comment by sstrege on 2017-09-05 12:22:36: Approve commit fc652ab |
Trac comment by jphickey on 2017-09-07 10:32:57: Additional commits are ready for CCB review:
|
Trac comment by jphickey on 2017-09-07 14:35:28: Message dispatch consistency commits that are ready for CCB review: The objective of this set of commits is to make "message dispatch" operations more consistent across all CFE core applications. The pattern rules suggested are as follows:
{{{ Where The The return type is an Each core application has been updated separately, so they can be code reviewed independently: ES: Commit [changeset:423eadb] branch NOTE: aside from changing the prototype and names in the code and modifying where certain checks are done, this tries hard to maintain the //current behavior// as much as possible. In particular, only ES and EVS actually verified the length of incoming messages at all. This is not changed by these commits. |
Trac comment by jphickey on 2017-09-07 14:57:42: A few additional important notes on the message dispatcher changes above
|
Trac comment by glimes on 2017-09-12 11:22:17: Commit [changeset:fc652ab] now included in ic-2017-09-12 and in test, ( I'd change it to "work in progress" but that would change ownership |
Trac comment by jphickey on 2017-09-13 14:08:50: Setting it to in_work as suggested. I also went ahead and rebased this changeset to the latest development branch per above. Commit IDs in the previous comments updated accordingly. |
Trac comment by jphickey on 2017-09-14 17:23:58: One more naming convention update.... Commit [changeset:1ed4c8d] branch This updates the names of the Telemetry data structures to be consistent and more in line with the naming convention, and ensures consistency between the code and EDS. For instance, the housekeeping telemetry packet may have been This is likely the last change set relating to naming convention issues, unless we decide to fix the instance names as well (this only addresses type names). |
Trac comment by jphickey on 2017-09-15 10:12:36: Review note:
|
Trac comment by glimes on 2017-09-15 12:08:12: Joe -- build 10 (of commit [changeset:b684218]) came up fairly clean, {{{ Missing {{{#ifndef}}} guards somewhere? |
Trac comment by jphickey on 2017-09-15 12:28:54: Replying to [comment:22 glimes]:
Thanks for the heads up. It looks like this was related to the final commit that did the struct name fixes, where it was adding compatibility typedefs. Basically, 2 cases where the name ended up NOT changing, so the typedef ended up as a duplicate. For some reason, my compiler doesn't care about typedef'ing something to the same name, but whatever compiler bamboo uses does. I pushed a revised commit ([changeset:1ed4c8d]) that removes the duplicates. Build 12 looks better. |
Trac comment by glimes on 2017-09-15 12:33:51: Reviewing the component commits of the merges. By the way, thanks for organizing I'm up to one of the earlier merges, and time is moving along, so I'll stash Commit [changeset:d124688] {{{Trac #207: Make CFE_TIME_Copy macro public}}} recommend accept. Commit [changeset:b54a2b7] {{{Trac #207: prefer sizeof(instance) rather than type}}} recommend accept. This change is beneficial, but not without risk; for example: {{{
}}} While this removes the redundant knowledge of the declaration Thought for later: is there a way to write an {{{assert}}} that correctly |
Trac comment by glimes on 2017-09-15 12:50:56: The message dispatch changes look bulky but are actually not complicated ... I still need to scan them (due dilligence) but expect that my only meaningful comment will be the one just below. Commit [changeset:80304dd] {{{Trac #207: Update SB message dispatch pattern}}} recommend accept. Note that command handling functions (like {{{CFE_SB_SendHKTlmCmd}}} ) that do not have parameters, and thus do not reference the incoming message, will corretly trigger static analysis warnings, as failure to reference a parameter can indicate problems. It might be prudent to inject this line into these functions, to document to maintainers, compilers, and static analysis that this is intentional: {{{ |
Trac comment by jphickey on 2017-09-22 10:41:39: REBASE The commits above have been rebased to the baseline that was approved at the 2017-09-15 CCB meeting. This is the updated list of commits that are still awaiting CCB review and approval: commit [changeset:88bb580] branch |
Trac comment by jphickey on 2017-09-22 16:22:59: REVISED AGAIN.... Per CCB discussion held on 2017-09-22, additional changes were made to clean up the status code situation. Instead of introducing essentially duplicate status codes for each service, a generic The set of commits as it stands now: All the above commits should be "good to go" based on the agreement that it is ready for merge after making the status code changes. Finally the last commit which is still outstanding: |
Trac comment by glimes on 2017-09-25 17:03:40: Most recent round of reviewed changes has been integrated, |
Trac comment by sstrege on 2017-09-26 11:05:08: Recommend/approve commit 27cc676 |
Trac comment by glimes on 2017-09-26 12:27:37: recommend approve for [changeset:27cc676] in general, but we need to {{{ |
Trac comment by jphickey on 2017-09-29 17:07:24: While integrating the current In the EVS subsystem, two commands shared a payload structure, which were technically the same binary format, but in reality had different labels for their single "enum" field. In the binary world these were both Commit [changeset:d547d5c] branch |
Trac comment by sstrege on 2017-10-03 12:05:05: Recommend/approve commit [changeset:d547d5c] |
Trac comment by glimes on 2017-10-03 12:37:34: Recommend approval of [changeset:d547d5c] |
Trac comment by jphickey on 2017-10-19 16:03:50: Changing the milestone here to cfe-next. All the stuff we agreed to for CFE 6.6 has been merged, but there are still more changesets to do before we can claim EDS integration. The remainder will be a target for the next CFE release. |
Trac comment by jphickey on 2017-10-19 16:41:33: Putting this pack on 6.6 for record keeping. This ticket will be closed, and I've opened #243 to track the continuing work for the future release. |
Trac comment by jhageman on 2019-03-05 14:58:28: Milestone renamed |
Integrate Consultative Committee for Spacecraft Data Systems (CCSDS) Electronic Data Sheets (EDS) into the cFS tool chain and code base. An EDS is a formal machine readable (XML) specification of interfaces for both hardware and software components. The primary use cases are to support:
a) Exchange of unambiguous interface definitions in a standard format between organizations (As CCSDS is an international standards body, organizations includes other international agencies, and industry partners)
b) Automatic generation of interface code, system models, system tests, and mission operational databases
c) Run-time support for Plug-and-Play systems
There are two CCSDS standards documents that specify the schema and terms to be used in the data sheets for cFS
This ticket is intended to address EDS use at the cFS message layer (Software Bus). Another major use is at the device layer (hardware component) which is the target of major studies at the European Space Agency, and the China Academy of Space Technology. The device layer use case will be a future cFS ticket.
The text was updated successfully, but these errors were encountered: