| Previous |  | Next | 
    The IDL files are generated by the modeling tools.
    To understand this shapes tutorial better, the following is an overview of
    which IDL files are generated.
  
    Below a simplied represenation of the common IDL files. Use the links to view
    the file itself.
    The following IDL files can be found in Shapes_asm/ports:
    
module Shapes
            {
              enum ReturnStatus
              {
                RETURN_OK,
                RETURN_ERROR
              };
};
          
      module Shapes
            {
              typedef sequence ShapeTypeSeq;
              module ::CCM_DDS::Typed < ::ShapeType, ShapeTypeSeq>
            ShapeType_conn;
            };
           
          This IDL contains the declaration of the DDS4CCM connector. The used
          module is typed.
      struct ShapeType {
              string color; //@key
              long x;
              long y;
              long shapesize;
            };
          
          The ShapeType struct is the the data structure that is send from the
          sender to the receiver through DDS. In DDS, a single instantiation
          of this struct is called a sample.//@key as shown above.  The key value indicates to DDS that
          QoS features may apply to every unique instance of  the color field
          (e.g. a "red" square is a different instance than a "green" square).
      
    The controller is used to modify the location and the size of the registered
    shape by invoking methods on the sender component.
    These methods are part of an interface which the sender should provide. The
    controller uses this interface.
    The interface declaration is in
    
      Shapes_asm/Shapes_Control_comp/ports/Shapes_Control_obj.idl
    The IDL looks like this:
  
    module Shapes
    {
      interface Control_obj
      {
        ReturnStatus setSize (in unsigned short size);
        ReturnStatus setLocation (in unsigned short x,
            in unsigned short y);
      };
    };
    
    The controller component periodically calls the setSize and setLocation methods
    on the sender component.
  
    The component IDL file itself is located in
    
      Shapes_asm/Shapes_Control_comp/src/Shapes_Control_comp.idl
    and looks like this:
  
    module Shapes
  
    {
      component Control_comp
      {
        uses Shapes::Control_obj control;
        attribute unsigned long rate;
        attribute unsigned short max_x;
        attribute unsigned short max_y;
        attribute unsigned short max_size;
        attribute boolean resize_shape;
      };
};
    
The controller uses the Control_obj interface.
The following attributes are used:
    The moment the controller invokes setSize or setLocation, the sender translates
    the received size and location into the ShapeType struct. After that, it'll
    present the updated struct to DDS, by calling write_one on the DDS_Write port.
    The IDL file of the Sender component looks like this:
    module Shapes
    {
      component Sender_comp
      {
        port ShapeType_conn::DDS_Write info_write;
        provides Shapes::Control_obj control;
      };
};
    
    The IDL file is located in
    
      Shapes_asm/Shapes_Sender_comp/src/Shapes_Sender_comp.idl
  
    The Sender uses the DDS_Write port of the DDS4CCM connector to write data to DDS.
    The Sender provides the Control_obj interface to the Controller component. This
    means that the sender component implements the Control_obj interface so that the
    controller is able to invoke the provided methods.
  
    The receiver is "listening" to DDS. Once the shape has been
    updated by the sender, DDS will invoke a callback method on the DDS4CCM connector
    which in turn calls the receiver component and will pass the updated data to
    the receiver.
    The receiver should provide the DDS4CCM connector with an interface which the
    DDS4CCM connector should invoke the moment he gets a callback from DDS.
    To establish this, the receiver component IDL should look like this:
    
    module Shapes
  
      {
        component Receiver_comp
        {
          port ShapeType_conn::DDS_Listen info_out;
        };
};
    
| Previous |  | Next |