From c53ca684f8b90db93d3163964a9dc63be3a6590c Mon Sep 17 00:00:00 2001 From: John Date: Sat, 9 Mar 2024 10:52:20 +0100 Subject: [PATCH] check answer command enabled more thoroughly, fix blank answer, more coverage --- src/ebusd/mainloop.cpp | 6 +++--- test_coverage.sh | 7 ++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ebusd/mainloop.cpp b/src/ebusd/mainloop.cpp index b7d0be1a2..323832508 100644 --- a/src/ebusd/mainloop.cpp +++ b/src/ebusd/mainloop.cpp @@ -485,7 +485,7 @@ result_t MainLoop::decodeRequest(Request* req, bool* connected, RequestMode* req return RESULT_OK; } if (cmd == "ANSWER") { - if (m_enableHex && !m_protocol->isReadOnly()) { + if (m_enableHex && m_protocol->isAnswering()) { return executeAnswer(args, ostream); } *ostream << "ERR: command not enabled"; @@ -1231,8 +1231,8 @@ result_t MainLoop::executeAnswer(const vector& args, ostringstream* ostr } } SlaveSymbolString answer; + answer.push_back(0); // room for length byte if (argPos > 0 && argPos < args.size()) { - answer.push_back(0); // room for length byte result_t ret = answer.parseHex(args[argPos++]); if (ret != RESULT_OK) { return ret; @@ -1240,8 +1240,8 @@ result_t MainLoop::executeAnswer(const vector& args, ostringstream* ostr if (answer.size() > 16) { return RESULT_ERR_INVALID_POS; } - answer.adjustHeader(); } + answer.adjustHeader(); if (argPos < args.size()) { argPos = 0; // print usage } diff --git a/test_coverage.sh b/test_coverage.sh index 67344a463..0e2a56d24 100755 --- a/test_coverage.sh +++ b/test_coverage.sh @@ -247,7 +247,7 @@ elif [[ -n "$1" ]]; then pid=$(ps -C ebusd -o pid=) done else - $ebusd -d tcp:127.0.0.1:8876 --initsend --latency 10 -n -c "$PWD/contrib/etc/ebusd" --pollinterval=10 -s --scanretries=0 -a 31 --acquireretries 3 --answer --generatesyn --receivetimeout 40000 --sendretries 1 --enablehex --htmlpath "$PWD/contrib/html" --httpport 8878 --pidfile "$PWD/ebusd.pid" --localhost -p 8877 -l "$PWD/ebusd.log" --logareas all --loglevel debug --lograwdata=bytes --lograwdatafile "$PWD/ebusd.raw" --lograwdatasize 1 --dumpfile "$PWD/ebusd.dump" --dumpsize 100 -D --scanconfig --aclfile="$PWD/acl.csv" --mqttport=1883 --enablehex --enabledefine + $ebusd -d tcp:127.0.0.1:8876 --initsend --latency 10 -n -c "$PWD/contrib/etc/ebusd" --pollinterval=10 -s --scanretries=0 -a 31 --acquireretries 3 --answer --generatesyn --receivetimeout 40000 --sendretries 1 --enablehex --htmlpath "$PWD/contrib/html" --httpport 8878 --pidfile "$PWD/ebusd.pid" --localhost -p 8877 -l "$PWD/ebusd.log" --logareas all --loglevel debug --lograwdata=bytes --lograwdatafile "$PWD/ebusd.raw" --lograwdatasize 1 --dumpfile "$PWD/ebusd.dump" --dumpsize 100 -D --scanconfig --aclfile="$PWD/acl.csv" --mqttport=1883 --enablehex --enabledefine --answer sleep 3 pid=`head -n 1 "$PWD/ebusd.pid"` fi @@ -336,6 +336,11 @@ a test testpass w -c mc.5 -d 53 installparam 123 hex fe070400 hex 53070400 +hex -s f0 -n fe07fe0102 +inject 3115b509030d1e00/02a85b +answer -d 50 0704 b5454850303003277201 +answer 0705 010203 +answer -s ff -m 0706 ab dump grab result grab result all