mirror of
https://github.com/micro-ROS/micro-ROS-Agent.git
synced 2026-09-06 18:05:17 +02:00
Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80d4778af0 | ||
|
|
a0ce74a157 | ||
|
|
b0d4f46f8a | ||
|
|
a5e14eab70 | ||
|
|
7f3f560bc7 | ||
|
|
80916d4949 | ||
|
|
d1e851ba4e | ||
|
|
6047f7135d | ||
|
|
9d3fbc63a0 |
@@ -9,7 +9,7 @@ jobs:
|
||||
|
||||
microros_agent_ci:
|
||||
runs-on: ubuntu-20.04
|
||||
container: microros/base:rolling
|
||||
container: microros/base:foxy
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
@@ -87,11 +87,11 @@ public:
|
||||
if (microros_graph_publisher_.joinable())
|
||||
{
|
||||
exit = true;
|
||||
cv_.notify_one();
|
||||
cv_.notify_one();
|
||||
microros_graph_publisher_.join();
|
||||
}
|
||||
|
||||
subscriber_->delete_datareader(ros_discovery_datareader_);
|
||||
subscriber_->delete_datareader(ros_discovery_datareader_);
|
||||
publisher_->delete_datawriter(ros_to_microros_graph_datawriter_);
|
||||
|
||||
participant_->delete_subscriber(subscriber_);
|
||||
@@ -154,6 +154,21 @@ public:
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::DataWriterQos& writer_qos);
|
||||
|
||||
/**
|
||||
* @brief Adds a DDS datawriter to the graph tree.
|
||||
* @param datawriter_guid rtps::GUID_t of the datawriter to be added.
|
||||
* @param topic_name Name of the topic to which the datawriter sends information to.
|
||||
* @param type_name Type name of the sent topic.
|
||||
* @param participant_guid rtps::GUID_t of the participant which owns this datawriter.
|
||||
* @param writer_qos QOS of the datawriter to be included into the graph tree.
|
||||
*/
|
||||
void add_datawriter(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid,
|
||||
const std::string& topic_name,
|
||||
const std::string& type_name,
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::WriterQos& writer_qos);
|
||||
|
||||
/**
|
||||
* @brief Removes a DDS datawriter from the graph tree.
|
||||
* @param datawriter_guid rtps::GUID_t of the datawriter to be removed.
|
||||
@@ -187,6 +202,21 @@ public:
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::DataReaderQos& reader_qos);
|
||||
|
||||
/**
|
||||
* @brief Adds a DDS datareader to the graph tree.
|
||||
* @param datareader_guid rtps::GUID_t of the datareader to be added.
|
||||
* @param topic_name Name of the topic to which the datareader sends information to.
|
||||
* @param type_name Type name of the sent topic.
|
||||
* @param participant_guid rtps::GUID_t of the participant which owns this datareader.
|
||||
* @param writer_qos QOS of the datareader to be included into the graph tree.
|
||||
*/
|
||||
void add_datareader(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datareader_guid,
|
||||
const std::string& topic_name,
|
||||
const std::string& type_name,
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::ReaderQos& reader_qos);
|
||||
|
||||
/**
|
||||
* @brief Removes a DDS datareader from the graph tree.
|
||||
* @param datareader_guid rtps::GUID_t of the datareader to be removed.
|
||||
@@ -301,7 +331,6 @@ private:
|
||||
eprosima::fastdds::dds::DataWriterQos datawriter_qos_;
|
||||
|
||||
rmw_dds_common::GraphCache graphCache_;
|
||||
|
||||
ParticipantListener participant_listener_;
|
||||
DatareaderListener datareader_listener_;
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
|
||||
, microros_graph_info_typesupport_()
|
||||
{
|
||||
eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->load_profiles();
|
||||
|
||||
participant_info_typesupport_ = (eprosima::fastdds::dds::TypeSupport) new graph_manager::ParticipantEntitiesInfoTypeSupport();
|
||||
microros_graph_info_typesupport_ = (eprosima::fastdds::dds::TypeSupport) new graph_manager::MicrorosGraphInfoTypeSupport();
|
||||
|
||||
@@ -55,7 +54,6 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
|
||||
eprosima::fastrtps::rtps::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
|
||||
|
||||
eprosima::fastdds::dds::StatusMask par_mask = eprosima::fastdds::dds::StatusMask::none();
|
||||
|
||||
participant_ = eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->
|
||||
create_participant(domain_id_, participant_qos, &participant_listener_, par_mask);
|
||||
|
||||
@@ -99,7 +97,6 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
|
||||
eprosima::fastdds::dds::DataWriterQos ros_to_microros_datawriter_qos_ = datawriter_qos_;
|
||||
ros_to_microros_datawriter_qos_.history().kind =
|
||||
eprosima::fastdds::dds::HistoryQosPolicyKind::KEEP_ALL_HISTORY_QOS;
|
||||
|
||||
ros_to_microros_graph_datawriter_ =
|
||||
publisher_->create_datawriter(ros_to_microros_graph_topic_, ros_to_microros_datawriter_qos_);
|
||||
|
||||
@@ -381,6 +378,24 @@ void GraphManager::add_datawriter(
|
||||
type_name, participant_gid, qos_profile, false);
|
||||
}
|
||||
|
||||
void GraphManager::add_datawriter(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid,
|
||||
const std::string& topic_name,
|
||||
const std::string& type_name,
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::WriterQos& writer_qos)
|
||||
{
|
||||
const rmw_gid_t datawriter_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
|
||||
"rmw_fastrtps_cpp", datawriter_guid);
|
||||
const rmw_gid_t participant_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
|
||||
"rmw_fastrtps_cpp", participant_guid);
|
||||
rmw_qos_profile_t qos_profile = rmw_qos_profile_unknown;
|
||||
dds_qos_to_rmw_qos(writer_qos, &qos_profile);
|
||||
|
||||
graphCache_.add_entity(datawriter_gid, topic_name,
|
||||
type_name, participant_gid, qos_profile, false);
|
||||
}
|
||||
|
||||
void GraphManager::remove_datawriter(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid)
|
||||
{
|
||||
@@ -418,6 +433,24 @@ void GraphManager::add_datareader(
|
||||
type_name, participant_gid, qos_profile, true);
|
||||
}
|
||||
|
||||
void GraphManager::add_datareader(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datareader_guid,
|
||||
const std::string& topic_name,
|
||||
const std::string& type_name,
|
||||
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
|
||||
const eprosima::fastdds::dds::ReaderQos& reader_qos)
|
||||
{
|
||||
const rmw_gid_t datareader_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
|
||||
"rmw_fastrtps_cpp", datareader_guid);
|
||||
const rmw_gid_t participant_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
|
||||
"rmw_fastrtps_cpp", participant_guid);
|
||||
rmw_qos_profile_t qos_profile = rmw_qos_profile_unknown;
|
||||
dds_qos_to_rmw_qos(reader_qos, &qos_profile);
|
||||
|
||||
graphCache_.add_entity(datareader_gid, topic_name,
|
||||
type_name, participant_gid, qos_profile, true);
|
||||
}
|
||||
|
||||
void GraphManager::remove_datareader(
|
||||
const eprosima::fastrtps::rtps::GUID_t& datareader_guid)
|
||||
{
|
||||
@@ -550,7 +583,7 @@ void GraphManager::update_node_entities_info()
|
||||
if (ros_discovery_datareader_->take_next_sample(&entities_info, &sample_info) ==
|
||||
eprosima::fastrtps::types::ReturnCode_t::RETCODE_OK)
|
||||
{
|
||||
if (sample_info.instance_state == eprosima::fastdds::dds::InstanceStateKind::ALIVE_INSTANCE_STATE)
|
||||
if (sample_info.instance_state == eprosima::fastdds::dds::InstanceStateKind::ALIVE)
|
||||
{
|
||||
graphCache_.update_participant_entities(entities_info);
|
||||
}
|
||||
@@ -635,52 +668,6 @@ void GraphManager::ParticipantListener::on_participant_discovery(
|
||||
}
|
||||
}
|
||||
|
||||
static eprosima::fastdds::dds::DataWriterQos writer_qos_conversion(
|
||||
const eprosima::fastdds::dds::WriterQos& writer_qos)
|
||||
{
|
||||
eprosima::fastdds::dds::DataWriterQos datawriter_qos;
|
||||
datawriter_qos.durability(writer_qos.m_durability);
|
||||
datawriter_qos.durability_service(writer_qos.m_durabilityService);
|
||||
datawriter_qos.deadline(writer_qos.m_deadline);
|
||||
datawriter_qos.latency_budget(writer_qos.m_latencyBudget);
|
||||
datawriter_qos.liveliness(writer_qos.m_liveliness);
|
||||
datawriter_qos.reliability(writer_qos.m_reliability);
|
||||
datawriter_qos.destination_order(writer_qos.m_destinationOrder);
|
||||
datawriter_qos.lifespan(writer_qos.m_lifespan);
|
||||
datawriter_qos.user_data(writer_qos.m_userData);
|
||||
datawriter_qos.ownership(writer_qos.m_ownership);
|
||||
datawriter_qos.ownership_strength(writer_qos.m_ownershipStrength);
|
||||
datawriter_qos.publish_mode(writer_qos.m_publishMode);
|
||||
datawriter_qos.representation(writer_qos.representation);
|
||||
datawriter_qos.data_sharing(writer_qos.data_sharing);
|
||||
|
||||
return datawriter_qos;
|
||||
}
|
||||
|
||||
static eprosima::fastdds::dds::DataReaderQos reader_qos_conversion(
|
||||
const eprosima::fastdds::dds::ReaderQos& reader_qos)
|
||||
{
|
||||
eprosima::fastdds::dds::DataReaderQos datareader_qos;
|
||||
|
||||
datareader_qos.durability(reader_qos.m_durability);
|
||||
datareader_qos.deadline(reader_qos.m_deadline);
|
||||
datareader_qos.latency_budget(reader_qos.m_latencyBudget);
|
||||
datareader_qos.liveliness(reader_qos.m_liveliness);
|
||||
datareader_qos.reliability(reader_qos.m_reliability);
|
||||
datareader_qos.destination_order(reader_qos.m_destinationOrder);
|
||||
datareader_qos.user_data(reader_qos.m_userData);
|
||||
datareader_qos.ownership(reader_qos.m_ownership);
|
||||
datareader_qos.time_based_filter(reader_qos.m_timeBasedFilter);
|
||||
datareader_qos.lifespan(reader_qos.m_lifespan);
|
||||
datareader_qos.durability_service(reader_qos.m_durabilityService);
|
||||
eprosima::fastdds::dds::TypeConsistencyQos consistency;
|
||||
consistency.type_consistency = reader_qos.type_consistency;
|
||||
datareader_qos.type_consistency(consistency);
|
||||
datareader_qos.data_sharing(reader_qos.data_sharing);
|
||||
|
||||
return datareader_qos;
|
||||
}
|
||||
|
||||
template <>
|
||||
void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtps::rtps::ReaderDiscoveryInfo>(
|
||||
const eprosima::fastrtps::rtps::ReaderDiscoveryInfo& reader_info)
|
||||
@@ -697,7 +684,7 @@ void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtp
|
||||
const std::string type_name = reader_info.info.typeName().to_string();
|
||||
|
||||
graphManager_from_->add_datareader(reader_info.info.guid(), topic_name, type_name,
|
||||
iHandle2GUID(reader_info.info.RTPSParticipantKey()), reader_qos_conversion(reader_info.info.m_qos));
|
||||
iHandle2GUID(reader_info.info.RTPSParticipantKey()), reader_info.info.m_qos);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -724,7 +711,7 @@ void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtp
|
||||
const std::string type_name = writer_info.info.typeName().to_string();
|
||||
|
||||
graphManager_from_->add_datawriter(writer_info.info.guid(), topic_name, type_name,
|
||||
iHandle2GUID(writer_info.info.RTPSParticipantKey()), writer_qos_conversion(writer_info.info.m_qos));
|
||||
iHandle2GUID(writer_info.info.RTPSParticipantKey()), writer_info.info.m_qos);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user