From 413af597bdc540de969eec4d7424131d31d41dd9 Mon Sep 17 00:00:00 2001 From: Roland Jax Date: Tue, 3 Jun 2014 10:55:06 +0200 Subject: [PATCH] class Appl: numArg function added; ebusd_send: get, set, cyc commands implemented. --- tools/ebusd_send.cpp | 19 ++++++++++++++----- utils/appl.cpp | 13 ++++++++++--- utils/appl.h | 11 +++++++---- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/tools/ebusd_send.cpp b/tools/ebusd_send.cpp index 51a14a8b..a66322d8 100644 --- a/tools/ebusd_send.cpp +++ b/tools/ebusd_send.cpp @@ -26,7 +26,12 @@ Appl& A = Appl::Instance(); void define_args() { - A.addArgs("type value", 2); + A.addArgs("Arg1 Arg2 Arg3 (Arg4)\n\n" + "Arg1-4:\n" + " get class cmd (sub)\n" + " set class cmd value\n" + " cyc class cmd (sub)\n" + " hex type value (value: ZZ PB SB NN Dx)", 3); A.addItem("p_server", Appl::Param("localhost"), "s", "server", "name or ip (localhost)", @@ -58,14 +63,18 @@ int main(int argc, char* argv[]) exit(EXIT_SUCCESS); } + // build message + std::string message(A.getArg(0)); + for (size_t i = 1; i < A.numArg(); i++) { + message += " "; + message += A.getArg(i); + } + TCPClient* client = new TCPClient(); TCPSocket* socket = client->connect(A.getParam("p_server"), A.getParam("p_port")); if (socket != NULL) { - std::string message("hex "); - message += A.getArg(1); - message += " "; - message += A.getArg(2); + socket->send(message.c_str(), message.size()); diff --git a/utils/appl.cpp b/utils/appl.cpp index 009104f4..7d1d020b 100644 --- a/utils/appl.cpp +++ b/utils/appl.cpp @@ -121,9 +121,16 @@ bool Appl::parseArgs(int argc, char* argv[]) // check args if (m_argNum > 0) { - for (int i = 0; i <= m_argNum; i++) - if (m_argv[m_argc - 1 - i].rfind("-", 0) != std::string::npos) - return false; + if (m_argc < (m_argNum + 1)) + return false; + + for (int i = 1; i < m_argc; i++) { + if (m_argv[i].rfind("-", 0) != std::string::npos) { + i++; + continue; + } + m_argValues.push_back(m_argv[i]); + } } return true; diff --git a/utils/appl.h b/utils/appl.h index 0d7e591b..2641848a 100644 --- a/utils/appl.h +++ b/utils/appl.h @@ -62,7 +62,8 @@ public: ~Appl(); void addArgs(const std::string argTxt, const int argNum); - std::string getArg(const int argNum) const { return m_argv[m_argc - 1 - m_argNum + argNum]; } + size_t numArg() const { return m_argValues.size(); } + std::string getArg(const int argNum) const { return m_argValues[argNum]; } void addItem(const char* name, Param param, const char* shortname, const char* longname, const char* description, @@ -87,9 +88,6 @@ private: Optiontype optiontype; }; - std::string m_argTxt; - int m_argNum; - int m_argc; std::vector m_argv; @@ -99,6 +97,11 @@ private: std::map m_params; std::map::iterator p_it; + std::string m_argTxt; + int m_argNum; + + std::vector m_argValues; + bool checkArg(const std::string& name, const std::string& arg); void addParam(const char* name, Param param) { m_params[name] = param; }