class Appl: numArg function added; ebusd_send: get, set, cyc commands implemented.

This commit is contained in:
Roland Jax
2014-06-03 10:55:06 +02:00
parent 938cc31902
commit 413af597bd
3 changed files with 31 additions and 12 deletions
+14 -5
View File
@@ -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<const char*>("p_server"), A.getParam<int>("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());
+10 -3
View File
@@ -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;
+7 -4
View File
@@ -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<std::string> m_argv;
@@ -99,6 +97,11 @@ private:
std::map<const char*, Param> m_params;
std::map<const char*, Param>::iterator p_it;
std::string m_argTxt;
int m_argNum;
std::vector<std::string> m_argValues;
bool checkArg(const std::string& name, const std::string& arg);
void addParam(const char* name, Param param) { m_params[name] = param; }