Commit 6141adc3 authored by Pavel Vainerman's avatar Pavel Vainerman

(unet-udp-tester): добавил возможность задавать конкретный список посылаемых

данных в виде id=val,id2=val2,...
parent 6434f4d8
......@@ -21,7 +21,7 @@ libUniSet2UNetUDP_la_SOURCES = UDPPacket.cc UNetReceiver.cc UNetSender.cc UNetE
@PACKAGE@_unet_udp_tester_SOURCES = UDPPacket.cc unet-udp-tester.cc
@PACKAGE@_unet_udp_tester_LDADD = $(POCO_LIBS)
@PACKAGE@_unet_udp_tester_LDADD = $(top_builddir)/lib/libUniSet2.la $(POCO_LIBS)
@PACKAGE@_unet_udp_tester_CXXFLAGS = $(POCO_CFLAGS)
# install
......
......@@ -27,6 +27,8 @@ static struct option longopts[] =
{ "verbode", required_argument, 0, 'v' },
{ "num-cycles", required_argument, 0, 'z' },
{ "prof", required_argument, 0, 'y' },
{ "a-data", required_argument, 0, 'a' },
{ "d-data", required_argument, 0, 'i' },
{ NULL, 0, 0, 0 }
};
// --------------------------------------------------------------------------
......@@ -74,10 +76,12 @@ int main(int argc, char* argv[])
bool show = false;
size_t ncycles = 0;
unsigned int nprof = 0;
std::string d_data = "";
std::string a_data = "";
while(1)
{
opt = getopt_long(argc, argv, "hs:c:r:p:n:t:x:blvdz:y:", longopts, &optindex);
opt = getopt_long(argc, argv, "hs:c:r:p:n:t:x:blvdz:y:a:i:", longopts, &optindex);
if( opt == -1 )
break;
......@@ -99,6 +103,8 @@ int main(int argc, char* argv[])
cout << "[-d|--show-data] - show receive data." << endl;
cout << "[-z|--num-cycles] num - Number of cycles of exchange. Default: -1 - infinitely." << endl;
cout << "[-y|--prof] num - Print receive statistics every NUM packets (for -r only)" << endl;
cout << "[-a|--a-data] id1=val1,id2=val2,... - Analog data. Send: id1=id1,id2=id2,.. for analog sensors" << endl;
cout << "[-i|--d-data] id1=val1,id2=val2,... - Digital data. Send: id1=id1,id2=id2,.. for digital sensors" << endl;
cout << endl;
return 0;
......@@ -112,6 +118,14 @@ int main(int argc, char* argv[])
cmd = cmdSend;
break;
case 'a':
a_data = string(optarg);
break;
case 'i':
d_data = string(optarg);
break;
case 't':
tout = atoi(optarg);
break;
......@@ -296,14 +310,35 @@ int main(int argc, char* argv[])
mypack.nodeID = nodeID;
mypack.procID = procID;
if( !a_data.empty() )
{
auto vlist = UniSetTypes::getSInfoList(a_data,nullptr);
for( const auto& v: vlist )
{
UDPAData d(v.si.id, v.val);
mypack.addAData(d);
}
}
else
{
for( size_t i = 0; i < count; i++ )
{
UDPAData d(i, i);
mypack.addAData(d);
}
}
if( !d_data.empty() )
{
auto vlist = UniSetTypes::getSInfoList(d_data,nullptr);
for( const auto& v: vlist )
mypack.addDData(v.si.id,v.val);
}
else
{
for( size_t i = 0; i < count; i++ )
mypack.addDData(i, i);
}
Poco::Net::SocketAddress sa(s_host, port);
udp->connect(sa);
......
......@@ -280,9 +280,6 @@ bool UniSetTypes::is_digit( const std::string& s )
// --------------------------------------------------------------------------------------
std::list<UniSetTypes::ParamSInfo> UniSetTypes::getSInfoList( const string& str, std::shared_ptr<Configuration> conf )
{
if( conf == nullptr )
conf = uniset_conf();
std::list<UniSetTypes::ParamSInfo> res;
auto lst = UniSetTypes::explode_str(str, ',');
......@@ -317,7 +314,7 @@ std::list<UniSetTypes::ParamSInfo> UniSetTypes::getSInfoList( const string& str,
{
std::string s_id = *(t.begin());
if( is_digit(s_id) )
if( is_digit(s_id) || !conf )
item.si.id = uni_atoi(s_id);
else
item.si.id = conf->getSensorID(s_id);
......@@ -329,12 +326,12 @@ std::list<UniSetTypes::ParamSInfo> UniSetTypes::getSInfoList( const string& str,
std::string s_id = *(t.begin());
std::string s_node = *(++t.begin());
if( is_digit(s_id) )
if( is_digit(s_id) || !conf )
item.si.id = uni_atoi(s_id);
else
item.si.id = conf->getSensorID(s_id);
if( is_digit(s_node) )
if( is_digit(s_node) || !conf )
item.si.node = uni_atoi(s_node);
else
item.si.node = conf->getNodeID(s_node);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment