Skip to content
Snippets Groups Projects
Commit 4e47c72b authored by Paulus Kruger's avatar Paulus Kruger
Browse files

Merge branch 'master' of https://git.astron.nl/lofar2.0/pypcc

parents 7e80a1ea c9d018e0
No related branches found
No related tags found
No related merge requests found
Pipeline #69861 failed
File moved
......@@ -4,13 +4,17 @@ import subprocess
import signal
import logging
from queue import Queue
from pypcc.check_ip import check_ip
#try:
from .check_ip import check_ip
from .setEEPROM import SetEEPROM
#except:
#from check_ip import check_ip
#from setEEPROM import SetEEPROM
port=4899
logging.basicConfig(encoding='utf-8', level=logging.INFO)
if True:
check_ip()
......@@ -93,12 +97,22 @@ def byte2int(A):
#print('Version=',get_i2c('0x0',16))
#print('Serial=',get_i2c('0x20',16))
def EEPROM_code_changed(value):
def testEEPROMcode(value):
if value!='4899':
logging.warning("Wrong EEPROM_code:"+str(value))
return
return False
else:
return True
def EEPROM_code_changed():
# try:
EEPROM_ID.set_value(byte2int(get_i2c('0xfc',4)))
value=SetEEPROM("APSCTTR","APSCT_PCB_number",None);
EEPROM_number.set_value(value)
EEPROM_number_new.set_value(value)
value=SetEEPROM("APSCTTR","APSCT_PCB_version",None);
EEPROM_version.set_value(value)
EEPROM_version_new.set_value(value)
# except:
# logging.error("Get ID failed")
......@@ -147,10 +161,12 @@ if True:
EEPROM_number = obj.add_variable(idx, 'pytr_EEPROM_number_R', 'None')
EEPROM_number_new = obj.add_variable(idx, 'pytr_EEPROM_number_RW', 'None')
EEPROM_number_new.set_writable()
handle = sub.subscribe_data_change(EEPROM_number_new)
EEPROM_version = obj.add_variable(idx, 'pytr_EEPROM_version_R', 'None')
EEPROM_version_new = obj.add_variable(idx, 'pytr_EEPROM_version_RW', 'None')
EEPROM_version_new.set_writable()
handle = sub.subscribe_data_change(EEPROM_version_new)
pi_temp = obj.add_variable(idx, 'pytr_pi_temperature_R', 0.0)
update_temperature()
......@@ -163,8 +179,17 @@ if True:
except:
update_temperature()
continue
if (nodeid==EEPROM_code.nodeid.Identifier): EEPROM_code_changed(EEPROM_code.get_value())
if testEEPROMcode(EEPROM_code.get_value()):
if (nodeid==EEPROM_code.nodeid.Identifier):
EEPROM_code_changed()
elif (nodeid==EEPROM_number_new.nodeid.Identifier):
if EEPROM_number_new.get_value()!=EEPROM_number.get_value():
newvalue=SetEEPROM("APSCTTR","APSCT_PCB_number",EEPROM_number_new.get_value());
EEPROM_number.set_value(newvalue)
elif (nodeid==EEPROM_version_new.nodeid.Identifier):
if EEPROM_version_new.get_value()!=EEPROM_version.get_value():
newvalue=SetEEPROM("APSCTTR","APSCT_PCB_version",EEPROM_version_new.get_value());
EEPROM_version.set_value(newvalue)
# sleep(10)
#P1.GetVarNames("",AddVar);
server.stop()
......
##NB translator should be off or monitor should be 0
#name='APSCTTR' #YAML config file with all register values etc
#varID='APSCT_PCB_ID'
#name='APSPUTR' #YAML config file with all register values etc
#varID='APSPU_PCB_ID'
#logFile='SetVersion'
import logging
#import argparse
from pypcc.opcuaserv import opcuaserv
from pypcc.opcuaserv import i2client
from pypcc.opcuaserv import yamlreader
#from opcuaserv import pypcc2
from pypcc.i2cserv import i2cthread
#import threading
import time
import sys
import signal
from pypcc.yamlconfig import Find;
import pypcc.yamlconfig as yc
from datetime import datetime
#testtime=datetime.now().strftime("%y-%m-%d %H:%M")
#if len(sys.argv)<2:
# print("setVersion Var Value");
# print("e.g. SetVersion RCU_PCB_version RCU2L-XXYZ")
# exit();
#varSet=sys.argv[1]
#Ver=sys.argv[2] if (len(sys.argv)>2) else None
#logging.basicConfig(level="WARNING",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
#logging.basicConfig(level="DEBUG",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
#RunTimer=True;
def SetEEPROM(configfile,varSet,value):
conf=yc.yamlconfig(configfile)
conf.linkdevices()
conf.loaddrivers()
conf.linkdrivers()
def GetVal(name,N=1):
varid=conf.getvarid(name);
var1=conf.getvars()[varid]
drv=var1.get('drivercls');
mask=[True];
data=drv.OPCUAReadVariable(varid,var1,mask)
data=data[0].data
# N3=len(data)//32;
return data,var1
#reading the ID also set the switch
# data,var1=GetVal(varID);
# ID=("%.2x%.2x%.2x%.2x" % (data[0],data[1],data[2],data[3]))
# logging.warning("ID=%s" % ID)
# if int(ID,16)==0:
# logging.error("Error: No ID");
# return
data,var1=GetVal(varSet);
version=bytearray(data).decode("utf-8",errors='ignore')
logging.warning("Old "+varSet+":"+version)
if value is None: return version
#print(var1)
ROMaddr=var1['devreg'][0]['addr']
ROMreg=var1['devreg'][0]['register_W']
varlen=var1['width']//8
#print(varlen)
#exit()
i2c=conf.conf['drivers'][0]['obj'] #assume I2C is first device
#exit()
#R1=0
#ROM=0x50
#Upload version
Ver2=[(c.encode('utf-8')[0]) for c in value]
Ver2=Ver2[:varlen]
#print(len(Ver),Ver,Ver2)
V2=[0]
for i,v in enumerate(Ver2):
time.sleep(0.1)
i2c.i2csetget(ROMaddr,[v],reg=ROMreg+i,read=0)
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,V2,reg=ROMreg+i,read=1)
# print(i,v,V2)
for i in range(len(Ver2),varlen):
time.sleep(0.1)
i2c.i2csetget(ROMaddr,[255],reg=ROMreg+i,read=0)
# time.sleep(0.1)
# i2c.i2csetget(ROMaddr,V2,reg=ROMreg+i,read=1)
time.sleep(0.1)
data,var1=GetVal(varSet);
version=bytearray(data).decode("utf-8",errors='ignore')
#print("Version",version)
logging.warning("New "+varSet+":"+version)
return version
if __name__=="__main__":
logging.basicConfig(level="INFO",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
newval=SetEEPROM("APSCTTR","APSCT_PCB_version","123")
print("new value=",newval)
newval=SetEEPROM("APSCTTR","APSCT_PCB_version","123")
print("new value=",newval)
......@@ -6,6 +6,9 @@ connect("opc.tcp://localhost:4899/")
#callmethod("pytr_stop")
set_value("pytr_EEPROM_passcode_RW","4899")
set_value("pytr_EEPROM_number_RW","1122")
set_value("pytr_EEPROM_version_RW","3344")
#set_value("pytr_EEPROM_passcode_RW","None")
disconnect();
......@@ -25,7 +25,7 @@ where=.
[options.entry_points]
console_scripts =
hwtr = pypcc.pypcc
pitr = pypcc.pitr
pitr = pypcc.testing.pitr_main
[options.package_data]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment