Recently I had to implement encoder/decoders for some ISO standardized data structures in the area of intelligent transport systems. It's always nice having standards. Work went well until I encountered ISO 14823:2017. Up to this, for some strange reason, I considered ISO standards as infallible and of absolute quality.
My fallacy struck me when I went on to compile the not even 200 lines of ASN.1 in the appendix. Right in the first 30 lines, in sequence GddAttributes
we encounter the first error.
A0120E: Parsing error: expecting '}' but found Sign-applicablePeriod.
dtm International Sign-applicablePeriod, -- Date/Time/Period
^
Of course its supposed to be InternationalSign-applicablePeriod
. Two type references don't make sense. There was a space for some reason.
Same thing for ISO14823Code
(which was ISO 14823Code
). But there is more...
A0120E: Parsing error: expecting '::=', '{' or an ASN.1 Type but found ':'.
InternationalSign-exemptedApplicablePeriod:: = InternationalSign-applicablePeriod
^
So we got a messed up assignment operator ::=
in the definiton of InternationalSign-exemptedApplicablePeriod
. Reason being yet another stray space. This was also the case for its equally well named friends InternationalSign-directionalFlowOfLane
, InternationalSign-applicableVehicleDimensions
, InternationalSign-speedLimits
and code-Units
.
Next some elementary mistakes. Nothing one could blame the auto-formatting logic of his word processor for.
A0151E: 'code-Units' is being used as a typereference, but does not start with an uppercase letter.
unit code-Units(2..4|6..8)
^
ASN.1 rules dictate that only identifiers start with lowercase letters. Type references, as the error message tells us, shall start with an uppercase letter, so code-Units should have been Code-Units.
Same thing for destinationType
, destinationRoadType
and distinationInformation_IO
. The latter one even has a typo *facepalm*.
Finally we get presented a syntax error. A stay comma.
A0427W: Mixed 1990 and 2015 ASN.1 syntax: "missing identifier" on line 159 and "AUTOMATIC" on line 4.
ABSENT}),OPTIONAL,
^
In barely 200 lines, I certainly did not expected so many mistakes. Sure, we are all humans and some bugs might have been introduced when they copy & pasted the ASN.1 into MS Word (i assume), but still. Someone messed up and the technical reviewer(s) were not thorough. I'm a bit disappointed and disillusioned.
On a sidenote, ISO 14823:2017 is currently reviewed and will be replaced by ISO/CD 14823-1. Well founded in my opinion.