diff --git a/src/wmbus_rawtty.cc b/src/wmbus_rawtty.cc index 89f35ad..8bcd559 100644 --- a/src/wmbus_rawtty.cc +++ b/src/wmbus_rawtty.cc @@ -66,7 +66,19 @@ shared_ptr openRawTTYInternal(Detected detected, string device = detected.found_file; int bps = detected.found_bps; - assert(device != ""); + if (detected.specified_device.command != "") + { + string identifier = "cmd_" + to_string(detected.specified_device.index); + + vector args; + vector envs; + args.push_back("-c"); + args.push_back(detected.specified_device.command); + + auto serial = manager->createSerialDeviceCommand(identifier, "/bin/sh", args, envs, "rawtty"); + WMBusRawTTY *imp = new WMBusRawTTY(bus_alias, serial, manager, use_hex); + return shared_ptr(imp); + } if (serial_override) { diff --git a/tests/test_nc1.sh b/tests/test_nc1.sh index d979e9a..e4467c0 100755 --- a/tests/test_nc1.sh +++ b/tests/test_nc1.sh @@ -1,5 +1,10 @@ #!/bin/bash +if nc 2>&1 | grep -q apple +then + exit 0 +fi + PROG="$1" TEST=testoutput @@ -13,7 +18,7 @@ TESTRESULT="ERROR" PORT=$(( $RANDOM % 10000 + 30000 )) rm -f $TEST/response -$PROG --silent --oneshot --format=fields --selectfields=total_m3 "rtlwmbus:CMD(nc -lkv $PORT)" MyWater iperl 33225544 NOKEY >> $TEST/response 2>&1 & +$PROG --silent --oneshot --exitafter=5s --format=fields --selectfields=total_m3 "rtlwmbus:CMD(nc -lkv $PORT)" MyWater iperl 33225544 NOKEY >> $TEST/response 2>&1 & sleep 0.5