Skip to content

Commit

Permalink
Merge pull request #328 from jwillemsen/jwi-axciomav221_320
Browse files Browse the repository at this point in the history
Generate AnyTypecode support for several DDS4CCM defined types
  • Loading branch information
jwillemsen authored Jul 13, 2022
2 parents 647152e + 8f7b415 commit 54ce83c
Show file tree
Hide file tree
Showing 13 changed files with 251 additions and 63 deletions.
37 changes: 1 addition & 36 deletions connectors/dds4ccm/idl/dds4ccm_base.idl
Original file line number Diff line number Diff line change
Expand Up @@ -9,45 +9,10 @@

#include "connectors/dds4ccm/idl/dds_rtf2_dcps.idl"
#include "connectors/dds4ccm/idl/dds4ccm_query_filter.idl"
#include "connectors/dds4ccm/idl/dds4ccm_types.idl"

module CCM_DDS
{
typedef unsigned long DataNumber_t; // count or index of data
typedef sequence<DataNumber_t> DataNumberSeq;
const DataNumber_t UNLIMITED = 0;

enum AccessStatus {
FRESH_INFO,
ALREADY_SEEN
};

enum InstanceStatus {
/// This is the first time that the component sees that instance (the instance is then existing for the component)
INSTANCE_CREATED,
/// An existing instance reenters the filter after having been filtered out
INSTANCE_FILTERED_IN,
/// An existing instance is modified and stays within the filter
INSTANCE_UPDATED,
/// An existing instance just stopped passing the filter
INSTANCE_FILTERED_OUT,
/// An instance just stopped existing
INSTANCE_DELETED
};

struct ReadInfo {
DDS::InstanceHandle_t instance_handle;
DDS::Time_t source_timestamp;
AccessStatus access_status;
InstanceStatus instance_status;
};
typedef sequence<ReadInfo> ReadInfoSeq;

enum ListenerMode {
NOT_ENABLED,
ONE_BY_ONE,
MANY_BY_MANY
};

exception AlreadyCreated {
DataNumberSeq indexes; // of the erroneous
};
Expand Down
8 changes: 8 additions & 0 deletions connectors/dds4ccm/idl/dds4ccm_stub.mpc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ project (ciaox11_dds4ccm_idl_gen) : install, \
dds4ccm_base.idl
}

IDL_Files {
idlflags -= -Gxhst -Gxhsk -Gsv -Glem
idlflags -= -St -Sa -Scdr -Scp
dds4ccm_types.idl
}

IDL_Files {
idlflags -= -Gxhst -Gxhsk -Gsv -Glem
idlflags -= -St -Sa -Scdr -Scp
Expand Down Expand Up @@ -65,6 +71,7 @@ project (ciaox11_dds4ccm_stub) : install, \
dds4ccm_stub_export.h
ccm_ddsC.h
dds4ccm_baseC.h
dds4ccm_typesC.h
dds4ccm_query_filterC.h
dds4ccm_port_status_listenerC.h
dds4ccm_data_listener_controlC.h
Expand All @@ -76,6 +83,7 @@ project (ciaox11_dds4ccm_stub) : install, \

Source_Files {
dds4ccm_baseC.cpp
dds4ccm_typesC.cpp
dds4ccm_query_filterC.cpp
dds4ccm_port_status_listenerC.cpp
dds4ccm_data_listener_controlC.cpp
Expand Down
54 changes: 54 additions & 0 deletions connectors/dds4ccm/idl/dds4ccm_types.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* @file dds4ccm_types.idl
* @author Johnny Willemsen
*
* The types defined by the DDS4CCM standard for which we need to generate
* also AnyTypeCode support
*
* @copyright Copyright (c) Remedy IT Expertise BV
*/
#ifndef DDS4CCM_TYPES_IDL_
#define DDS4CCM_TYPES_IDL_

#include "connectors/dds4ccm/idl/dds_rtf2_dcps.idl"

module CCM_DDS
{
typedef unsigned long DataNumber_t; // count or index of data
typedef sequence<DataNumber_t> DataNumberSeq;
const DataNumber_t UNLIMITED = 0;

enum AccessStatus {
FRESH_INFO,
ALREADY_SEEN
};

enum InstanceStatus {
/// This is the first time that the component sees that instance (the instance is then existing for the component)
INSTANCE_CREATED,
/// An existing instance reenters the filter after having been filtered out
INSTANCE_FILTERED_IN,
/// An existing instance is modified and stays within the filter
INSTANCE_UPDATED,
/// An existing instance just stopped passing the filter
INSTANCE_FILTERED_OUT,
/// An instance just stopped existing
INSTANCE_DELETED
};

struct ReadInfo {
DDS::InstanceHandle_t instance_handle;
DDS::Time_t source_timestamp;
AccessStatus access_status;
InstanceStatus instance_status;
};
typedef sequence<ReadInfo> ReadInfoSeq;

enum ListenerMode {
NOT_ENABLED,
ONE_BY_ONE,
MANY_BY_MANY
};
};

#endif /* DDS4CCM_TYPES_IDL_ */
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@ module IDL_Conversion_Test

attribute unsigned short rate;
attribute unsigned short iterations;

/// Test that the following DDS4CCM defined types can be used as
/// attribute, which required they have AnyTypeCode support
/// enabled
attribute CCM_DDS::DataNumber_t data_number;
attribute CCM_DDS::DataNumberSeq data_number_seq;
attribute CCM_DDS::ListenerMode listener_mode;
attribute CCM_DDS::AccessStatus accesss_status;
attribute CCM_DDS::InstanceStatus instance_status;
attribute CCM_DDS::ReadInfo read_info;
attribute CCM_DDS::ReadInfoSeq read_info_seq;
};
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -639,6 +639,125 @@ namespace IDL_Conversion_Test_Sender_Impl
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::iterations[setter]
}

::CCM_DDS::DataNumber_t
Sender_exec_i::data_number ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number[getter]
return this->data_number_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number[getter]
}

void
Sender_exec_i::data_number (
::CCM_DDS::DataNumber_t data_number)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number[setter]
this->data_number_ = data_number;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number[setter]
}

::CCM_DDS::DataNumberSeq
Sender_exec_i::data_number_seq ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number_seq[getter]
return this->data_number_seq_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number_seq[getter]
}

void
Sender_exec_i::data_number_seq (
const ::CCM_DDS::DataNumberSeq& data_number_seq)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number_seq[setter]
this->data_number_seq_ = data_number_seq;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::data_number_seq[setter]
}

::CCM_DDS::ListenerMode
Sender_exec_i::listener_mode ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::listener_mode[getter]
return this->listener_mode_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::listener_mode[getter]
}

void
Sender_exec_i::listener_mode (
::CCM_DDS::ListenerMode listener_mode)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::listener_mode[setter]
this->listener_mode_ = listener_mode;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::listener_mode[setter]
}

::CCM_DDS::AccessStatus
Sender_exec_i::accesss_status ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::accesss_status[getter]
return this->accesss_status_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::accesss_status[getter]
}

void
Sender_exec_i::accesss_status (
::CCM_DDS::AccessStatus accesss_status)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::accesss_status[setter]
this->accesss_status_ = accesss_status;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::accesss_status[setter]
}

::CCM_DDS::InstanceStatus
Sender_exec_i::instance_status ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::instance_status[getter]
return this->instance_status_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::instance_status[getter]
}

void
Sender_exec_i::instance_status (
::CCM_DDS::InstanceStatus instance_status)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::instance_status[setter]
this->instance_status_ = instance_status;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::instance_status[setter]
}

::CCM_DDS::ReadInfo
Sender_exec_i::read_info ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info[getter]
return this->read_info_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info[getter]
}

void
Sender_exec_i::read_info (
const ::CCM_DDS::ReadInfo& read_info)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info[setter]
this->read_info_ = read_info;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info[setter]
}

::CCM_DDS::ReadInfoSeq
Sender_exec_i::read_info_seq ()
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info_seq[getter]
return this->read_info_seq_;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info_seq[getter]
}

void
Sender_exec_i::read_info_seq (
const ::CCM_DDS::ReadInfoSeq& read_info_seq)
{
//@@{__RIDL_REGEN_MARKER__} - BEGIN : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info_seq[setter]
this->read_info_seq_ = read_info_seq;
//@@{__RIDL_REGEN_MARKER__} - END : IDL_Conversion_Test_Sender_Impl::Sender_exec_i::read_info_seq[setter]
}

/// Operations from Components::SessionComponent
void
Sender_exec_i::set_session_context (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,20 +137,40 @@ namespace IDL_Conversion_Test_Sender_Impl
//@{

/// Attribute rate
uint16_t rate () override;
void rate (uint16_t rate) override;

uint16_t
rate () override;
/// Attribute iterations
uint16_t iterations () override;
void iterations (uint16_t iterations) override;

void
rate (uint16_t rate) override;
/// Attribute data_number
::CCM_DDS::DataNumber_t data_number () override;
void data_number (::CCM_DDS::DataNumber_t data_number) override;

/// Attribute iterations
/// Attribute data_number_seq
::CCM_DDS::DataNumberSeq data_number_seq () override;
void data_number_seq (const ::CCM_DDS::DataNumberSeq& data_number_seq) override;

uint16_t
iterations () override;
/// Attribute listener_mode
::CCM_DDS::ListenerMode listener_mode () override;
void listener_mode (::CCM_DDS::ListenerMode listener_mode) override;

void
iterations (uint16_t iterations) override;
/// Attribute accesss_status
::CCM_DDS::AccessStatus accesss_status () override;
void accesss_status (::CCM_DDS::AccessStatus accesss_status) override;

/// Attribute instance_status
::CCM_DDS::InstanceStatus instance_status () override;
void instance_status (::CCM_DDS::InstanceStatus instance_status) override;

/// Attribute read_info
::CCM_DDS::ReadInfo read_info () override;
void read_info (const ::CCM_DDS::ReadInfo& read_info) override;

/// Attribute read_info_seq
::CCM_DDS::ReadInfoSeq read_info_seq () override;
void read_info_seq (const ::CCM_DDS::ReadInfoSeq& read_info_seq) override;
//@}

/** @name Session component operations */
Expand Down Expand Up @@ -192,6 +212,20 @@ namespace IDL_Conversion_Test_Sender_Impl
uint16_t rate_{};
/// Class member storing value of iterations attribute
uint16_t iterations_{};
/// Class member storing value of data_number attribute
::CCM_DDS::DataNumber_t data_number_{};
/// Class member storing value of data_number_seq attribute
::CCM_DDS::DataNumberSeq data_number_seq_{};
/// Class member storing value of listener_mode attribute
::CCM_DDS::ListenerMode listener_mode_{};
/// Class member storing value of accesss_status attribute
::CCM_DDS::AccessStatus accesss_status_{};
/// Class member storing value of instance_status attribute
::CCM_DDS::InstanceStatus instance_status_{};
/// Class member storing value of read_info attribute
::CCM_DDS::ReadInfo read_info_{};
/// Class member storing value of read_info_seq attribute
::CCM_DDS::ReadInfoSeq read_info_seq_{};
//@}

/** @name Component facets. */
Expand Down
5 changes: 2 additions & 3 deletions ddsx11/vendors/ndds/idl/ddsx11_ndds_stub.mpc
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ project (ddsx11_ndds_types_idl_gen) : install, \
custom_only = 1
idlflags += -Wb,stub_export_macro=DDSX11_NDDS_STUB_Export \
-Wb,stub_export_include=ddsx11_ndds_stub_export.h
// Do not suppress cdr streaming since anytypecode needs it..
// TODO CHECK
idlflags -= -Scdr

IDL_Files {
Expand Down Expand Up @@ -43,7 +41,8 @@ project (ddsx11_ndds_instancehandle_idl_gen) : install, \
custom_only = 1
idlflags += -Wb,stub_export_macro=DDSX11_NDDS_STUB_Export \
-Wb,stub_export_include=ddsx11_ndds_stub_export.h \
-Wb,post_include=idl/ndds_dcps_instance_handle.h -Scp
-Wb,post_include=idl/ndds_dcps_instance_handle.h
idlflags -= -Sa -St -Scdr

IDL_Files {
ndds_dcps_instance_handle.idl
Expand Down
5 changes: 0 additions & 5 deletions ddsx11/vendors/ndds/idl/ndds_dcps_all.idl
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,6 @@ module DDS {
unsigned long nanosec;
};

struct Time_t {
long sec;
unsigned long nanosec;
};

typedef sequence<InstanceHandle_t> InstanceHandleSeq;

// ----------------------------------------------------------------------
Expand Down
5 changes: 5 additions & 0 deletions ddsx11/vendors/ndds/idl/ndds_dcps_types.idl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ module DDS {
// For StringSeq AnyTypecode support has to be generated because it is in the
// DDS4CCM IDL as attribute
typedef sequence<string> StringSeq;

struct Time_t {
long sec;
unsigned long nanosec;
};
};

#endif /* NDDS_DCPS_TYPES_IDL_ */
Loading

0 comments on commit 54ce83c

Please sign in to comment.