20"""Boston Micromachines deformable mirrors SDK.
25from ctypes
import c_char, c_char_p, c_double, c_int, c_uint, c_uint32
28if os.name
in (
"nt",
"ce"):
30 SDK = ctypes.WinDLL(
"BMC2")
32 SDK = ctypes.CDLL(
"libBMC.so.3")
47 (
"channel_count", c_uint),
48 (
"serial_number", c_char * (SERIAL_NUMBER_LEN + 1)),
49 (
"reserved", c_uint * 7),
53class DM(ctypes.Structure):
55 (
"Driver_Type", c_uint),
58 (
"use_fiber", c_uint),
60 (
"burst_mode", c_uint),
61 (
"fiber_mode", c_uint),
63 (
"MaxVoltage", c_uint),
64 (
"VoltageLimit", c_uint),
65 (
"mapping", c_char * MAX_PATH),
66 (
"inactive", c_uint * MAX_DM_SIZE),
67 (
"profiles_path", c_char * MAX_PATH),
68 (
"maps_path", c_char * MAX_PATH),
69 (
"cals_path", c_char * MAX_PATH),
70 (
"cal", c_char * MAX_PATH),
71 (
"serial_number", c_char * (SERIAL_NUMBER_LEN + 1)),
72 (
"driver", DM_DRIVER),
73 (
"priv", ctypes.POINTER(DM_PRIV)),
77DMHANDLE = ctypes.POINTER(DM)
93 func = getattr(SDK, name)
94 func.argtypes = argtypes
95 func.restype = restype
103 [DMHANDLE, ctypes.POINTER(c_double), ctypes.POINTER(c_uint32)],
107 "BMCGetArray", [DMHANDLE, ctypes.POINTER(c_double), c_uint32]
make_prototype(name, argtypes, restype=RC)