ctrlX Data Layer API for Python  1.6.0
The ctrlX Data Layer API allows access to the ctrlX Data Layer with Python
clib.py
1 import ctypes
2 import os
3 import os.path
4 import platform
5 import sys
6 
7 # check architecture
8 arch = platform.machine()
9 print("System architecture: ", arch)
10 
11 # load libraries
12 if arch == "x86_64" or arch == "amd64":
13  basepath = os.path.dirname(__file__) + "/bin/x64"
14 elif arch == "aarch64":
15  basepath = os.path.dirname(__file__) + "/bin/arm64"
16 else:
17  sys.exit("Failed to load libraries: Unknown architecture")
18 
19 #ctypes.CDLL(os.path.abspath(os.path.join(basepath, "libsystemd.so")), mode=ctypes.RTLD_GLOBAL)
20 ctypes.CDLL("libsystemd.so.0", mode=ctypes.RTLD_GLOBAL)
21 __libzmq_name = os.path.abspath(os.path.join(basepath, "libzmq.so.5"))
22 if os.path.isfile(__libzmq_name):
23  ctypes.CDLL(__libzmq_name, mode=ctypes.RTLD_GLOBAL)
24 else:
25  sys.exit("Failed to load libraries: '{}' does not exists".format(__libzmq_name))
26 
27 libcomm_datalayer = None
28 __libname = os.path.abspath(os.path.join(basepath, "libcomm_datalayer.so"))
29 if os.path.isfile(__libname):
30  libcomm_datalayer = ctypes.CDLL(__libname)
31 else:
32  sys.exit("Failed to load libraries: '{}' does not exists".format(__libname))
33 
34 # typedef enum DLR_RESULT
35 C_DLR_RESULT = ctypes.c_int32
36 
37 # typedef void *DLR_CONVERTER;
38 C_DLR_CONVERTER = ctypes.c_void_p
39 
40 userData_c_void_p = ctypes.c_void_p
41 address_c_char_p = ctypes.c_char_p