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

Para implementar un tipo de SWC atómico, haga lo siguiente:

Procedimiento

  1. 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.
  2. Arrastre el tipo de SWC que se va a implementar en el diagrama.
  3. Arrastre un RIMBO desde la caja de herramientas dentro del cuadro de tipo SWC.
  4. Escriba el RIMBO por un RIMB existente.
  5. 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