tanagraspace / ccsdsmo-malc-sepp-apps

CCSDS MO MAL C API
https://cnes.github.io/ccsdsmo-malc
MIT License
2 stars 0 forks source link

Investigate differences in Common Services versions between NMF and MAL C generated stubs #29

Open georgeslabreche opened 2 years ago

georgeslabreche commented 2 years ago

This seems to be causing an issue when trying to decode a ServiceFilter messages when using the Directory Service to retrieve Provider Ids (lookupProvider operation). The issue in question happens when getting the buffer string length while decoding the service provider Identifier, here (a very large erroneous number is fetched): https://github.com/esa/CCSDS_MO_TRANS/blob/7539001de3c46fcc82e018436a01edeb61733722/CCSDS_MAL_ENCODING_BINARY/src/main/java/esa/mo/mal/encoder/binary/fixed/FixedBinaryDecoder.java#L212-L215

Here are some of the noted differences in the generated ServiceFilter code between NMF and MAL C:

a) Different list type for the required capabilities set It's a UShort List in the latest CCSDS MO Common XML Specs, which is used to generate the MAL C stubs: https://github.com/ccsdsmo/xml-service-specifications/blob/fac03edae4821d148ab70924ed20bf8b30fb9cdf/xml-ccsds-mo-standards/src/main/resources/xml/area003-v001-Common.xml#L267-L270

But in ServiceFilter.java for the generated Java stubs used by the NMF Supervisor it's UInteger List: https://gitlab.com/esa/NMF/nanosat-mo-framework/-/blob/0067fb0420f4d12b6618beef8ab41c9e375b5a90/core/mo-services-impl/ccsds-common-impl/src/main/java/esa/mo/common/impl/provider/DirectoryProviderServiceImpl.java#L323-331

It's UShort in the Blue Book standard, see section 4.2.6 COMPOSITE: ServiceFilter, here: https://public.ccsds.org/Pubs/522x0b1.pdf

b) Differences in field names

Notes

  1. It seems like NMF implements a previous standard of the Commons Service, e.g. the implementation used by NMF matches the ServiceFilter specification in the Red Book standard: https://public.ccsds.org/Lists/CCSDS%205220R1/522x0r1.pdf
georgeslabreche commented 2 years ago

Raise the issue on the NMF issue tracker: https://gitlab.com/esa/NMF/nmf-issues/-/issues/1164