You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
CFE_ES_MemAddress_t/CFE_ES_MEMADDRESS_C and CFE_ES_MemOffset_t/CFE_ES_MEMOFFSET_C are used to convert cpuaddr into a fixed size for cmd/tlm/tbl/binary output. Currently they are both hard-coded to uint32:
Problem is this basically is just wasted space on 64 bit and also requires querying a separate element to know if these values are valid. Also ends up reducing functionality (and not supporting some requirements on certain apps).
\brief Indicates whether table is Critical or not */
uint8ByteAlign4; /**< \cfetlmmnemonic \TBL_SPARE4
\brief Spare byte to maintain byte alignment */
} CFE_TBL_TblRegPacket_Payload_t;
Note MM, CS, and MD also all have memory addresses in IO.
Describe the solution you'd like
Default to 64 bit everywhere and reorganize IO to avoid implicit padding where possible based on the change. This is a breaking change (IO change) so probably appropriate to either provide backwards compatibility or target a major release.
This does waste space on 32-bit systems, but makes it such that the values are always valid (no longer need a special flag as long as the underlying functionality is still valid). None of the uses are in what would typically be high rate telemetry so should be minimal impact. If really need we could support configurability, or projects could locally modify if really needed.
Describe alternatives you've considered
None
Additional context
Discussed at 20220420 CCB
Requester Info
Jacob Hageman - NASA/GSFC
The text was updated successfully, but these errors were encountered:
Is your feature request related to a problem? Please describe.
CFE_ES_MemAddress_t/CFE_ES_MEMADDRESS_C and CFE_ES_MemOffset_t/CFE_ES_MEMOFFSET_C are used to convert cpuaddr into a fixed size for cmd/tlm/tbl/binary output. Currently they are both hard-coded to uint32:
cFE/modules/core_api/fsw/inc/cfe_es_extern_typedefs.h
Lines 377 to 426 in 81416f8
Problem is this basically is just wasted space on 64 bit and also requires querying a separate element to know if these values are valid. Also ends up reducing functionality (and not supporting some requirements on certain apps).
cFE/modules/core_api/fsw/inc/cfe_es_extern_typedefs.h
Lines 458 to 472 in 81416f8
There's also cases where validity isn't actually indicated within the element as in tbl tlm:
cFE/modules/tbl/fsw/inc/cfe_tbl_msg.h
Lines 792 to 828 in 81416f8
Note MM, CS, and MD also all have memory addresses in IO.
Describe the solution you'd like
Default to 64 bit everywhere and reorganize IO to avoid implicit padding where possible based on the change. This is a breaking change (IO change) so probably appropriate to either provide backwards compatibility or target a major release.
This does waste space on 32-bit systems, but makes it such that the values are always valid (no longer need a special flag as long as the underlying functionality is still valid). None of the uses are in what would typically be high rate telemetry so should be minimal impact. If really need we could support configurability, or projects could locally modify if really needed.
Describe alternatives you've considered
None
Additional context
Discussed at 20220420 CCB
Requester Info
Jacob Hageman - NASA/GSFC
The text was updated successfully, but these errors were encountered: