Changeset 77
- Timestamp:
- 06/30/09 11:09:39 (15 years ago)
- Location:
- trigger
- Files:
-
- 18 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trigger/CommSocket.py
r52 r77 20 20 import time 21 21 BUFSIZ = 1024 22 23 22 class Sender(threading.Thread): 23 """ Sends the messages """ 24 outputs = [] 25 oldmessage='' 26 27 def run(self): 28 running = 1 29 while running: 30 time.sleep(0.001) 31 if(self.oldmessage!=GlobalVariables.ServerMessage): 32 self.oldmessage=GlobalVariables.ServerMessage 33 34 for o in self.outputs: 35 # o.send(msg) 36 #print "sending (glob): ",GlobalVariables.ServerMessage,"\n" 37 send(o,GlobalVariables.ServerMessage ) 38 if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'): 39 running=0 40 41 42 43 24 44 class CommServer(threading.Thread): 25 45 """ Simple server using select """ 26 46 oldmessage='' 47 sender=Sender() 27 48 def __init__(self, port=3490, backlog=5): 28 49 self.clients = 0 … … 36 57 print 'SERVER: Listening to port',port,'...' 37 58 self.server.listen(backlog) 59 self.sender.start() 38 60 # Trap keyboard interrupts 39 61 #signal.signal(signal.SIGINT, self.sighandler) 40 62 threading.Thread.__init__(self) 41 63 #def sighandler(self, signum, frame): 42 # if(GlobalVariables.UserInput =='exit' or GlobalVariables.UserInput=='EXIT'):64 # if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'): 43 65 # running=0 44 66 # for o in self.outputs: … … 71 93 72 94 while running: 73 time.sleep(0.01) 74 if(GlobalVariables.UserInput=='exit' or GlobalVariables.UserInput=='EXIT'): 95 time.sleep(0.001) 96 #if(self.oldmessage!=GlobalVariables.ServerMessage): 97 # self.oldmessage=GlobalVariables.ServerMessage 98 # for o in self.outputs: 99 # # o.send(msg) 100 # #print "sending (glob): ",GlobalVariables.ServerMessage,"\n" 101 # send(o,GlobalVariables.ServerMessage ) 102 if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'): 75 103 running=0 76 104 … … 87 115 # handle the server socket 88 116 client, address = self.server.accept() 89 print 'SERVER: got connection %d from %s' % (client.fileno(), address) 117 #print 'SERVER: got connection %d from %s' % (client.fileno(), address) 118 GlobalVariables.ServerMessage = 'SERVER: got connection %d from %s' %( client.fileno(), address)+"\n" 90 119 # Read the login name 91 cname = receive(client).split('NAME: ')[1] 92 120 cname="TESTUSER" 121 #cname = receive(client).split('NAME: ')[1] 122 #print cname 93 123 # Compute client name and send back 94 124 self.clients += 1 95 send(client, 'FROM SERVER: CLIENT: ' + str(address[0])) 125 #send(client, 'FROM SERVER: CLIENT: ' + str(address[0])) 126 #send(client,"test"); 127 #send(client,"test2"); 128 96 129 inputs.append(client) 97 130 … … 99 132 # Send joining information to other clients 100 133 msg = '\nFROM SERVER: (Connected: New client (%d) from %s)' % (self.clients, self.getname(client)) 101 for o in self.outputs: 102 # o.send(msg) 103 send(o, msg) 104 134 GlobalVariables.ServerMessage=msg; 135 time.sleep(0.001) 136 #print "appending ", client 105 137 self.outputs.append(client) 106 138 self.sender.outputs=self.outputs 107 139 #elif s == sys.stdin: 108 140 # handle standard input … … 119 151 # handle all other sockets 120 152 try: 121 # data = s.recv(BUFSIZ) 122 data = receive(s) 153 data = s.recv(BUFSIZ) 154 155 #data = receive(s) 156 #print data 123 157 if data: 158 GlobalVariables.counter += 1 159 GlobalVariables.counter %= 10 160 data = str(GlobalVariables.counter)+data 124 161 # Send as new client's message... 125 162 msg = 'SERVER: You sent: >> ' + data 163 msg+="\n" 126 164 GlobalVariables.UserInput=data 127 print "SERVER: recv data: "+data 128 for o in self.outputs: 129 send(o, msg) 130 if(GlobalVariables.UserInput=='exit' or GlobalVariables.UserInput=='EXIT'): 165 #print "SERVER: recv data: "+data 166 #print "msg is: ",msg 167 168 #for o in self.outputs: 169 #msg="TSTSTS" 170 # print "sending ",msg," to ",o 171 172 # send(o, msg) 173 if(GlobalVariables.UserInput[1:]=='exit' or GlobalVariables.UserInput[1:]=='EXIT'): 131 174 running=0 132 175 # Send data to all except ourselves 133 176 134 177 else: 135 print'SERVER: %d hung up' % s.fileno()178 GlobalVariables.ServerMessage ='SERVER: %d hung up' % s.fileno() 136 179 self.clients -= 1 137 180 s.close() 138 181 inputs.remove(s) 139 182 self.outputs.remove(s) 140 183 self.sender.outputs=self.outputs 141 184 # Send client leaving information to others 142 185 msg = 'SERVER: \n(Hung up: Client from %s)' % self.getname(s) 143 for o in self.outputs:186 #for o in self.outputs: 144 187 # o.send(msg) 145 send(o, msg)188 # send(o, msg) 146 189 147 190 except socket.error, e: … … 151 194 152 195 153 print 'SERVER: Shutting down server...' 196 GlobalVariables.ServerMessage ='SERVER: Shutting down server...' 197 154 198 # Close existing client sockets 155 199 for o in self.outputs: -
trigger/CommunicateWithVME.py
r52 r77 18 18 _VME.V560_Clear_Scales( module) 19 19 beginCounter=_VME. V560_Read_Counter( module, channel) 20 print"Evaluating rates (2 seconds)..."20 GlobalVariables.ServerMessage = "Evaluating rates (2 seconds)..." 21 21 time.sleep(2) 22 22 endCounter = _VME. V560_Read_Counter( module, channel) … … 33 33 0,0,0,0, 34 34 0,0,0,0] 35 rates = [0,0,0,0, 35 rates = ["rates", 36 0,0,0,0, 36 37 0,0,0,0, 37 38 0,0,0,0, … … 40 41 for i in range(0,16): 41 42 beginCounter[i]=_VME. V560_Read_Counter( module, i) 42 print beginCounter[i]43 print"Evaluating rates..."43 #GlobalVariables.ServerMessage = str(beginCounter[i]) 44 #GlobalVariables.ServerMessage = "Evaluating rates..." 44 45 time.sleep(2) 45 46 for i in range(0,16): 46 47 endCounter[i] = _VME. V560_Read_Counter( module, i) 47 print endCounter[i]48 rates[i ] =(endCounter[i]-beginCounter[i])/2000.48 #GlobalVariables.ServerMessage = str(endCounter[i]) 49 rates[i+1] =(endCounter[i]-beginCounter[i])/2000. 49 50 return rates 50 51 52 class GimmeRates(threading.Thread): 53 rates=["rates", 54 0,0,0,0, 55 0,0,0,0, 56 0,0,0,0, 57 0,0,0,0] 58 module = 1 59 def run(self): 60 oldcommand=GlobalVariables.UserInput 61 while(GlobalVariables.UserInput[1:]!="exit" and GlobalVariables.UserInput[1:] != "EXIT"): 62 time.sleep(0.001) 63 newrates = GetRates(self.module) 64 self.rates=newrates 65 51 66 class ParseUserInput(threading.Thread): 67 gimmeRates=GimmeRates() 52 68 def Parse(self,Command): 53 print "PARSING: ",Command 69 Command = Command[1:] 70 #GlobalVariables.ServerMessage = "PARSING: " + Command 54 71 sCommand=Command.split() 55 72 error_code=0 … … 57 74 try: 58 75 VMEModule=sCommand[0] 59 if(VMEModule == "help"): print "please use \'<V812|V560|Triggerboard> help\' " 76 if(VMEModule == "help"): 77 GlobalVariables.ServerMessage = "please use \'<V812|V560|Triggerboard> help\' " 78 #GlobalVariables.ServerMessage="please use \'<V812|V560|Triggerboard> help\' " 60 79 61 80 # now do the stuff for the V560: … … 63 82 V560Command=sCommand[1] 64 83 if(V560Command=="help"): 65 print "available functions are: " 66 print "V560 GetRate <module#> <channel#>" 67 print "V560 GetRates <module#> " 84 GlobalVariables.ServerMessage = "available functions are: \n" 85 GlobalVariables.ServerMessage += "V560 GetRate <module#> <channel#>\n" 86 GlobalVariables.ServerMessage += "V560 GetRates <module#\n " 87 time.sleep(0.05) 68 88 69 89 if(V560Command=="GetRate"): 70 print "trying to get rate" 71 try: 72 module = sCommand[2] 73 channel= sCommand[3] 74 print GetRate(int(module),int(channel)) 75 except: 76 print "Syntax Error (GetRate)" 90 #GlobalVariables.ServerMessage = "trying to get rate" 91 #time.sleep(0.05) 92 93 94 try: 95 module = int(sCommand[2]) 96 channel= int(sCommand[3]) 97 if(module!= self.gimmeRates.module): 98 self.gimmeRates.module=module 99 GlobalVariables.ServerMessage = "please wait... (5sec)" 100 time.sleep(5) 101 102 GlobalVariables.ServerMessage = str(self.gimmeRates.rates[channel]) 103 time.sleep(0.01) 104 except: 105 GlobalVariables.ServerMessage = "Syntax Error (GetRate)" 106 time.sleep(0.01) 77 107 #GlobalVariables.Rates[int(channel)] = GetRates(int(module),int(channel)) 78 108 79 if(V560Command=="GetRates"): 80 print "trying to get rates" 81 try: 82 module = sCommand[2] 83 84 print GetRates(int(module)) 85 except: 86 print "Syntax Error (GetRates)" 109 if(V560Command=="GetRates" or V560Command=="GR"): 110 GlobalVariables.ServerMessage = "trying to get rates" 111 time.sleep(0.01) 112 try: 113 module = int(sCommand[2]) 114 if(module!= self.gimmeRates.module): 115 self.gimmeRates.module=module 116 GlobalVariables.ServerMessage = "please wait... (5sec)" 117 time.sleep(5) 118 #GlobalVariables.ServerMessage = "RATES:" 119 GlobalVariables.ServerMessage = str(self.gimmeRates.rates) 120 time.sleep(0.01) 121 except: 122 GlobalVariables.ServerMessage = "Syntax Error (GetRates)" 123 time.sleep(0.05) 87 124 #GlobalVariables.Rates[int(channel)] = GetRates(int(module),int(channel)) 88 125 … … 92 129 V812Command=sCommand[1] 93 130 if(V812Command=="help"): 94 print "available functions are: " 95 print "V812 SetHexPat <module#[1-10]> <HexPattern[0x0000-0xFFFF>" 96 print "V812 SetThresh <module#[1-10]> <channel#[0-15]> <thresh[0-255]>" 97 print "V812 SetMajLevel <module#[1-10]> <MajLev[1-20]>" 98 print "V812 SetMajThresh <module#[1-10]> <MajThr[0-255]>" 99 print "V812 SetDeadTime <module#[1-10]> <Block [0-1]> <DeadTime[0-255]>" 100 131 GlobalVariables.ServerMessage = "available functions are: \n" 132 GlobalVariables.ServerMessage += "V812 SetHexPat <module#[1-10]> <HexPattern[0x0000-0xFFFF>\n" 133 GlobalVariables.ServerMessage += "V812 SetThresh <module#[1-10]> <channel#[0-15]> <thresh[0-255]>\n" 134 GlobalVariables.ServerMessage += "V812 SetAllThresh <module#[1-10]> <thresh[0-255]>\n" 135 GlobalVariables.ServerMessage += "V812 SetMajLevel <module#[1-10]> <MajLev[1-20]>\n" 136 GlobalVariables.ServerMessage += "V812 SetMajThresh <module#[1-10]> <MajThr[0-255]>\n" 137 GlobalVariables.ServerMessage += "V812 SetDeadTime <module#[1-10]> <Block [0-1]> <DeadTime[0-255]>\n" 138 time.sleep(0.05) 101 139 #set the hexpattern: 102 140 elif(V812Command=="SetHexPat"): 103 print "trying to set the hexpattern:" 141 GlobalVariables.ServerMessage = "trying to set the hexpattern:" 142 time.sleep(0.05) 104 143 try: 105 144 module = int(sCommand[2]) 106 145 hexpat = int(sCommand[3],16) 107 #hexpat="ddd" 108 print "setting module ",module," to hexpat: ",hex(hexpat) 146 #print hexpat 147 # hexpat="ddd" 148 GlobalVariables.ServerMessage = "setting module "+str(module)+" to hexpat: "+str(hex(hexpat)) 149 time.sleep(0.05) 109 150 try: 151 print "setting it now..." 110 152 error_code=_VME.V812_Set_Pattern_Inhibit_Hex(module, hexpat) 111 print "success! " 153 GlobalVariables.ServerMessage = "success! " 154 time.sleep(0.05) 112 155 113 156 except: 114 157 VME_ErrorPrint(error_code) 115 except: 116 print "Syntax error (SetHexPat)" 117 118 158 print "FAILED" 159 except: 160 GlobalVariables.ServerMessage = "Syntax error (SetHexPat)" 161 162 163 time.sleep(0.05) 164 elif(V812Command=="SetAllThresh"): 165 print "trying to set all the threshold:" 166 try: 167 module = int(sCommand[2]) 168 thresh = int(sCommand[3]) 169 GlobalVariables.ServerMessage="Setting all thresholds...\n" 170 for channel in range(0,16): 171 GlobalVariables.ServerMessage += "setting threshold of channel: "+str(channel)+ " in module "+str(module)+" to: "+str(thresh)+"\n" 172 GlobalVariables.ServerMessage += "success: "+str(_VME.V812_Set_Threshold(module, channel, thresh))+"\n" 173 time.sleep(0.05) 174 175 176 except: 177 print "Syntax error (SetAllThresh) " 119 178 elif(V812Command=="SetThresh"): 120 print "trying to set the threshold:" 179 GlobalVariables.ServerMessage = "trying to set the threshold:" 180 time.sleep(0.05) 121 181 try: 122 182 module = int(sCommand[2]) 123 183 channel = int(sCommand[3]) 124 184 thresh = int(sCommand[4]) 125 print "setting threshold of channel: ",channel, " in module ",module," to: ",thresh 126 print "success: ",_VME.V812_Set_Threshold(module, channel, thresh) 127 except: 128 print "Syntax error (SetThresh) " 129 185 GlobalVariables.ServerMessage = "setting threshold of channel: "+str(channel)+ " in module "+str(module)+" to: "+str(thresh) 186 GlobalVariables.ServerMessage += "success: "+str(_VME.V812_Set_Threshold(module, channel, thresh)) 187 time.sleep(0.05) 188 except: 189 GlobalVariables.ServerMessage = "Syntax error (SetThresh) " 190 time.sleep(0.05) 130 191 elif(V812Command=="SetMajLevel"): 131 print "trying to set the majority level:" 192 GlobalVariables.ServerMessage = "trying to set the majority level:" 193 time.sleep(0.05) 132 194 try: 133 195 module = int(sCommand[2]) 134 196 level = int(sCommand[3]) 135 print "setting maj. level of module ",module," to: ",level 136 print "success: ",_VME.V812_Set_Majority_Level(module,level) 137 except: 138 print "Syntax error (SetMajLevel)" 197 GlobalVariables.ServerMessage = "setting maj. level of module "+str(module)+" to: "+str(level) 198 GlobalVariables.ServerMessage += "success: "+str(_VME.V812_Set_Majority_Level(module,level)) 199 time.sleep(0.05) 200 except: 201 GlobalVariables.ServerMessage = "Syntax error (SetMajLevel)" 202 time.sleep(0.05) 139 203 140 204 elif(V812Command=="SetMajThresh"): 141 print "trying to set the majority threshold:" 205 GlobalVariables.ServerMessage = "trying to set the majority threshold:" 206 time.sleep(0.05) 142 207 try: 143 208 module = int(sCommand[2]) 144 209 thresh = int(sCommand[3]) 145 print "setting maj. level of module ",module," to: ",thresh 146 print "success: ",_VME.V812_Set_Majority_Threshold(module, thresh) 147 except: 148 print "Syntax error (SetMajThresh)" 210 GlobalVariables.ServerMessage = "setting maj. level of module "+str(module)+" to: "+str(thresh) 211 GlobalVariables.ServerMessage += "success: "+str(_VME.V812_Set_Majority_Threshold(module, thresh)) 212 time.sleep(0.05) 213 except: 214 GlobalVariables.ServerMessage = "Syntax error (SetMajThresh)" 215 time.sleep(0.05) 149 216 150 217 elif(V812Command=="SetDeadTime"): 151 print "trying to set the majority threshold:" 218 GlobalVariables.ServerMessage = "trying to set the majority threshold:" 219 time.sleep(0.05) 152 220 try: 153 221 module = int(sCommand[2]) 154 222 block = int(sCommand[3]) 155 223 deadtime= int(sCommand[4]) 156 print "setting deadtime of module ",module," block: ",block, " to: ",deadtime 157 print "success: ",_VME.V812_Set_Dead_Time(module, block, deadtime); 158 except: 159 print "Syntax error (SetMajThresh)" 224 GlobalVariables.ServerMessage = "setting deadtime of module "+str(module)+" block: "+str(block)+ " to: "+str(deadtime) 225 GlobalVariables.ServerMessage += "success: "+str(_VME.V812_Set_Dead_Time(module, block, deadtime)) 226 time.sleep(0.05) 227 except: 228 GlobalVariables.ServerMessage = "Syntax error (SetMajThresh)" 229 time.sleep(0.05) 160 230 161 231 else: 162 print "Syntax Error (V812)" 232 GlobalVariables.ServerMessage = "Syntax Error (V812)" 233 time.sleep(0.05) 163 234 164 235 except: 165 print "syntax error" 236 GlobalVariables.ServerMessage = "syntax error" 237 time.sleep(0.05) 166 238 #_VME.V812_Set_Threshold(1, 0, 255) 167 239 … … 169 241 threading.Thread.__init__(self) 170 242 def run(self): 243 self.gimmeRates.start() 171 244 oldcommand=GlobalVariables.UserInput 172 while(GlobalVariables.UserInput !="exit" and GlobalVariables.UserInput!= "EXIT"):245 while(GlobalVariables.UserInput[1:]!="exit" and GlobalVariables.UserInput[1:] != "EXIT"): 173 246 CommandToParse=GlobalVariables.UserInput 174 247 if(oldcommand!=CommandToParse): … … 179 252 180 253 181 print "EXITING PARSER...press <enter> to exit" 254 GlobalVariables.ServerMessage = "EXITING PARSER...press <enter> to exit" 255 time.sleep(0.05) 182 256 -
trigger/GlobalVariables.py
r52 r77 7 7 UserInput ='' 8 8 Rates = [16] 9 ServerMessage='' 10 Flag=1 11 counter = 0 -
trigger/Main.py
r52 r77 19 19 import GlobalVariables 20 20 import CommunicateWithVME 21 import ListenToArduino 21 22 import time 22 23 #connecting to the crates: … … 47 48 parseUserInput.start() 48 49 49 while(GlobalVariables.UserInput!="exit" and GlobalVariables.UserInput != "EXIT"): 50 print "listening to Arduino..." 51 listenToArduino = ListenToArduino.ListenToArduino() 52 listenToArduino.start() 53 while(GlobalVariables.UserInput[1:]!="exit" and GlobalVariables.UserInput[1:] != "EXIT"): 50 54 time.sleep(0.1) 51 55 #do something -
trigger/PythonShell.py
r52 r77 12 12 13 13 def run (self): 14 #outputShell= OutputShell()15 #OutputShell.start(outputShell)14 outputShell= OutputShell() 15 OutputShell.start(outputShell) 16 16 17 while(GlobalVariables.UserInput !="exit" and GlobalVariables.UserInput!= "EXIT"):17 while(GlobalVariables.UserInput[1:]!="exit" and GlobalVariables.UserInput[1:] != "EXIT"): 18 18 dummy=raw_input("SHELL>>> ") 19 if(GlobalVariables.UserInput!="exit" and GlobalVariables.UserInput != "EXIT"): 20 GlobalVariables.UserInput = dummy 19 if(GlobalVariables.UserInput[1:]!="exit" and GlobalVariables.UserInput[1:] != "EXIT"): 20 GlobalVariables.counter +=1 21 GlobalVariables.counter%=10 22 GlobalVariables.UserInput = str(GlobalVariables.counter)+dummy 23 21 24 else: 22 25 break … … 31 34 def run (self): 32 35 while(GlobalVariables.UserInput!="exit" and GlobalVariables.UserInput != "EXIT"): 33 if(GlobalVariables.UserInput!=self.lastvar): 34 print "\n(SHELL) You entered:",GlobalVariables.UserInput 36 time.sleep(0.001) 37 if(GlobalVariables.ServerMessage!=self.lastvar): 38 #print "\n(SHELL) You entered:",GlobalVariables.ServerMessage 35 39 #sys.stdout.write( "SHELL2 >>>") 36 self.lastvar=GlobalVariables.UserInput 40 print GlobalVariables.ServerMessage 41 self.lastvar=GlobalVariables.ServerMessage 42 37 43 print "EXITING OUTPUTSHELL...press <enter> to exit " 38 44 #sys.exit(0) -
trigger/TestClient3.py
r52 r77 37 37 send(self.sock,'NAME: ' + self.name) 38 38 data = receive(self.sock) 39 print data 39 40 # Contains client address, set it 40 41 addr = data.split('CLIENT: ')[1] -
trigger/VME.i
r52 r77 28 28 int V812_Set_Threshold(short module, short channel, short threshold); 29 29 int V812_Set_Pattern_Inhibit(short module, char channel[16]); 30 int V812_Set_Pattern_Inhibit_Hex(short module, shortpattern);30 int V812_Set_Pattern_Inhibit_Hex(short module, int pattern); 31 31 int V812_Set_Output_Width(short module, char channel_block, short width); 32 32 int V812_Set_Dead_Time(short module, short channel_block, short dead_time); -
trigger/VME_wrap.c
r52 r77 991 991 PyObject *resultobj; 992 992 short arg1 ; 993 short arg2 ;994 int result; 995 996 if(!PyArg_ParseTuple(args,(char *)"h h:V812_Set_Pattern_Inhibit_Hex",&arg1,&arg2)) goto fail;993 int arg2 ; 994 int result; 995 996 if(!PyArg_ParseTuple(args,(char *)"hi:V812_Set_Pattern_Inhibit_Hex",&arg1,&arg2)) goto fail; 997 997 result = (int)V812_Set_Pattern_Inhibit_Hex(arg1,arg2); 998 998 -
trigger/communication.py
r52 r77 9 9 unmarshall = cPickle.loads 10 10 11 def send(channel, *args): 12 buf = marshall(args) 13 value = socket.htonl(len(buf)) 14 size = struct.pack("L",value) 15 channel.send(size) 11 def send(channel, args): 12 #print "will send: ", args 13 args+="\n" 14 buf = args #marshall(args) 15 #value = socket.htonl(len(buf)) 16 value = str(len(buf)) 17 #size = struct.pack("i",value) 18 print "length: ",len(buf) 19 #print "SIZE: ",repr(size) 20 #channel.send(value) 21 buf+="\0" 16 22 channel.send(buf) 17 23 #print 'sending: ',buf 24 #print 'sent' 18 25 def receive(channel): 19 26 20 27 size = struct.calcsize("L") 21 28 size = channel.recv(size) 29 print "rec size: ",size 22 30 try: 23 size = socket.ntohl(struct.unpack("L", size)[0]) 31 size = socket.ntohl(struct.unpack("i", size)[0]) 32 #print "unpacked: ",size 24 33 except struct.error, e: 25 34 return '' -
trigger/v812.c
r52 r77 162 162 return 0; 163 163 } 164 int V812_Set_Pattern_Inhibit_Hex(short module, short pattern)164 int V812_Set_Pattern_Inhibit_Hex(short module, int pattern) 165 165 { 166 166 //return values -
trigger/v812.h
r52 r77 66 66 int V812_Test_Pulse(short module); 67 67 int V812_Print_Info(void); 68 int V812_Set_Pattern_Inhibit_Hex(short module, short pattern);68 int V812_Set_Pattern_Inhibit_Hex(short module, int pattern); 69 69 VME_ErrorCode_t V812_Close(void); 70 70
Note:
See TracChangeset
for help on using the changeset viewer.