int Convert_From_uper_To_MsgType_In_SubPrgName_SbPrgImpl_ParamName( void *pBuffer, size_t iBufferSize);...where
mysimulink
)
Simulink
)
my_in
)
_
' is used instead in its place.
For our example above, the following function is generated:
int Convert_From_uper_To_T_FOR_SIMULINK_IN_In_mysimulink_Simulink_my_in( void *pBuffer, size_t iBufferSize);Notice that this kind of bridge functions are called before the call to the actual PI implementation function - since the actual implementation expects its inputs to be set prior to its execution.
void Execute_SubPrgName_SbPrgImpl();This bridge function knows exactly how to call the appropriate functional code generated by each modeling tool. In the case of SCADE for example, it will issue a call to the
AADL2SCADE_PERFORM
macro generated by the ESTEREL code generator.
In our example, this function is called...
void Execute_mysimulink_Simulink();
int Convert_From_MsgType_To_uper_In_SubPrgName_SbPrgImpl_ParamName( void *pBuffer, size_t iMaxBufferSize);The buffer passed-in must be able to hold the maximum configuration of the message. The VM code generator knows this maximum size, since it has parsed the AADL Dataview, which is automatically generated from
asn2aadlPlus
- and thus, has access to the maximum message sizes.
Upon return of this function, the pBuffer
is filled with the output message data, and the
actual message size (always less than iMaxBufferSize
) is returned.
In our example, this function is called...
int Convert_From_T_FOR_SIMULINK_OUT_To_uper_In_mysimulink_Simulink_my_out( void *pBuffer, size_t iMaxBufferSize);