etc:users:jcmvbkbc:isl
This is an old revision of the document!
Table of Contents
Opensource compiler for motorola internal language
Orthogonal aspects
Orthogonal aspects must be decoupled to the maximal possible extent:
- output language
- output file structure
- user data structures and field names
- memory allocation
Output files structure (C)
.h
- includes
- enumerations
- struct typedefs
- structures
- prototypes
.c
- includes
- internal declarations
- field packers/unpackers
- message packers/unpackers
- interface packers/unpackers
Pack/unpack signature
<pack return type>
pack_<interface name>(
SignalType signal, /* signal type */
Param1_t_uunion *p1, /* only present when interface has explicit header with non-autogenerated fields */
Param2_t_uunion *p2, /* only present when interface has explicit trailer */
Param3_t_uunion *p3, /* signal data */
<pdu arg type> pdu, /* pdu output buffer */
<pdu size arg type> sz /* pdu buffer size */
);
<unpack return type>
unpack_<interface name>(
<pdu arg type> pdu, /* input pdu buffer */
<pdu size arg type> sz, /* pdu buffer size */
SignalType *signal, /* signal type */
Param1_t_uunion **p1, /* only present when interface has explicit header with non-autogenerated fields */
Param2_t_uunion **p2, /* only present when interface has explicit trailer */
Param3_t_uunion **p3, /* signal data */
);
When the header is absent Param1 corresponds to the trailer. If there's no trailer, its parameter number corresponds to the signal data.
Decoding context
- basic part:
- bit stream location (byte offset, bit offset)
- memory allocation context
- custom part:
- internal variables (managed by 'internal variable assignment' clause)
Field decoder function signature
<unpack return type> unpack_<field name>( <decoding context type> * dc, /* data location, updated during unpacking */ <field type> * p /* filled in by this unpack */ );
Union member naming
Header:
Param1_t_uunion
{
<interface name>_t <interface name>;
};
Trailer:
Param2_t_uunion
{
<interface name>_trailer_t <interface name>_trailer;
};
Signal:
Param3_t_uunion
{
<message name>_t <message name>;
};
etc/users/jcmvbkbc/isl.1279618337.txt.gz · Last modified: 2010/07/20 13:32 by jcmvbkbc