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 */ Param2_t_uunion *p2, /* signal data */ Param3_t_uunion *p3, /* only present when interface has explicit trailer */ <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 */ Param2_t_uunion **p2, /* signal data */ Param3_t_uunion **p3, /* only present when interface has explicit trailer */ );
When the header is absent Param1 corresponds to 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
Param1_t_uunion { <interface name>_t <interface name>; } Param2_t_uunion { <message name>_t <message name>; } Param3_t_uunion { ??? }
etc/users/jcmvbkbc/isl.1279449540.txt.gz · Last modified: 2010/07/18 14:39 (external edit)