From 35d329fe12a4d0dddfe1e0ba77110a1a6e41948c Mon Sep 17 00:00:00 2001
From: Thomas Haag <thomas.haag@erdw.ethz.ch>
Date: Wed, 14 Nov 2018 14:33:14 +0100
Subject: [PATCH] - try to replace hardware driver - new route: replace
 interface to hardware

---
 dug_seis/acquisition/one_card.py           | 10 ++++--
 dug_seis/acquisition/one_card_std_init.py  | 15 +++++---
 dug_seis/acquisition/simulated_hardware.py | 11 ++++++
 dug_seis/acquisition/star_hub.py           | 10 ++++--
 log.txt                                    | 40 ++++++++++++++++++++++
 testByref.py                               | 32 +++++++++++++++++
 6 files changed, 108 insertions(+), 10 deletions(-)
 create mode 100644 dug_seis/acquisition/simulated_hardware.py
 create mode 100644 log.txt
 create mode 100644 testByref.py

diff --git a/dug_seis/acquisition/one_card.py b/dug_seis/acquisition/one_card.py
index 03115a6..548ff61 100644
--- a/dug_seis/acquisition/one_card.py
+++ b/dug_seis/acquisition/one_card.py
@@ -8,12 +8,17 @@ import logging
 
 import dug_seis.acquisition.hardware_driver.regs as regs
 import dug_seis.acquisition.hardware_driver.spcerr as err
+from ctypes import byref, c_int32
 
 from dug_seis.acquisition.one_card_std_init import init_card as sdt_init_card
 
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetParam_i32, spcm_vClose
+if True:
+    print("Simulating hardware")
+else:
+    print("Running on real hardware")
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetParam_i32, spcm_vClose
+
 
-from ctypes import byref, c_int32
 
 
 class Card:
@@ -31,6 +36,7 @@ class Card:
         """Initialise card. Setup card parameters. Reserve buffers for DMA data transfer."""
         logging.info("init card: {}\n".format(self.card_nr))
         if self.card_nr == 0 or self.card_nr == 1:
+            print(sdt_init_card(param, self.card_nr))
             self.h_card, self.pv_buffer = sdt_init_card(param, self.card_nr)
         else:
             logging.error("card_nr needs to be 0 or 1, received:{}".format(self.card_nr))
diff --git a/dug_seis/acquisition/one_card_std_init.py b/dug_seis/acquisition/one_card_std_init.py
index aac7a97..523397f 100644
--- a/dug_seis/acquisition/one_card_std_init.py
+++ b/dug_seis/acquisition/one_card_std_init.py
@@ -5,14 +5,19 @@
 import logging
 import dug_seis.acquisition.hardware_driver.regs as regs
 
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwGetParam_i32
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetContBuf_i64
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwDefTransfer_i64
-from dug_seis.acquisition.hardware_driver.pyspcm import SPCM_BUF_DATA, SPCM_DIR_CARDTOPC
-
 from ctypes import c_int32, c_uint64
 from ctypes import create_string_buffer, byref, c_void_p
 
+if True:
+    print("Simulating hardware")
+    from dug_seis.acquisition.simulated_hardware import spcm_hOpen, spcm_dwGetParam_i32
+else:
+    print("Running on real hardware")
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwGetParam_i32
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetContBuf_i64
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwDefTransfer_i64
+    from dug_seis.acquisition.hardware_driver.pyspcm import SPCM_BUF_DATA, SPCM_DIR_CARDTOPC
+
 
 def sz_type_to_name(l_card_type):
     """sz_type_to_name: doing name translation."""
diff --git a/dug_seis/acquisition/simulated_hardware.py b/dug_seis/acquisition/simulated_hardware.py
new file mode 100644
index 0000000..6b7b795
--- /dev/null
+++ b/dug_seis/acquisition/simulated_hardware.py
@@ -0,0 +1,11 @@
+from ctypes import byref
+
+
+def spcm_hOpen(dev):
+    print("simulating {}".format(dev))
+    return "card", "buffer"
+
+
+def spcm_dwGetParam_i32(h_card, reg, card_type):
+    print(card_type)
+
diff --git a/dug_seis/acquisition/star_hub.py b/dug_seis/acquisition/star_hub.py
index bca6b6e..712d6c7 100644
--- a/dug_seis/acquisition/star_hub.py
+++ b/dug_seis/acquisition/star_hub.py
@@ -11,12 +11,16 @@ stop and synchronise the cards.
 import logging
 import dug_seis.acquisition.hardware_driver.regs as regs
 
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwSetParam_i32, spcm_dwGetParam_i32
-from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwGetErrorInfo_i32, spcm_vClose
 from ctypes import create_string_buffer, byref
-
 from ctypes import c_int32
 
+if True:
+    print("Simulating hardware")
+else:
+    print("Running on real hardware")
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwSetParam_i32, spcm_dwGetParam_i32
+    from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwGetErrorInfo_i32, spcm_vClose
+
 
 class StarHub:
     def __init__(self):
diff --git a/log.txt b/log.txt
new file mode 100644
index 0000000..512505f
--- /dev/null
+++ b/log.txt
@@ -0,0 +1,40 @@
+2018-11-13 17:22:08,225 INFO    DUG-Seis started
+2018-11-13 17:22:08,245 INFO    Acquisition script started
+2018-11-13 17:22:08,245 INFO    init card: 0
+
+2018-11-13 17:22:08,246 ERROR   card 0 not found...
+
+2018-11-13 17:22:08,247 ERROR   card 0 not found...
+
+2018-11-13 17:23:26,441 INFO    DUG-Seis started
+2018-11-13 17:23:26,459 INFO    Acquisition script started
+2018-11-13 17:23:26,459 INFO    init card: 0
+
+2018-11-13 17:25:01,023 INFO    DUG-Seis started
+2018-11-13 17:25:01,041 INFO    Acquisition script started
+2018-11-13 17:25:01,041 INFO    init card: 0
+
+2018-11-14 13:39:00,987 INFO    DUG-Seis started
+2018-11-14 13:39:01,007 INFO    Acquisition script started
+2018-11-14 13:39:01,007 INFO    init card: 0
+
+2018-11-14 13:39:01,008 ERROR   Card: unknown type sn 00000 not supported by example
+
+2018-11-14 13:39:01,011 ERROR   Card: unknown type sn 00000 not supported by example
+
+2018-11-14 13:42:55,184 INFO    DUG-Seis started
+2018-11-14 13:42:55,202 INFO    Acquisition script started
+2018-11-14 13:42:55,203 INFO    init card: 0
+
+2018-11-14 13:42:55,204 ERROR   Card: unknown type sn 00000 not supported by example
+
+2018-11-14 13:42:55,206 ERROR   Card: unknown type sn 00000 not supported by example
+
+2018-11-14 14:03:57,058 INFO    DUG-Seis started
+2018-11-14 14:03:57,075 INFO    Acquisition script started
+2018-11-14 14:03:57,075 INFO    init card: 0
+
+2018-11-14 14:03:57,076 ERROR   Card: unknown type sn 00000 not supported by example
+
+2018-11-14 14:03:57,078 ERROR   Card: unknown type sn 00000 not supported by example
+
diff --git a/testByref.py b/testByref.py
new file mode 100644
index 0000000..d4e0734
--- /dev/null
+++ b/testByref.py
@@ -0,0 +1,32 @@
+
+from ctypes import c_int32, byref, cast, POINTER, pointer, addressof
+
+
+def f(x):
+    x._obj.value = 55
+    print("in func: {}".format(x._obj.value))
+
+
+l_card_type = c_int32(99)
+"""
+print(l_card_type)
+print(type(l_card_type))
+print(byref(l_card_type)) 
+print(type(byref(l_card_type)))
+print(l_card_type.value)
+print(type(l_card_type.value))
+"""
+
+f(byref(l_card_type))
+print(byref(l_card_type))
+
+pc = pointer(l_card_type)
+
+pc.contents.value = 77          # or pc[0] = 77
+
+print("{}".format(pc.contents.value))
+
+print(byref(pc))
+print(addressof(pc))
+print(l_card_type.value)
+
-- 
GitLab