Skip to content

Commit 93b5c85

Browse files
authored
Add enable_match_fail_combination method to nidigital API (#2076)
* Add enable_match_fail_combination * Add a system test * Update changelog * Fix typo * Use pattern and spec files from LabVIEW example and apply levels and timing before calling method * Correct mistake in library_interpreter method * Fix flake8 failure * Added the requested comment
1 parent 075ce82 commit 93b5c85

File tree

18 files changed

+255
-0
lines changed

18 files changed

+255
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ All notable changes to this project will be documented in this file.
5353
* #### Removed
5454
* ### `nidigital` (NI-Digital Pattern Driver)
5555
* #### Added
56+
* Methods Added:
57+
* `enable_match_fail_combination`
5658
* #### Changed
5759
* #### Removed
5860
* ### `nidmm` (NI-DMM)

build/templates/tox-system_tests.ini.mako

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ deps =
7373
% if uses_other_wheel:
7474
${wheel_env_no_py}: build
7575

76+
% endif
77+
% if module_name == 'nidigital':
78+
${module_name}-system_tests: nisync
7679
% endif
7780
${module_name}-system_tests: pytest
7881
${module_name}-system_tests: coverage

docs/nidigital/class.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,6 +1326,19 @@ disable_sites
13261326
Example: :py:meth:`my_session.disable_sites`
13271327
13281328
1329+
enable_match_fail_combination
1330+
-----------------------------
1331+
1332+
.. py:currentmodule:: nidigital.Session
1333+
1334+
.. py:method:: enable_match_fail_combination()
1335+
1336+
Configures digital pattern instruments and the PXIe-6674T timing and synchronization instrument to combine pattern comparison results and control subsequent pattern execution across digital pattern instruments based on those results. You must initialize the PXIe-6674T using NI-Sync and call this method from a multi-instrument session.
1337+
1338+
1339+
1340+
1341+
13291342
enable_sites
13301343
------------
13311344

generated/nidigital/nidigital/_library.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def __init__(self, ctypes_library):
4949
self.niDigital_CreateTimeSet_cfunc = None
5050
self.niDigital_DeleteAllTimeSets_cfunc = None
5151
self.niDigital_DisableSites_cfunc = None
52+
self.niDigital_EnableMatchFailCombination_cfunc = None
5253
self.niDigital_EnableSites_cfunc = None
5354
self.niDigital_FetchCaptureWaveformU32_cfunc = None
5455
self.niDigital_FetchHistoryRAMCycleInformation_cfunc = None
@@ -346,6 +347,14 @@ def niDigital_DisableSites(self, vi, site_list): # noqa: N802
346347
self.niDigital_DisableSites_cfunc.restype = ViStatus # noqa: F405
347348
return self.niDigital_DisableSites_cfunc(vi, site_list)
348349

350+
def niDigital_EnableMatchFailCombination(self, session_count, sessions, sync_session): # noqa: N802
351+
with self._func_lock:
352+
if self.niDigital_EnableMatchFailCombination_cfunc is None:
353+
self.niDigital_EnableMatchFailCombination_cfunc = self._get_library_function('niDigital_EnableMatchFailCombination')
354+
self.niDigital_EnableMatchFailCombination_cfunc.argtypes = [ViUInt32, ctypes.POINTER(ViSession), ViSession] # noqa: F405
355+
self.niDigital_EnableMatchFailCombination_cfunc.restype = ViStatus # noqa: F405
356+
return self.niDigital_EnableMatchFailCombination_cfunc(session_count, sessions, sync_session)
357+
349358
def niDigital_EnableSites(self, vi, site_list): # noqa: N802
350359
with self._func_lock:
351360
if self.niDigital_EnableSites_cfunc is None:

generated/nidigital/nidigital/_library_interpreter.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,14 @@ def disable_sites(self, site_list): # noqa: N802
366366
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
367367
return
368368

369+
def enable_match_fail_combination(self, sessions, sync_session): # noqa: N802
370+
session_count_ctype = _visatype.ViUInt32(0 if sessions is None else len(sessions)) # case S160
371+
sessions_ctype = _get_ctypes_pointer_for_buffer(value=sessions, library_type=_visatype.ViSession) # case B550
372+
sync_session_ctype = _visatype.ViSession(sync_session) # case S110
373+
error_code = self._library.niDigital_EnableMatchFailCombination(session_count_ctype, sessions_ctype, sync_session_ctype)
374+
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
375+
return
376+
369377
def enable_sites(self, site_list): # noqa: N802
370378
vi_ctype = _visatype.ViSession(self._vi) # case S110
371379
site_list_ctype = ctypes.create_string_buffer(site_list.encode(self._encoding)) # case C010

generated/nidigital/nidigital/session.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3429,6 +3429,14 @@ def delete_all_time_sets(self):
34293429
'''
34303430
self._interpreter.delete_all_time_sets()
34313431

3432+
@ivi_synchronized
3433+
def enable_match_fail_combination(self, sync_session):
3434+
'''enable_match_fail_combination
3435+
3436+
Configures digital pattern instruments and the PXIe-6674T timing and synchronization instrument to combine pattern comparison results and control subsequent pattern execution across digital pattern instruments based on those results. You must initialize the PXIe-6674T using NI-Sync and call this method from a multi-instrument session.
3437+
'''
3438+
self._interpreter.enable_match_fail_combination([self._interpreter.get_session_handle()], sync_session.session_handle)
3439+
34323440
@ivi_synchronized
34333441
def load_specifications_levels_and_timing(self, specifications_file_paths=None, levels_file_paths=None, timing_file_paths=None):
34343442
'''load_specifications_levels_and_timing

generated/nidigital/nidigital/unit_tests/_mock_helper.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ def __init__(self):
7272
self._defaults['DeleteAllTimeSets']['return'] = 0
7373
self._defaults['DisableSites'] = {}
7474
self._defaults['DisableSites']['return'] = 0
75+
self._defaults['EnableMatchFailCombination'] = {}
76+
self._defaults['EnableMatchFailCombination']['return'] = 0
7577
self._defaults['EnableSites'] = {}
7678
self._defaults['EnableSites']['return'] = 0
7779
self._defaults['FetchCaptureWaveformU32'] = {}
@@ -407,6 +409,11 @@ def niDigital_DisableSites(self, vi, site_list): # noqa: N802
407409
return self._defaults['DisableSites']['return']
408410
return self._defaults['DisableSites']['return']
409411

412+
def niDigital_EnableMatchFailCombination(self, session_count, sessions, sync_session): # noqa: N802
413+
if self._defaults['EnableMatchFailCombination']['return'] != 0:
414+
return self._defaults['EnableMatchFailCombination']['return']
415+
return self._defaults['EnableMatchFailCombination']['return']
416+
410417
def niDigital_EnableSites(self, vi, site_list): # noqa: N802
411418
if self._defaults['EnableSites']['return'] != 0:
412419
return self._defaults['EnableSites']['return']
@@ -1179,6 +1186,8 @@ def set_side_effects_and_return_values(self, mock_library):
11791186
mock_library.niDigital_DeleteAllTimeSets.return_value = 0
11801187
mock_library.niDigital_DisableSites.side_effect = MockFunctionCallError("niDigital_DisableSites")
11811188
mock_library.niDigital_DisableSites.return_value = 0
1189+
mock_library.niDigital_EnableMatchFailCombination.side_effect = MockFunctionCallError("niDigital_EnableMatchFailCombination")
1190+
mock_library.niDigital_EnableMatchFailCombination.return_value = 0
11821191
mock_library.niDigital_EnableSites.side_effect = MockFunctionCallError("niDigital_EnableSites")
11831192
mock_library.niDigital_EnableSites.return_value = 0
11841193
mock_library.niDigital_FetchCaptureWaveformU32.side_effect = MockFunctionCallError("niDigital_FetchCaptureWaveformU32")

generated/nidigital/tox-system_tests.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ commands =
3939
deps =
4040
nidigital-wheel_dep: build
4141

42+
nidigital-system_tests: nisync
4243
nidigital-system_tests: pytest
4344
nidigital-system_tests: coverage
4445
nidigital-system_tests: numpy

src/nidigital/metadata/functions_addon.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,3 +535,84 @@
535535
],
536536
},
537537
}
538+
539+
functions_additional_enable_match_fail_combination = {
540+
'EnableMatchFailCombination': {
541+
'codegen_method': 'yes',
542+
'method_templates': [
543+
{
544+
'documentation_filename': 'default_method',
545+
'library_interpreter_filename': 'enable_match_fail_combination',
546+
'method_python_name_suffix': '',
547+
'session_filename': 'none',
548+
}
549+
],
550+
'documentation': {
551+
'description': 'Configures digital pattern instruments and the PXIe-6674T timing and synchronization instrument to combine pattern comparison results and control subsequent pattern execution across digital pattern instruments based on those results. You must initialize the PXIe-6674T using NI-Sync and use the niTClk Synchronize function to synchronize instruments before calling the niDigital_EnableMatchFailCombination function.\n'
552+
},
553+
'included_in_proto': False,
554+
'parameters': [
555+
{
556+
'direction': 'in',
557+
'documentation': {
558+
'description': 'Number of sessions.\n'
559+
},
560+
'name': 'sessionCount',
561+
'type': 'ViUInt32'
562+
},
563+
{
564+
'direction': 'in',
565+
'documentation': {
566+
'description': 'The specified array of sessions synchronized using NI-TClk.\n'
567+
},
568+
'name': 'sessions',
569+
'size': {
570+
'mechanism': 'passed-in',
571+
'value': 'sessionCount'
572+
},
573+
'type': 'ViSession[]'
574+
},
575+
{
576+
'direction': 'in',
577+
'documentation': {
578+
'description': 'The specified NI-Sync session.\n'
579+
},
580+
'name': 'syncSession',
581+
'type': 'ViSession'
582+
}
583+
],
584+
'returns': 'ViStatus'
585+
},
586+
'FancyEnableMatchFailCombination': {
587+
'python_name': 'enable_match_fail_combination',
588+
'codegen_method': 'python-only',
589+
'method_templates': [
590+
{
591+
'documentation_filename': 'default_method',
592+
'library_interpreter_filename': 'none',
593+
'method_python_name_suffix': '',
594+
'session_filename': 'fancy_enable_match_fail_combination',
595+
}
596+
],
597+
'documentation': {
598+
'description': 'Configures digital pattern instruments and the PXIe-6674T timing and synchronization instrument to combine pattern comparison results and control subsequent pattern execution across digital pattern instruments based on those results. You must initialize the PXIe-6674T using NI-Sync and call this method from a multi-instrument session.\n'
599+
},
600+
'included_in_proto': True,
601+
'parameters': [
602+
{
603+
'direction': 'in',
604+
'name': 'vi',
605+
'type': 'ViSession'
606+
},
607+
{
608+
'direction': 'in',
609+
'documentation': {
610+
'description': 'The specified NI-Sync session.\n'
611+
},
612+
'name': 'syncSession',
613+
'type': 'ViSession'
614+
}
615+
],
616+
'returns': 'ViStatus'
617+
},
618+
}
Binary file not shown.

0 commit comments

Comments
 (0)