Lección 3: Implementación de SWC utilizando RIMBOs
Puede implementar un tipo de SWC atómico utilizando Rhapsody® Implementation Objects (RIMBOs).
Acerca de esta tarea
Procedimiento
- Cree un diagrama de implementación SWC bajo un paquete ARBMT. Pulse con el botón derecho del ratón en el paquete y seleccione Añadir nuevo > Diagramas > SWCImplDiagram.
- Arrastre el tipo de SWC que se va a implementar en el diagrama.
- Arrastre un RIMBO desde la caja de herramientas dentro del cuadro de tipo SWC.
- Escriba el RIMBO por un RIMB existente.
- Conecte los puertos del tipo SWC a los puertos del RIMB con los conectores de la caja de herramientas.
- Utilizar conectores de datos para conectar puertos de remitente/destinatario
- Utilizar conectores de servicio para conectar puertos de cliente/servidor
Nota: varios RIMBOs se pueden colocar y conectar dentro de un determinado tipo de SWC. Los elementos de interfaz AUTOSAR y los elementos de interfaz de bloque de implementación se comparan según los nombres. Por lo tanto, cuando un puerto AUTOSAR se conecta a un puerto de bloque de implementación, un elemento de la interfaz para un puerto AUTOSAR se compara con un elemento de la interfaz para el bloque de implementación de acuerdo con los nombres de esos elementos.Restricción: puede colocar y conectar varios objetos de bloque de implementación dentro de un tipo de componente de software determinado, pero no entre ellos.La estructura del código de implementación RIMB depende de la etiqueta Interno-XX_ENCODE_CASE_One comportamiento: "SupportMultipleInstamtiation". Cuando la etiqueta "SupportMultipleInstantiation" es "False", RIMB no utilizará punteros de contexto ("me", "self"). Generando RIMB como singleton o archivo, por ejemplo, no generando una estructura y no teniendo punteros "me" "self".
Cuando la etiqueta "SupportMultipleInstantiation" es "True", RIMB utilizará punteros de contexto ("me", "self"):Encapsular datos en la estructura C del RIMB
Tener el argumento "me" para todas las operaciones excepto ActiveOperation
Tenga el parámetro " Rte_Instance self ' con las operaciones siguientes:
Operaciones de modelo de usuario
Operaciones statechart dispatchEvent & takeEvent
Operaciones desencadenadas
Operaciones activas
Añada código al principio de cada operación activa, para extraer el puntero "me" del parámetro "Rte_Instance self", llamando a la API Rte_PIM
Operación de ayudante de descriptor de acceso RBMT
Operaciones de mxf RiCReactive : RiCReactive_consumeEvent, RiCReactive_takeEvent, RiCReactive_takeTrigger, runToCompletion
No hay declaración de instancia/datos RIMBO
Ninguna operación RIMB_Init
Integrator debe llamar a < clase RIMB-> _Init, < clase RIMB-> _startBehavior
Cree una definición ARXML para el PIM RIMB bajo InternalBehavior
Crear una typedefs relacionada en el código generado
Limitaciones:El código puede tener una dependencia circular de los tipos, como resultado de las especificaciones "Especificación del RTE". Estos tendrán que ser manejados manualmente por el "integrador".
El parámetro "Rte_Instance self" no se añade a las operaciones "entDef" de Statechart
El Statechart optimizado no está soportado
Todas las entidades ejecutables deben estar en modalidad "Ejecutar en área exclusiva"
- Un RIMB sólo puede escribir un único RIMBO
- Todos los elementos relacionados con la implementación de un SW/C atómico, RIMB, RIMB Interfaces, etc., deben estar en paquetes separados y no mezclados con los relacionados con otro SW/C atómico.
Propiedades nuevas relacionadas:C_CG ::Operation ::OSContextName
C_CG ::Operation ::OSContextDeclTipo
C_CG ::Operation ::ActiveOperationExtractMeLlamada