From 1e44d5d468af5521c1a1ea6ee7ea3eb513e95046 Mon Sep 17 00:00:00 2001
From: Daniele Nicolodi <daniele.nicolodi@ptb.de>
Date: Wed, 17 Aug 2022 18:12:25 +0200
Subject: [PATCH] Improve error reporting when no device is found

---
 dtdaq/__main__.py  | 11 ++++++++---
 dtdaq/enumerate.py | 11 ++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/dtdaq/__main__.py b/dtdaq/__main__.py
index 0ec7555..d29ea26 100644
--- a/dtdaq/__main__.py
+++ b/dtdaq/__main__.py
@@ -6,7 +6,7 @@ import time
 import click
 import colorama
 
-from .dtdaq import DTDaq
+from . import dtdaq
 
 
 @click.command()
@@ -18,8 +18,13 @@ from .dtdaq import DTDaq
 def main(device, fsampl, channel, gain, filename):
     colorama.init()
 
-    daq = DTDaq(device.encode('ascii'))
-    print(f'{daq.name} {daq.version} 0x{daq.hwinfo.serial:X}')
+    try:
+        daq = dtdaq.DTDaq(device.encode('ascii'))
+        print(f'{daq.name} {daq.version} 0x{daq.hwinfo.serial:X}')
+    except dtdaq.DTDaqError as exc:
+        if exc.errno == dtdaq.errno.OLCANNOTOPENDRIVER:
+            return click.echo(f'Error: {exc.message}. Device "{device}" not found.', err=True)
+        raise
 
     if len(gain) == 1:
         gain = list(gain) * len(channel)
diff --git a/dtdaq/enumerate.py b/dtdaq/enumerate.py
index 761b95c..3fa4708 100644
--- a/dtdaq/enumerate.py
+++ b/dtdaq/enumerate.py
@@ -1,11 +1,16 @@
 import click
-from .dtdaq import enum_boards
+from . import dtdaq
 
 
 @click.command()
 def main():
-    for board in enum_boards():
-        print(board.name)
+    try:
+        for board in dtdaq.enumerate_devices():
+            print(board.name)
+    except dtdaq.DTDaqError as exc:
+        if exc.errno == dtdaq.errno.OLNOBOARDSINSTALLED:
+            return print(f'{exc.message}.')
+        raise
 
 
 if __name__ == '__main__':
-- 
GitLab