name='RECVTR_LB_TEST' #YAML config file with all register values etc

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
from pypcc.opcuaserv.yamlreader import byte2var,var2byte

class i2cdirect():
    def __init__(self,name):
        self.conf=yc.yamlconfig(name)
        self.conf.linkdevices()
        self.conf.loaddrivers()
        self.conf.linkdrivers()

    def GetVal(self,name,N=1):
        varid=self.conf.getvarid(name);
        if varid is None:
            logging.error("Variable "+name+" not found")
            return None,None
        var1=self.conf.getvars()[varid]
        drv=var1.get('drivercls');
        data=drv.OPCUAReadVariable(varid,var1,[])
        data=data[0].data
        return byte2var(var1,data),var1

    def SetVal(self,name,data):
        varid=self.conf.getvarid(name);
        if varid is None:
            logging.error("Variable "+name+" not found")
            return None
        var1=self.conf.getvars()[varid]
        drv=var1.get('drivercls');        
        data2=var2byte(var1,data)
        return drv.OPCUASetVariable(varid,var1,data2,[])

    def SetRegister(self,regname,value):
        methodid=self.conf.getmethodid("RECVTR_Init");
        var1=self.conf.getmethod(methodid)
        drv=var1.get('drivercls');
        v1=self.conf.getdevreg(regname)
        drv2=v1.get('drivercls')
        mask=[]
        if drv:  drv.Setdevreg(v1,value,mask)
        elif drv2: drv2.Setdevreg(v1,value,mask)
        else: logging.warn("Driver not specified for instruction"+key)