moninj: share probe/override numbers and use Enum

This commit is contained in:
Sebastien Bourdeauducq 2017-02-27 11:54:16 +08:00
parent fc0ce310a8
commit b8bfcd2d7e
2 changed files with 28 additions and 20 deletions

View File

@ -1,11 +1,26 @@
import asyncio
import logging
import struct
from enum import Enum
__all__ = ["TTLProbe", "TTLOverride", "MonInjComm"]
logger = logging.getLogger(__name__)
class TTLProbe(Enum):
level = 0
oe = 1
class TTLOverride(Enum):
en = 0
level = 1
oe = 2
class MonInjComm:
def __init__(self, monitor_cb, injection_status_cb, disconnect_cb=None):
self.monitor_cb = monitor_cb

View File

@ -4,7 +4,7 @@ import logging
from PyQt5 import QtCore, QtWidgets, QtGui
from artiq.protocols.sync_struct import Subscriber
from artiq.coredevice.moninj import MonInjComm
from artiq.coredevice.moninj import *
from artiq.gui.tools import LayoutWidget
from artiq.gui.flowlayout import FlowLayout
@ -170,13 +170,6 @@ class _DDSWidget(QtWidgets.QFrame):
return (self.bus_channel, self.channel)
TTL_PROBE_LEVEL = 0
TTL_PROBE_OE = 1
TTL_OVERRIDE_EN = 0
TTL_OVERRIDE_LEVEL = 1
TTL_OVERRIDE_OE = 2
class _DeviceManager:
def __init__(self, init):
self.core_addr = None
@ -254,26 +247,26 @@ class _DeviceManager:
widget = self.ttl_widgets_by_channel[channel]
if mode == "0":
widget.cur_override = True
self.core_connection.inject(channel, TTL_OVERRIDE_LEVEL, 0)
self.core_connection.inject(channel, TTL_OVERRIDE_OE, 1)
self.core_connection.inject(channel, TTL_OVERRIDE_EN, 1)
self.core_connection.inject(channel, TTLOverride.level.value, 0)
self.core_connection.inject(channel, TTLOverride.oe.value, 1)
self.core_connection.inject(channel, TTLOverride.en.value, 1)
elif mode == "1":
widget.cur_override = True
self.core_connection.inject(channel, TTL_OVERRIDE_LEVEL, 1)
self.core_connection.inject(channel, TTL_OVERRIDE_OE, 1)
self.core_connection.inject(channel, TTL_OVERRIDE_EN, 1)
self.core_connection.inject(channel, TTLOverride.level.value, 1)
self.core_connection.inject(channel, TTLOverride.oe.value, 1)
self.core_connection.inject(channel, TTLOverride.en.value, 1)
elif mode == "exp":
widget.cur_override = False
self.core_connection.inject(channel, TTL_OVERRIDE_EN, 0)
self.core_connection.inject(channel, TTLOverride.en.value, 0)
else:
raise ValueError
def setup_ttl_monitoring(self, enable, channel):
if self.core_connection is not None:
self.core_connection.monitor(enable, channel, TTL_PROBE_LEVEL)
self.core_connection.monitor(enable, channel, TTL_PROBE_OE)
self.core_connection.monitor(enable, channel, TTLProbe.level.value)
self.core_connection.monitor(enable, channel, TTLProbe.oe.value)
if enable:
self.core_connection.get_injection_status(channel, TTL_OVERRIDE_EN)
self.core_connection.get_injection_status(channel, TTLOverride.en.value)
def setup_dds_monitoring(self, enable, bus_channel, channel):
if self.core_connection is not None:
@ -282,9 +275,9 @@ class _DeviceManager:
def monitor_cb(self, channel, probe, value):
if channel in self.ttl_widgets_by_channel:
widget = self.ttl_widgets_by_channel[channel]
if probe == TTL_PROBE_LEVEL:
if probe == TTLProbe.level.value:
widget.cur_level = bool(value)
elif probe == TTL_PROBE_OE:
elif probe == TTLProbe.oe.value:
widget.cur_oe = bool(value)
widget.refresh_display()
if (channel, probe) in self.dds_widgets_by_channel: