diff --git a/src/wmbus_cul.cc b/src/wmbus_cul.cc index a63374a..e4171f9 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); }