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.