Commit d8a8c178 authored by Christopher Turner's avatar Christopher Turner

Refactor encoder tests

parent 4f035b52
......@@ -3,13 +3,16 @@ import PandATest
from collections import OrderedDict
class DaughterCardException(Exception):
pass
class Encoder(PandATest.PandATest):
def __init__(self, *args, **kwargs):
super(Encoder, self).__init__(*args, **kwargs)
def test_code(self):
def setup_quad(self):
#(cmd, (expected result, +- bound of result))
setup_quad_commands = OrderedDict([
('INENC{}.BYPASS=On'.format(self.blocknum), ('OK', 0)),
......@@ -17,53 +20,29 @@ class Encoder(PandATest.PandATest):
('INENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0))
])
setup_ssi_commands = OrderedDict([
('INENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0))
])
#SET FOR QUADRATURE
for cmd, expected in setup_quad_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
self.outputs = ['A', 'B', 'Z']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0],
self.outputs[1]: self.inputs[1],
self.outputs[2]: self.inputs[2],
}
default_val = 0
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
def setup_ssi(self):
setup_ssi_commands = OrderedDict([
('INENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0))
])
#SET FOR SSI
for cmd, expected in setup_ssi_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
# #TOGGLE SSI FIELDS
self.outputs = ['CLK']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0]
}
self.toggle_val('INENC', '', 'OUTENC', '', default_val)
self.outputs = ['DATA']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0]
}
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
def check_daughter_board(self):
#CHECK FOR CONTROL ENCODERS
response = self.send_cmd('INENC{}.DCARD_ID?'.format(self.blocknum))
if 'Encoder Control' not in response:
print "Encoder {} daughter board mismatch: {}".format(self.blocknum, response)
print "Encoder {} daughter board mismatch: {}".format(self.blocknum,
response)
return 1
else:
return 0
......
#!/bin/env dls-python
import Encoder
class EncoderLB(Encoder.Encoder):
def __init__(self, *args, **kwargs):
super(EncoderLB, self).__init__(*args, **kwargs)
def test_code(self):
self.setup_quad()
self.outputs = ['A', 'B', 'Z']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0],
self.outputs[1]: self.inputs[1],
self.outputs[2]: self.inputs[2],
}
default_val = 0
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
self.setup_ssi()
# #TOGGLE SSI FIELDS
self.outputs = ['CLK']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0]
}
self.toggle_val('INENC', '', 'OUTENC', '', default_val)
self.outputs = ['DATA']
self.inputs = self.outputs
self.ch_connect = {
self.outputs[0]: self.inputs[0]
}
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
#!/bin/env dls-python
import PandATest
from collections import OrderedDict
import Encoder
class DaughterCardException(Exception):
pass
class Encoder(PandATest.PandATest):
class EncoderUP(Encoder.Encoder):
def __init__(self, *args, **kwargs):
super(Encoder, self).__init__(*args, **kwargs)
super(EncoderUP, self).__init__(*args, **kwargs)
self.test_type = 'Unplugged'
def test_code(self):
#(cmd, (expected result, +- bound of result))
setup_quad_commands = OrderedDict([
('INENC{}.BYPASS=On'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.BYPASS=On'.format(self.blocknum), ('OK', 0)),
('INENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=Quadrature'.format(self.blocknum), ('OK', 0))
])
setup_ssi_commands = OrderedDict([
('INENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0)),
('OUTENC{}.PROTOCOL=SSI'.format(self.blocknum), ('OK', 0))
])
#SET FOR QUADRATURE
for cmd, expected in setup_quad_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
self.setup_quad()
self.outputs = ['A', 'B', 'Z']
self.inputs = self.outputs
self.ch_connect = {
......@@ -42,12 +20,7 @@ class Encoder(PandATest.PandATest):
}
default_val = 1
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
#SET FOR SSI
for cmd, expected in setup_ssi_commands.items():
response = self.send_cmd(cmd)
self.test_result.append(
self.check_response(response, expected[0], cmd, expected[1]))
self.setup_ssi()
# #TOGGLE SSI FIELDS
self.outputs = ['CLK']
......@@ -64,21 +37,3 @@ class Encoder(PandATest.PandATest):
}
self.toggle_val('OUTENC', '', 'INENC', '', default_val)
def check_daughter_board(self):
#CHECK FOR CONTROL ENCODERS
response = self.send_cmd('INENC{}.DCARD_ID?'.format(self.blocknum))
if 'Encoder Control' not in response:
print "Encoder {} daughter board mismatch: {}".format(self.blocknum, response)
return 1
else:
return 0
def toggle_val(self, out_param, out_field, in_param, in_field, default):
for outp in self.outputs:
for val in [1, 0]:
out_cmd = '{}{}.{}={}'.format(
out_param, self.blocknum, outp, self.toggle_cmd[val])
self.set_output(out_cmd)
in_cmd = '{}{}.{}?'.format(in_param, self.blocknum, '{}')
self.toggle_check(
in_cmd, outp, self.ch_connect[outp], default, val)
......@@ -2,7 +2,7 @@
import PandATest
import Lvds
import Ttl
import Encoder
import EncoderLoopBack
import os
"""
......@@ -46,7 +46,7 @@ class LoopBack(PandATest.PandATest):
#ENCODER LOOP BACK
self.encx = []
for enc_num in range(1, 5):
self.encx.append(Encoder.Encoder(*args, **kwargs))
self.encx.append(EncoderLoopBack.EncoderLB(*args, **kwargs))
self.encx[enc_num - 1].blocknum = enc_num
def check_setup(self):
......@@ -56,7 +56,7 @@ class LoopBack(PandATest.PandATest):
if self.encx[enc_num].check_daughter_board():
enc_ok = False
if not enc_ok:
raise Encoder.DaughterCardException(
raise EncoderLoopBack.DaughterCardException(
"Power down PandA and connect control daughter board")
else:
print "Daughter Cards OK.."
......
......@@ -47,7 +47,7 @@ class Unplugged(PandATest.PandATest):
#ENCODER UNPLUGGED
self.encx = []
for enc_num in range(1, 5):
self.encx.append(Encoder.Encoder(*args, **kwargs))
self.encx.append(Encoder.EncoderUP(*args, **kwargs))
self.encx[enc_num - 1].blocknum = enc_num
self.encx[enc_num - 1].unplugged = True
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment