From 6708ffee8553ce3cf67686755c16064d559aa6cd Mon Sep 17 00:00:00 2001 From: boccioli_m Date: Fri, 13 Oct 2017 13:56:27 +0200 Subject: [PATCH] Closedown --- script/tests/tests.properties | 2 +- script/tests/tests/sad/rightleft/rightleft.py | 121 ++++++++++++++++++ 2 files changed, 122 insertions(+), 1 deletion(-) diff --git a/script/tests/tests.properties b/script/tests/tests.properties index d99e30b..cca2e7c 100644 --- a/script/tests/tests.properties +++ b/script/tests/tests.properties @@ -1,5 +1,5 @@ #TestingList for pshell: configuration properties -#Fri Oct 13 13:41:34 CEST 2017 +#Fri Oct 13 13:41:56 CEST 2017 customPanel= showEnabledTestsOnly= listFilter=rps-try diff --git a/script/tests/tests/sad/rightleft/rightleft.py b/script/tests/tests/sad/rightleft/rightleft.py index 32385f5..0c3874c 100644 --- a/script/tests/tests/sad/rightleft/rightleft.py +++ b/script/tests/tests/sad/rightleft/rightleft.py @@ -219,3 +219,124 @@ startTest(test, device, parameters) #### IF NEEDED, ADD YOUR FUNCTIONS HERE BELOW #### # Indent to end left # def yourCustomFunction: + + +class Interlock: +""" +class for getting - setting interlock mode +""" + from array import * + # mode, test pattern for outputs 2-4, test pattern for output 5, expected pattern for 2-4, expected pattern for 5 + rps_beamline = 0 + rps_mode = 1 + rps_expected1 = 2 + rps_expected2 = 3 + rps_mask1 = 0x4440 # mask for outputs 2-4 + rps_mask2 = 0x0004 # mask for output 5 + msg_default = bytearray() + + def __init__(self): + """ + Message composition: + 0x32 = 50 = byte count + 0x69 = 105 = transfer function + 0x99,0x88 = this application port number (swapped) + element 7 = message id + element 16 = io-func reset=2 read mode=0 write mode=1 + """ + self.msg_default = array('B',[0x32,0,0x69,0,0x99,0x88,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0]) + + def _msgRead(): + self.msg_default[16] = 0 + return self.msg_default + + def _msgWrite(): + self.msg_default[16] = 1 + return self.msg_default + + def _msgReset(): + self.msg_default[16] = 2 + return self.msg_default + + def setInterlockMode(self, mode) + udp = UDPDatagram() + msg = self._msgWrite() + modebytes = array('B', mode) + msg.extend(modebytes) + #import binascii + #print binascii.hexlify(msg) + if udp.send(msg) == null: + return false + else: + return true + + def getInterlockMode(self) + udp = UDPDatagram() + msg = self._msgRead() + #import binascii + #print binascii.hexlify(msg) + rcv = udp.send(msg) + #print binascii.hexlify(rcv) + return rcv + + def masterReset(self) + udp = UDPDatagram() + msg = self._msgReset() + #import binascii + #print binascii.hexlify(msg) + if udp.send(msg) == null: + return false + else: + return true + +class UDPDatagram: +""" +class for receiving and sending a udp message +""" + import socket + + # the constructor + def __init__(self): + # communication with interlock server + self.serverPort = 0xBB1B # interlock server + self.serverName = 'PROMC1' # ball server + try: + self.sock = socket.socket(socket.AF_INET, # Internet + socket.SOCK_DGRAM) # UDP + except socket.error, msg: + print 'Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] + sys.exit() + + def _sendUDP(self, message): + try: + # get the ip address and send + self.sock.sendto(message, (self.serverName, self.serverPort)) + except socket.error, msg: + print 'Failed to create socket. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] + sys.exit() + + def _listenInit(self): + try: + self.sock.bind('', self.ThisPort) + except socket.error, msg: + print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1] + sys.exit() + print 'Socket bind complete. ' + + def _listen(self): + # now keep talking with the client + while 1: + # receive data from client (data, addr) + data, addr = self.sock.recvfrom(1024) + if not data: + print 'End of data or no data' + break + print 'Message[' + addr[0] + ':' + str(addr[1]) + '] - ' + data.strip() + + self.sock.close() + return data[28:] + + def send(self, message): + self._listenInit() + self._sendUDP(message) + return self._listen() \ No newline at end of file