Hi Neels,
On Fri, Mar 16, 2018 at 03:08:03AM +0100, Neels Hofmeyr wrote:
which at first glance looks like they got the MCC-MNC digits ordered wrongly. It is correct as long as the less significant nibble comes first. And using these in PLMN tests gives the expected results.
I am not sure why Ericsson wrote those definitions the way they are. I think its stupid (sorry) to define lots of single-length hexstrings rather than one hexstring.
Now I assume that the HEX1 means that it's a nibble, where the less significant nibble comes first,
HEX1 is a hexstring of length(1), see General_Types.ttcn:
General_Types.ttcn: type hexstring HEX1 length(1) with {variant "FIELDLENGTH(1)"};
sort of a "network nibble order" if that makes any sense.
The order is not part of the HEX1 definition but it's defined in an attribute/variant of the RAW type. You can use FIELDORDER() to define the encoding order of the fields of a record.
You can also use the "BYTEORDER()" and "BITORDER()" or "HEXORDER()" to define the respective parameters, see the TITAN documentation on the RAW coder for more details.
It is weird, though -- do we need to compose hex strings "reversed" as well??
I'm not sure what you're asking here?
In the type definitions I wrote I simply use a construct like
GSM_RR_Types.ttcn: type hexstring GsmBcdString with { variant "HEXORDER(low)" };
Which Makes sure that something like "123456" is encoded as "213265" like in IMSIs, MSISDNs etc.
However, for those type definitions that are provided by Ericsson, I think it makes more sense to use them as-is rather than create our own fork.