Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enabled support for DAQmxSelfCal #460

Merged
merged 13 commits into from
Dec 19, 2023
4 changes: 4 additions & 0 deletions generated/nidaqmx/_base_interpreter.py
Original file line number Diff line number Diff line change
Expand Up @@ -1345,6 +1345,10 @@ def save_scale(self, scale_name, save_as, author, options):
def save_task(self, task, save_as, author, options):
raise NotImplementedError

@abc.abstractmethod
def self_cal(self, device_name):
raise NotImplementedError
zhindes marked this conversation as resolved.
Show resolved Hide resolved

@abc.abstractmethod
def self_test_device(self, device_name):
raise NotImplementedError
Expand Down
5 changes: 5 additions & 0 deletions generated/nidaqmx/_grpc_interpreter.py
Original file line number Diff line number Diff line change
Expand Up @@ -2758,6 +2758,11 @@ def save_task(self, task, save_as, author, options):
task=task, save_as=save_as, author=author,
options_raw=options))

def self_cal(self, device_name):
response = self._invoke(
self._client.SelfCal,
grpc_types.SelfCalRequest(device_name=device_name))

def self_test_device(self, device_name):
response = self._invoke(
self._client.SelfTestDevice,
Expand Down
3 changes: 3 additions & 0 deletions generated/nidaqmx/_library_interpreter.py
Original file line number Diff line number Diff line change
Expand Up @@ -4632,6 +4632,9 @@ def save_task(self, task, save_as, author, options):
task, save_as, author, options)
self.check_for_error(error_code)

def self_cal(self, device_name):
zhindes marked this conversation as resolved.
Show resolved Hide resolved
raise NotImplementedError

def self_test_device(self, device_name):
cfunc = lib_importer.windll.DAQmxSelfTestDevice
if cfunc.argtypes is None:
Expand Down
115 changes: 93 additions & 22 deletions src/codegen/metadata/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -12518,13 +12518,23 @@
'calling_convention': 'StdCall',
'parameters': [
{
'ctypes_data_type': 'ctypes.c_char_p',
'direction': 'in',
'is_optional_in_python': False,
'name': 'deviceName',
'python_data_type': 'str',
'python_description': '',
'python_type_annotation': 'str',
'type': 'const char[]'
},
{
'ctypes_data_type': 'c_bool32',
'direction': 'out',
'is_optional_in_python': False,
'name': 'calSupported',
'python_data_type': 'bool',
'python_description': '',
'python_type_annotation': 'bool',
'type': 'bool32'
}
],
Expand Down Expand Up @@ -15391,33 +15401,63 @@
'calling_convention': 'StdCall',
'parameters': [
{
'ctypes_data_type': 'ctypes.c_char_p',
'direction': 'in',
'is_optional_in_python': False,
'name': 'deviceName',
'python_data_type': 'str',
'python_description': '',
'python_type_annotation': 'str',
'type': 'const char[]'
},
{
'ctypes_data_type': 'ctypes.c_uint',
'direction': 'out',
'is_optional_in_python': False,
'name': 'year',
'python_data_type': 'int',
'python_description': '',
'python_type_annotation': 'int',
'type': 'uInt32'
},
{
'ctypes_data_type': 'ctypes.c_uint',
'direction': 'out',
'is_optional_in_python': False,
'name': 'month',
'python_data_type': 'int',
'python_description': '',
'python_type_annotation': 'int',
'type': 'uInt32'
},
{
'ctypes_data_type': 'ctypes.c_uint',
'direction': 'out',
'is_optional_in_python': False,
'name': 'day',
'python_data_type': 'int',
'python_description': '',
'python_type_annotation': 'int',
'type': 'uInt32'
},
{
'ctypes_data_type': 'ctypes.c_uint',
'direction': 'out',
'is_optional_in_python': False,
'name': 'hour',
'python_data_type': 'int',
'python_description': '',
'python_type_annotation': 'int',
'type': 'uInt32'
},
{
'ctypes_data_type': 'ctypes.c_uint',
'direction': 'out',
'is_optional_in_python': False,
'name': 'minute',
'python_data_type': 'int',
'python_description': '',
'python_type_annotation': 'int',
'type': 'uInt32'
}
],
Expand Down Expand Up @@ -17146,7 +17186,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadAnalogScalarF64': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17291,7 +17332,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadBinaryI32': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17385,7 +17427,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadBinaryU16': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17480,7 +17523,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadBinaryU32': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17574,7 +17618,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCounterF64': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17657,7 +17702,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCounterF64Ex': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17751,7 +17797,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCounterScalarF64': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -17934,7 +17981,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCounterU32Ex': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18028,7 +18076,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCtrFreq': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18134,7 +18183,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCtrFreqScalar': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18298,7 +18348,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCtrTicksScalar': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18464,7 +18515,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadCtrTimeScalar': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18626,7 +18678,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadDigitalScalarU32': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18771,7 +18824,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadDigitalU32': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18865,7 +18919,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadDigitalU8': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -18959,7 +19014,8 @@
}
],
'python_codegen_method': 'CustomCode',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadPowerBinaryI16': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -19026,7 +19082,8 @@
}
],
'python_codegen_method': 'no',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadPowerF64': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -19091,7 +19148,8 @@
}
],
'python_codegen_method': 'no',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'ReadPowerScalarF64': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -19243,7 +19301,8 @@
}
],
'python_codegen_method': 'no',
'returns': 'int32'
'returns': 'int32',
'timeout_error': 'DAQmxErrorSamplesNotYetAvailable'
},
'RegisterDoneEvent': {
'calling_convention': 'StdCall',
Expand Down Expand Up @@ -20069,14 +20128,26 @@
},
'SelfCal': {
'calling_convention': 'StdCall',
'handle_parameter': {
'ctypes_data_type': 'ctypes.c_char_p',
'cvi_name': 'deviceName',
'python_accessor': 'self._name'
},
'parameters': [
{
'ctypes_data_type': 'ctypes.c_char_p',
'direction': 'in',
'is_optional_in_python': False,
'name': 'deviceName',
'type': 'const char[]'
'python_data_type': 'str',
'python_description': '',
'python_type_annotation': 'str',
'type': 'const char[]',
'use_in_python_api': False
}
],
'python_codegen_method': 'no',
'python_class_name': 'Device',
'python_description': 'Measures the onboard reference voltage of the device and adjusts the self-calibration constants to account for any errors caused by short-term fluctuations in the operating environment. When you self-calibrate a device, no external signal connections are necessary.',
'returns': 'int32'
},
'SelfTestDevice': {
Expand Down Expand Up @@ -25001,4 +25072,4 @@
'python_description': 'Writes data from a virtual TEDS file to the TEDS sensor.',
'returns': 'int32'
}
}
}
24 changes: 24 additions & 0 deletions src/codegen/metadata/functions_addon.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,5 +133,29 @@
},
'WriteRaw':{
'python_codegen_method': 'CustomCode_Write',
},
zhindes marked this conversation as resolved.
Show resolved Hide resolved
'SelfCal': {
'calling_convention': 'StdCall',
'handle_parameter': {
'ctypes_data_type': 'ctypes.c_char_p',
'cvi_name': 'deviceName',
'python_accessor': 'self._name'
},
'parameters': [
{
'ctypes_data_type': 'ctypes.c_char_p',
'direction': 'in',
'is_optional_in_python': False,
'name': 'deviceName',
'python_data_type': 'str',
'python_description': '',
'python_type_annotation': 'str',
'type': 'const char[]',
'use_in_python_api': False
}
],
'python_class_name': 'Device',
'python_description': 'Measures the onboard reference voltage of the device and adjusts the self-calibration constants to account for any errors caused by short-term fluctuations in the operating environment. When you self-calibrate a device, no external signal connections are necessary.',
'returns': 'int32'
}
}
1 change: 0 additions & 1 deletion src/codegen/utilities/interpreter_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
"GetCalInfoAttributeString",
"GetCalInfoAttributeUInt32",
"GetSelfCalLastDateAndTime",
"SelfCal",
"SetCalInfoAttributeBool",
"SetCalInfoAttributeDouble",
"SetCalInfoAttributeString",
Expand Down
3 changes: 3 additions & 0 deletions tests/component/system/test_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ def test___devices_with_different_names___hash___not_equal(init_kwargs):
device2 = Device("tsVoltageTester1", **init_kwargs)

assert hash(device1) != hash(device2)

def test___self_cal___no_errors(any_x_series_device: Device) -> None:
any_x_series_device.self_cal()