Exception behavior with errno

The idea is that no code is needed, except for declarations of Ada types. You describe an ASN.1 packet as single Ada record type. There is a direct mapping from ASN.1 syntax to Ada. E.g.

SEQUENCE
{  A [0] INTEGER,
   B [1] IMPLICIT INTEGER,
   C [2] IMPLICIT INTEGER,
   D [3] IMPLICIT INTEGER
}

becomes

type Four_Integers is new Tagged_Sequence_Data_Item with record
   A : Integer_Data_Item;
   B : Implicit_Integer_Data_Item;
   C : Implicit_Integer_Data_Item;
   D : Implicit_Integer_Data_Item;
end record;

So there is little need to generate that. The record type can be directly used in I/O communication, e.g. you tell the communication layer that this record is to the packet. Then when you get a callback on data received the record is already filled with decoded data. That is.

You might want to consider Gnoga for your GUI. It is all Ada, works on any platform with a browser, can be used locally, and easily allows remote use as well.