-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathsync_start.py
101 lines (89 loc) · 4 KB
/
sync_start.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Copyright (C) 2022-2025 Analog Devices, Inc.
#
# SPDX short identifier: ADIBSD
from adi.attribute import attribute
class sync_start(attribute):
""" Synchronization Control: This class allows for synchronous transfers
between transmit and receive data movement or captures.
"""
@property
def tx_sync_start(self):
""" tx_sync_start: Issue a synchronisation request
Possible values are:
- **arm**: Writing this key will arm the trigger mechanism sensitive to an
external sync signal. Once the external sync signal goes high
it synchronizes channels within a DAC, and across multiple
instances. This bit has an effect only the EXT_SYNC
synthesis parameter is set.
- **disarm**: Writing this key will disarm the trigger mechanism
sensitive to an external sync signal. This bit has an
effect only the EXT_SYNC synthesis parameter is set.
- **trigger_manual**: Writing this key will issue an external sync event
if it is hooked up inside the fabric. This key has an effect
only the EXT_SYNC synthesis parameter is set.
This key self clears.
"""
try:
return self._get_iio_dev_attr_str("sync_start_enable", _ctrl=self._txdac)
except: # noqa: E722
if self._txdac.reg_read(0x80000068) & 0x1 == 0x1:
return "arm"
else:
return "disarm"
@tx_sync_start.setter
def tx_sync_start(self, value):
try:
self._set_iio_dev_attr_str("sync_start_enable", value, _ctrl=self._txdac)
except: # noqa: E722
chan = self._txdac.find_channel("altvoltage0", True)
chan.attrs["raw"].value = "1"
@property
def tx_sync_start_available(self):
""" tx_sync_start_available: Returns a list of possible keys used for tx_sync_start """
try:
return self._get_iio_dev_attr_str(
"sync_start_enable_available", _ctrl=self._txdac
)
except: # noqa: E722
return "arm"
@property
def rx_sync_start(self):
""" rx_sync_start: Issue a synchronisation request
Possible values are:
- **arm**: Writing this key will arm the trigger mechanism sensitive to an
external sync signal. Once the external sync signal goes high
it synchronizes channels within a ADC, and across multiple
instances. This bit has an effect only the EXT_SYNC
synthesis parameter is set.
- **disarm**: Writing this key will disarm the trigger mechanism
sensitive to an external sync signal. This bit has an
effect only the EXT_SYNC synthesis parameter is set.
- **trigger_manual**: Writing this key will issue an external sync event
if it is hooked up inside the fabric. This key has an effect
only the EXT_SYNC synthesis parameter is set.
This key self clears.
"""
try:
return self._get_iio_dev_attr_str("sync_start_enable", _ctrl=self._rxadc)
except: # noqa: E722
if self._rxadc.reg_read(0x80000068) & 1 == 1:
return "arm"
else:
return "disarm"
@rx_sync_start.setter
def rx_sync_start(self, value):
try:
self._set_iio_dev_attr_str("sync_start_enable", value, _ctrl=self._rxadc)
except: # noqa: E722
self._rxadc.reg_write(0x80000044, 0x8)
while self._rxadc.reg_read(0x80000068) == 0:
self._rxadc.reg_write(0x80000044, 0x8)
@property
def rx_sync_start_available(self):
""" rx_sync_start_available: Returns a list of possible keys used for rx_sync_start """
try:
return self._get_iio_dev_attr_str(
"sync_start_enable_available", _ctrl=self._rxadc
)
except: # noqa: E722
return "arm"