Comments (2)
Imported comment by internal user on Tue Nov 16 15:57:15 2021
It should be possible to be compliant without the use of packed structures. To do so, the data structures should be defined only using uint8-based fields. Instead of using larger (uint16/32) integer types they should be declared as an array of uint8 of the correct size. Since these are not directly usable fields as it is (all access needs to go through a byte-order/endianness conversion anyway) this difference should not be significant, and can likely be compensated by updating only those wrappers that do the endianness conversions.
from cf.
There are two separate aspects here:
-
Commands and Telemetry for ground control of the CF app itself. These are application-defined structures and do not need to specifically to any specific standard, other than what CFE SB + CFE MSG dictate for the encapsulation. Therefore these can be aligned however necessary. It is not required to pack these structs at all - we can simply remove the packing here. Note that they are already laid out in such a way that implicit padding is not likely to be an issue, so removing the packed attribute probably won't even change them. And also note that no other CFS apps pack their command/telemetry structures right now, either.
-
CFDP PDUs. These are required to conform to the CCSDS 727.0-B-5 definition and therefore must be aligned according to that spec, not aligned per the CPU. But these are also encoded per CCSDS 727.0 as well, so they aren't directly usable as logical values anyway. Recommend to change these to uint8-based structs so the packed attribute will not be needed.
The fix for this should be split per above, since these are really separate problem domains. The PR for this issue will just focus on the CMD/TLM (1) above. Since the CFDP PDU decoding is more involved and has other problems, those will be fixed in the context of issues #59, #71, and #116.
from cf.
Related Issues (20)
- Update documentation to include lessons learned
- Clean up unused error codes/checks
- Reorganize headers and structure them according to documented patterns
- CF writes to received SB buffer
- Implement dispatch pattern for CF
- Add EDS file for CF
- Fix typo in Requirement CF2002.1.3
- Various type mismatches in CF
- EDS file inconsistencies
- Should message buffers returned from `CFE_SB_ReceiveBuffer` be checked for `NULL`?
- Segfault trying to dereference NULL pointer.
- Apply name updates from recent EdsLib change
- Placing a file with a name that is too long in the polling directory causes errors to spam
- Inaccurate comment in CF_CFDP_ReceiveMessage
- cf delete file when there is an error during tx HOT 1
- Transaction priority sorted incorrectly
- Static analysis issues JSC 2.1
- Standardization of Command Responses
- EotPacket provides transaction status, but defines are internal
- f-sanitizer report run time error in coverage-cf-cf_cfdp_r-testrunner
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cf.