sispmctl_device: permit selecting a device
authorHelmut Grohne <helmut@subdivi.de>
Mon, 15 Jul 2013 08:01:13 +0000 (10:01 +0200)
committerHelmut Grohne <helmut@subdivi.de>
Mon, 15 Jul 2013 08:01:13 +0000 (10:01 +0200)
onoff/tools.py

index fd5e5f2..8ca9e91 100644 (file)
@@ -1,11 +1,22 @@
 from .command import OnoffCommand
 
-def sispmctl_device(sock):
+def sispmctl_device(sock, device=None):
     """Create an OnoffCommand that controls the specified socket on a sispmctl
     device.
 
     @type sock: int
     @param sock: the socket number of the sispmctl controlled device
+    @type device: None or int or str
+    @param device: optional identification of the device. If this is a number,
+            it is passed via -d. If it is a string, it is used as a serial and
+            passed via -D.
     """
-    return OnoffCommand(["sispmctl", "-o", "%d" % sock],
-                        ["sispmctl", "-f", "%d" % sock])
+    cmd = ["sispmctl"]
+    if isinstance(device, int):
+        cmd.extend(["-d", "%d" % device])
+    elif isinstance(device, str):
+        cmd.extend(["-D", device])
+    elif device is not None:
+        raise TypeError("passed device must be int, str or None")
+    sock = "%d" % sock
+    return OnoffCommand(cmd + ["-o", sock], cmd + ["-f", sock])