Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,8 @@ void CompressedDepthPublisher::advertiseImpl(

// Declare Parameters
uint ns_len = node->get_effective_namespace().length();
std::string param_base_name = base_topic.substr(ns_len);
uint ns_prefix_len = ns_len > 1 ? ns_len + 1 : ns_len;
std::string param_base_name = base_topic.substr(ns_prefix_len);
std::replace(param_base_name.begin(), param_base_name.end(), '/', '.');

using callbackT = std::function<void(ParameterEvent::SharedPtr event)>;
Expand Down Expand Up @@ -163,8 +164,8 @@ void CompressedDepthPublisher::declareParameter(
parameters_.push_back(param_name);

// deprecated non-scoped parameter name (e.g. image_raw.png_level)
const std::string deprecated_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_name);
const std::string deprecated_non_scoped_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_name);

rclcpp::ParameterValue param_value;

Expand All @@ -178,10 +179,34 @@ void CompressedDepthPublisher::declareParameter(

// transport scoped parameter as default, otherwise we would overwrite
try {
node_->declare_parameter(deprecated_name, param_value, definition.descriptor);
node_->declare_parameter(deprecated_non_scoped_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}

if (node_->get_effective_namespace().length() > 1) {
// deprecated parameters starting with the dot character (e.g. .image_raw.compressed.format)
const std::string deprecated_dot_name = "." + base_name + "." + transport_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_dot_name);

// deprecated non-scoped parameters starting with the dot character (e.g. .image_raw.format)
const std::string deprecated_non_scoped_dot_name = "." + base_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_dot_name);

try {
node_->declare_parameter(deprecated_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}

try {
node_->declare_parameter(deprecated_non_scoped_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}
}
}

void CompressedDepthPublisher::onParameterEvent(
Expand All @@ -208,9 +233,14 @@ void CompressedDepthPublisher::onParameterEvent(
// name was generated from base_name, has to succeed
size_t baseNameIndex = name.find(base_name);
size_t paramNameIndex = baseNameIndex + base_name.size();
// e.g. `color.image_raw.` + `compressedDepth` + `png_level`
std::string recommendedName = name.substr(0,
paramNameIndex + 1) + transport + name.substr(paramNameIndex);

// Check if scoped parameter name
if (name.substr(paramNameIndex + 1, transport.size()) == transport) {
paramNameIndex += transport.size() + 1;
}

std::string recommendedName = base_name + "." + transport + "." +
name.substr(paramNameIndex + 1);

rclcpp::Parameter recommendedValue = node_->get_parameter(recommendedName);

Expand All @@ -219,8 +249,9 @@ void CompressedDepthPublisher::onParameterEvent(
continue;
}

RCLCPP_WARN_STREAM(logger_, "parameter `" << name << "` is deprecated and ambiguous" <<
"; use transport qualified name `" << recommendedName << "`");
RCLCPP_WARN_STREAM(logger_,
"parameter `" << name << "` is deprecated; use canonical transport qualified name `" <<
recommendedName << "`");

node_->set_parameter(rclcpp::Parameter(recommendedName, it.second->value));
}
Expand Down
49 changes: 40 additions & 9 deletions compressed_image_transport/src/compressed_publisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ void CompressedPublisher::advertiseImpl(

// Declare Parameters
uint ns_len = node->get_effective_namespace().length();
std::string param_base_name = base_topic.substr(ns_len);
uint ns_prefix_len = ns_len > 1 ? ns_len + 1 : ns_len;
std::string param_base_name = base_topic.substr(ns_prefix_len);
std::replace(param_base_name.begin(), param_base_name.end(), '/', '.');

using callbackT = std::function<void(ParameterEvent::SharedPtr event)>;
Expand Down Expand Up @@ -375,8 +376,8 @@ void CompressedPublisher::declareParameter(
parameters_.push_back(param_name);

// deprecated non-scoped parameter name (e.g. image_raw.format)
const std::string deprecated_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_name);
const std::string deprecated_non_scoped_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_name);

rclcpp::ParameterValue param_value;

Expand All @@ -390,10 +391,34 @@ void CompressedPublisher::declareParameter(

// transport scoped parameter as default, otherwise we would overwrite
try {
node_->declare_parameter(deprecated_name, param_value, definition.descriptor);
node_->declare_parameter(deprecated_non_scoped_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}

if (node_->get_effective_namespace().length() > 1) {
// deprecated parameters starting with the dot character (e.g. .image_raw.compressed.format)
const std::string deprecated_dot_name = "." + base_name + "." + transport_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_dot_name);

// deprecated non-scoped parameters starting with the dot character (e.g. .image_raw.format)
const std::string deprecated_non_scoped_dot_name = "." + base_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_dot_name);

try {
node_->declare_parameter(deprecated_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}

try {
node_->declare_parameter(deprecated_non_scoped_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}
}
}

void CompressedPublisher::onParameterEvent(
Expand All @@ -419,9 +444,14 @@ void CompressedPublisher::onParameterEvent(
// name was generated from base_name, has to succeed
size_t baseNameIndex = name.find(base_name);
size_t paramNameIndex = baseNameIndex + base_name.size();
// e.g. `color.image_raw.` + `compressed` + `format`
std::string recommendedName = name.substr(0,
paramNameIndex + 1) + transport + name.substr(paramNameIndex);

// Check if scoped parameter name
if (name.substr(paramNameIndex + 1, transport.size()) == transport) {
paramNameIndex += transport.size() + 1;
}

std::string recommendedName = base_name + "." + transport + "." +
name.substr(paramNameIndex + 1);

rclcpp::Parameter recommendedValue = node_->get_parameter(recommendedName);

Expand All @@ -430,8 +460,9 @@ void CompressedPublisher::onParameterEvent(
continue;
}

RCLCPP_WARN_STREAM(logger_, "parameter `" << name << "` is deprecated and ambiguous" <<
"; use transport qualified name `" << recommendedName << "`");
RCLCPP_WARN_STREAM(logger_,
"parameter `" << name << "` is deprecated; use canonical transport qualified name `" <<
recommendedName << "`");

node_->set_parameter(rclcpp::Parameter(recommendedName, it.second->value));
}
Expand Down
50 changes: 40 additions & 10 deletions theora_image_transport/src/theora_publisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,8 @@ void TheoraPublisher::advertiseImpl(

// Declare Parameters
uint ns_len = node->get_effective_namespace().length();
std::string param_base_name = base_topic.substr(ns_len);
uint ns_prefix_len = ns_len > 1 ? ns_len + 1 : ns_len;
std::string param_base_name = base_topic.substr(ns_prefix_len);
std::replace(param_base_name.begin(), param_base_name.end(), '/', '.');

using callbackT = std::function<void(ParameterEvent::SharedPtr event)>;
Expand Down Expand Up @@ -426,8 +427,8 @@ void TheoraPublisher::declareParameter(
parameters_.push_back(param_name);

// deprecated non-scoped parameter name (e.g. image_raw.quality)
const std::string deprecated_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_name);
const std::string deprecated_non_scoped_name = base_name + "." + definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_name);

rclcpp::ParameterValue param_value;

Expand All @@ -441,10 +442,33 @@ void TheoraPublisher::declareParameter(

// transport scoped parameter as default, otherwise we would overwrite
try {
node_->declare_parameter(deprecated_name, param_value, definition.descriptor);
node_->declare_parameter(deprecated_non_scoped_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
node_->get_parameter(deprecated_name).get_parameter_value();
}

if (node_->get_effective_namespace().length() > 1) {
// deprecated parameters starting with the dot character (e.g. .image_raw.compressed.format)
const std::string deprecated_dot_name = "." + base_name + "." + transport_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_dot_name);

// deprecated non-scoped parameters starting with the dot character (e.g. .image_raw.format)
const std::string deprecated_non_scoped_dot_name = "." + base_name + "." +
definition.descriptor.name;
deprecatedParameters_.push_back(deprecated_non_scoped_dot_name);

try {
node_->declare_parameter(deprecated_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}

try {
node_->declare_parameter(deprecated_non_scoped_dot_name, param_value, definition.descriptor);
} catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException &) {
RCLCPP_DEBUG(logger_, "%s was previously declared", definition.descriptor.name.c_str());
}
}
}

Expand Down Expand Up @@ -472,9 +496,14 @@ void TheoraPublisher::onParameterEvent(
// name was generated from base_name, has to succeed
size_t baseNameIndex = name.find(base_name);
size_t paramNameIndex = baseNameIndex + base_name.size();
// e.g. `color.image_raw.` + `theora` + `quality`
std::string recommendedName = name.substr(0,
paramNameIndex + 1) + transport + name.substr(paramNameIndex);

// Check if scoped parameter name
if (name.substr(paramNameIndex + 1, transport.size()) == transport) {
paramNameIndex += transport.size() + 1;
}

std::string recommendedName = base_name + "." + transport + "." +
name.substr(paramNameIndex + 1);

rclcpp::Parameter recommendedValue = node_->get_parameter(recommendedName);

Expand All @@ -483,8 +512,9 @@ void TheoraPublisher::onParameterEvent(
continue;
}

RCLCPP_WARN_STREAM(logger_, "parameter `" << name << "` is deprecated" <<
"; use transport qualified name `" << recommendedName << "`");
RCLCPP_WARN_STREAM(logger_,
"parameter `" << name << "` is deprecated; use canonical transport qualified name `" <<
recommendedName << "`");

node_->set_parameter(rclcpp::Parameter(recommendedName, it.second->value));
}
Expand Down
3 changes: 2 additions & 1 deletion zstd_image_transport/src/zstd_publisher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ void ZstdPublisher::advertiseImpl(

// Declare Parameters
unsigned int ns_len = node->get_effective_namespace().length();
std::string param_base_name = base_topic.substr(ns_len);
uint ns_prefix_len = ns_len > 1 ? ns_len + 1 : ns_len;
std::string param_base_name = base_topic.substr(ns_prefix_len);
std::replace(param_base_name.begin(), param_base_name.end(), '/', '.');

for (const ParameterDefinition & pd : kParameters) {
Expand Down