summaryrefslogtreecommitdiff
path: root/test/test_ctrl/WaterPapCtrl_init.py
blob: 176d7c5eb7dfc64181bc1c6181788d23c1a500b7 (plain)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import PyTango
import socket
import MotorController

nb_call = 0

class IcePapController(MotorController.MotorController):

    MaxDevice = 4

    def __init__(self,inst,props):
        print "PYTHON -> IcePapController ctor for instance",inst
        MotorController.MotorController.__init__(self,inst,props)
        self.nb_call = 0;
        self.socket_connected = False;
        self.db = PyTango.Database()
        self.ct_name = "IcePapController/" + self.inst_name

#
# Get controller properties
#

        prop_list = ['host','port','timeout']
        prop = self.db.get_property(self.ct_name,prop_list)
        
        if len(prop["host"]) != 0:
            self.host = prop["host"][0]
        else:
            print "Property host not defined for controller",self.ct_name
            self.host = "nada"
            
        if len(prop["port"]) != 0:
            self.port = int(prop["port"][0])
        else:
            print "Property port not defined for controller",self.ct_name
            self.port = 0
            
        if len(prop["timeout"]) != 0:
            self.timeout = int(prop["timeout"][0])
        else:
            print "Property timeout not defined for controller",self.ct_name
            self.timeout = 3
 
 #
 # Connect to the icepap
 #
            
        print "PYTHON -> IcePap on",self.host," and port",self.port," with timeout = ",self.timeout
        
        global nb_call

        if nb_call <= 1:
            nb_call = nb_call + 1
            self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.sock.settimeout(self.timeout)
            self.sock.connect((self.host, self.port))
            self.socket_connected = True
        
        print "PYTHON -> Connected to", self.host, " on port", self.port
        
#
# Check that the Icepap is OK
#

#        ans = self.IceWriteRead("?ID")
        
        
    def AddDevice(self,axis):
        print "PYTHON -> IcePapController/",self.inst_name,": In AddDevice method for axis",axis
#        raise RuntimeError,"Hola la la"
        
    def DeleteDevice(self,axis):
        print "PYTHON -> IcePapController/",self.inst_name,": In DeleteDevice method for axis",axis
        
    def StateOne(self,axis):
        print "PYTHON -> IcePapController/",self.inst_name,": In StateOne method for axis",axis
        tup = (PyTango.DevState.ON,0)
        return tup

    def PreReadAll(self):
        print "PYTHON -> IcePapController/",self.inst_name,": In PreReadAll method"

    def PreReadOne(self,axis):
        print "PYTHON -> IcePapController/",self.inst_name,": In PreReadOne method for axis",axis

    def ReadAll(self):
        print "PYTHON -> IcePapController/",self.inst_name,": In ReadAll method"

    def ReadOne(self,axis):
        print "PYTHON -> IcePapController/",self.inst_name,": In ReadOne method for axis",axis
        return 123

    def PreStartAll(self):
        print "PYTHON -> IcePapController/",self.inst_name,": In PreStartAll method"

    def PreStartOne(self,axis,pos):
        print "PYTHON -> IcePapController/",self.inst_name,": In PreStartOne method for axis",axis," with pos",pos
        return True

    def StartOne(self,axis,pos):
        print "PYTHON -> IcePapController/",self.inst_name,": In StartOne method for axis",axis," with pos",pos

    def StartAll(self):
        print "PYTHON -> IcePapController/",self.inst_name,": In StartAll method"

    def SetPar(self,axis,name,value):
        print "PYTHON -> IcePapController/",self.inst_name,": In SetPar method for axis",axis," name=",name," value=",value

    def GetPar(self,axis,name):
        print "PYTHON -> IcePapController/",self.inst_name,": In GetPar method for axis",axis," name=",name
        return 12.34

    def IceWrite(self,data):
        data = data + "\n"
        byteSent = self.sock.send(data)
        print "PYTHON -> Sent", byteSent, "bytes to icepap"
        
    def IceWriteRead(self,data):
        self.IceWrite(data)
        byteReceived = self.sock.recv(1024)
        print "PYTHON -> Icepap answered:",byteReceived
        return byteReceived

    def IceResetFifo(self):
        self.IceWrite("fiforst")
        
    def IceCheckError(self,ice_answer):
        if (ice_answer.find("ERROR") != -1):
            new_ans = self.IceWriteRead("?ERR 1")
            print "Error from IcePap =",new_ans
        
    def __del__(self):
        print "PYTHON -> IcePapController/",self.inst_name,": Aarrrrrg, I am dying"
        
#
# Reset IcePap FIFO
#

        if (self.socket_connected == True):
            print "PYTHON -> Closing connection"
            self.IceResetFifo()
            self.sock.close()

        
if __name__ == "__main__":
    obj = IcePapController('test')
#    obj.AddDevice(2)
#    obj.DeleteDevice(2)