From 6598b15d88d1c5d98119423dd4366296eda0ec7b Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Mon, 23 Mar 2015 18:14:44 +0300 Subject: [PATCH] ParamServer logic improvement --- libuavcan/src/protocol/uc_param_server.cpp | 6 ++++++ libuavcan/test/protocol/param_server.cpp | 2 ++ 2 files changed, 8 insertions(+) diff --git a/libuavcan/src/protocol/uc_param_server.cpp b/libuavcan/src/protocol/uc_param_server.cpp index 1062332d3b..0a02a97e3e 100644 --- a/libuavcan/src/protocol/uc_param_server.cpp +++ b/libuavcan/src/protocol/uc_param_server.cpp @@ -33,6 +33,12 @@ void ParamServer::handleGetSet(const protocol::param::GetSet::Request& in, proto out.name = in.name; } + if (out.name.empty()) + { + UAVCAN_TRACE("ParamServer", "GetSet: Can't resolve parameter name, index=%i", int(in.index)); + return; + } + // Assign if needed, read back if (isValueNonEmpty(in.value)) { diff --git a/libuavcan/test/protocol/param_server.cpp b/libuavcan/test/protocol/param_server.cpp index 861ca41cd3..e43c8f4e43 100644 --- a/libuavcan/test/protocol/param_server.cpp +++ b/libuavcan/test/protocol/param_server.cpp @@ -27,6 +27,7 @@ struct ParamServerTestManager : public uavcan::IParamManager virtual void assignParamValue(const ParamName& name, const ParamValue& value) { + assert(!name.empty()); std::cout << "ASSIGN [" << name.c_str() << "]\n" << value << "\n---" << std::endl; KeyValue::iterator it = kv.find(name.c_str()); if (it != kv.end()) @@ -56,6 +57,7 @@ struct ParamServerTestManager : public uavcan::IParamManager virtual void readParamValue(const ParamName& name, ParamValue& out_value) const { + assert(!name.empty()); KeyValue::const_iterator it = kv.find(name.c_str()); if (it != kv.end()) {