From c4271bc43c8864eec29d1c228addce6fd737c95e Mon Sep 17 00:00:00 2001 From: bb-froggy Date: Thu, 7 Apr 2022 21:23:55 +0200 Subject: [PATCH] Allow CMD for CUL device --- src/wmbus_cul.cc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/wmbus_cul.cc b/src/wmbus_cul.cc index f6aca82..244badf 100644 --- a/src/wmbus_cul.cc +++ b/src/wmbus_cul.cc @@ -85,7 +85,6 @@ private: shared_ptr openCUL(Detected detected, shared_ptr manager, shared_ptr serial_override) { string bus_alias = detected.specified_device.bus_alias; - string device = detected.found_file; if (serial_override) { WMBusCUL *imp = new WMBusCUL(bus_alias, serial_override, manager); @@ -93,7 +92,22 @@ shared_ptr openCUL(Detected detected, shared_ptr(imp); } - auto serial = manager->createSerialDeviceTTY(device.c_str(), 38400, PARITY::NONE, "cul"); + 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, "cul"); + WMBusCUL *imp = new WMBusCUL(bus_alias, serial, manager); + return shared_ptr(imp); + } + + string device = detected.found_file; + auto serial = manager->createSerialDeviceTTY(device.c_str(), 38400, PARITY::NONE, "cul"); WMBusCUL *imp = new WMBusCUL(bus_alias, serial, manager); return shared_ptr(imp); }