SCADE5/6 profile

The code for this mapper resides in lustre_B_mapper.py. It follows the synchronous API paradigm (see section 3.1). In plain terms, this means that access to this kind of subsystems is offered via two functions: one that initializes the subsystem, readying it for use, and a second one that executes it: the "cycle" function, which reads the input parameters, acts upon them and (possibly) populates output parameters.

This mapper utilizes a macro support layer written by Esterel Technologies specifically for the utilization of SCADE in the ASSERT project. The SCADE code generator was tweaked towards that goal, and enhanced with a new set of access macros. This made our task straightforward: both initiliazation and execution functionality is accessible via ready-made macros, called AADL2SCADE_INIT and AADL2SCADE_PERFORM. The input and output parameters are also accessible via macros, named AADL2SCADE_INPUT_PARAMETER and AADL2SCADE_OUTPUT_PARAMETER.

The mapper therefore has a clear task: to use the appropriate recursive mapping rules when assigning data into and outof the SCADE-generated data structures. The source/target data structures can again be either the Semantix ASN1SCC or the OSS/Nokalva generated data structures. When using Native encodings, just as with ObjectGeode, we use memory dumps of the ASN1SCC data structures, since they are self-contained (pointerless).

SCADE, just like RTW, is also using straightforward mapping rules for structure fields. The recursive descent into the ASN.1 AST doesn't need to address any special needs for temporary types or anything else: It takes around 65 lines of code to complete a full recursive mapper for SCADE generated code (see classes FromOSStoSCADE, FromSCADEtoASN1SCC, etc).