Skip to content

Commit

Permalink
Update to reflect best practices for LinkedVariables
Browse files Browse the repository at this point in the history
  • Loading branch information
bengineerd committed May 9, 2024
1 parent f369c62 commit 598775b
Show file tree
Hide file tree
Showing 28 changed files with 229 additions and 195 deletions.
2 changes: 1 addition & 1 deletion python/surf/axi/_AxiStreamDmaFifo.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ def __init__(self, **kwargs):
mode = 'RO',
disp = '0x{:0x}',
dependencies = [self.AXI_BUFFER_WIDTH_G,self.MAX_FRAME_WIDTH_G],
linkedGet = lambda: 2**( int(self.AXI_BUFFER_WIDTH_G.value()) - int(self.MAX_FRAME_WIDTH_G.value()) )
linkedGet = lambda read: 2**( int(self.AXI_BUFFER_WIDTH_G.get(read=read)) - int(self.MAX_FRAME_WIDTH_G.get(read=read)) )
))

self.add(pr.RemoteVariable(
Expand Down
4 changes: 2 additions & 2 deletions python/surf/axi/_AxiStreamMonAxiL.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@ def addPair(name, offset, bitSize, units, bitOffset, description, function, poll
))

@staticmethod
def convMbps(var):
return var.dependencies[0].value() * 8e-6
def convMbps(var, read):
return var.dependencies[0].get(read=read) * 8e-6

class AxiStreamMonAxiL(pr.Device):
def __init__(self, numberLanes=1, hideConfig=True, chName=None, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion python/surf/devices/amphenol/_LeapXcvrLowerPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ def __init__(self, isTx = True, writeEn=False, **kwargs):
mode = 'RO',
disp = '{:1.1f}',
units = 'degC',
linkedGet = lambda read: float(self.TxTempMsb.value())+float(self.TxTempLsb.value())/256.0,
linkedGet = lambda var, read: self._getLsbMsb(var, read)/256.0,
dependencies = [self.TxTempMsb, self.TxTempLsb],
))

Expand Down
31 changes: 22 additions & 9 deletions python/surf/devices/amphenol/_LeapXcvrUpperPages.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ class LeapXcvrUpperRxPage01(pr.Device):
def __init__(self, **kwargs):
super().__init__(**kwargs)

def getOpticalPwr(var):
raw = var.dependencies[0].value() # Units of 0.1 uW
def getOpticalPwr(var, read):
raw = var.dependencies[0].get(read=read) # Units of 0.1 uW
if raw == 0:
pwr = 0.0001 # Prevent log10(zero) case
else:
Expand Down Expand Up @@ -132,8 +132,8 @@ def __init__(self, **kwargs):
mode = 'RO',
disp = '0x{:x}',
typeStr = 'UInt16',
linkedGet = lambda: self.LaserWavelengthLsb.value()+256*self.LaserWavelengthMsb.value(),
dependencies = [self.LaserWavelengthLsb,self.LaserWavelengthMsb],
linkedGet = self,_getLsbMsb,
dependencies = [self.LaserWavelengthLsb, self.LaserWavelengthMsb],
))

self.add(pr.RemoteVariable(
Expand All @@ -159,8 +159,8 @@ def __init__(self, **kwargs):
mode = 'RO',
disp = '0x{:x}',
typeStr = 'UInt16',
linkedGet = lambda: self.MaxWavelengthDeviationLsb.value()+256*self.MaxWavelengthDeviationMsb.value(),
dependencies = [self.MaxWavelengthDeviationLsb,self.MaxWavelengthDeviationMsb],
linkedGet = self._getLsbMsb,
dependencies = [self.MaxWavelengthDeviationLsb, self.MaxWavelengthDeviationMsb],
))

name = [
Expand Down Expand Up @@ -422,8 +422,8 @@ def __init__(self, **kwargs):
disp = '0x{:x}',
units = '0.5m',
typeStr = 'UInt16',
linkedGet = lambda: self.CableLengthLsb.value()+256*self.CableLengthMsb.value(),
dependencies = [self.CableLengthLsb,self.CableLengthMsb],
linkedGet = self._getLsbMsb,
dependencies = [self.CableLengthLsb, self.CableLengthMsb],
))

self.addRemoteVariables(
Expand Down Expand Up @@ -459,7 +459,7 @@ def __init__(self, **kwargs):
mode = 'RO',
disp = '0x{:x}',
typeStr = 'UInt12',
linkedGet = lambda: self.VendorOuiRaw[2].value()+(2**8)*self.VendorOuiRaw[1].value()+(2**16)*self.VendorOuiRaw[0].value(),
linkedGet = lambda read: self.VendorOuiRaw[2].get(read=read)()+(2**8)*self.VendorOuiRaw[1].get(read=read)()+(2**16)*self.VendorOuiRaw[0].get(read=read)(),
dependencies = [self.VendorOuiRaw[x] for x in range(3)],
))

Expand Down Expand Up @@ -552,3 +552,16 @@ def __init__(self, **kwargs):
linkedGet = transceivers.parseStrArrayByte,
dependencies = [self.LotCodeRaw[x] for x in range(10)],
))


def _getLsbMsb(self, var, read):
with self.root.updateGroup():
lsb = var.dependencies[0].get(read=read)
msb = var.dependencies[1].get(read=read)
return lsb + 256 * msb

def _setLsbMsb(self, var, value, write):
with self.root.updateGroup():
var.dependencies[0].set(value & 0xff, write=write)
var.dependencies[1].set((value >> 8) & 0xff, write=write)

22 changes: 14 additions & 8 deletions python/surf/devices/linear/_Ltc4151.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ def __init__(self,
mode = 'RO',
units = 'A',
disp = '{:1.3f}',
dependencies = [self.SenseMsb,self.SenseLsb],
linkedGet = lambda: (int(self.SenseMsb.value()<<4)|int(self.SenseLsb.value()&0xF))*20.0E-6/self.senseRes
dependencies = [self.SenseLsb, self.SenseMsb],
linkedGet = lambda var, read: self._getLsbMsb(var, read) * 20e-6 / self.senseRes
))

self.add(pr.RemoteVariable(
Expand Down Expand Up @@ -89,8 +89,8 @@ def __init__(self,
mode = 'RO',
units = 'V',
disp = '{:1.3f}',
dependencies = [self.VinMsb,self.VinLsb],
linkedGet = lambda: (int(self.VinMsb.value()<<4)|int(self.VinLsb.value()&0xF))*25.0E-3
dependencies = [self.VinLsb, self.VinMsb],
linkedGet = lambda var, read: self._getLsbMsb(var, read) * 25.0E-3
))

self.add(pr.LinkVariable(
Expand All @@ -99,8 +99,8 @@ def __init__(self,
mode = 'RO',
units = 'W',
disp = '{:1.3f}',
dependencies = [self.Vin,self.Iin],
linkedGet = lambda: (self.Vin.value())*(self.Iin.value())
dependencies = [self.Vin, self.Iin],
linkedGet = lambda read: (self.Vin.get(read=read))*(self.Iin.get(read=read))
))

self.add(pr.RemoteVariable(
Expand Down Expand Up @@ -133,8 +133,8 @@ def __init__(self,
mode = 'RO',
units = 'V',
disp = '{:1.3f}',
dependencies = [self.AdinMsb,self.AdinLsb],
linkedGet = lambda: (int(self.AdinMsb.value()<<4)|int(self.AdinLsb.value()&0xF))*500.0E-6
dependencies = [self.AdinLsb, self.AdinMsb],
linkedGet = lambda var, read: self._getLsbMsb(var, read) * 500.0E-6
))

self.add(pr.RemoteVariable(
Expand All @@ -147,3 +147,9 @@ def __init__(self,
mode = 'RW',
hidden = True,
))

def _getLsbMsb(self, var, read):
with self.root.updateGroup():
lsb = var.dependencies[0].get(read=read)
msb = var.dependencies[1].get(read=read)
return (msb << 4) | (lsb 0xf)
14 changes: 7 additions & 7 deletions python/surf/devices/nxp/_Sa56004x.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ def __init__(self,

############################################################################

def getTempReg(var):
x = var.dependencies[0].value()
def getTempReg(var, read):
x = var.dependencies[0].get(read=read)
sign = x >> 7 # Get the sign bit
x &= 0x7F # mask off sign bit
x = float(x)# Covert to degC
Expand All @@ -40,7 +40,7 @@ def setTempValues(var, value, write):
sign = 0x00
x = int(abs(value))
rawVal = (x&0xFF) | sign
deps[0].set(rawVal,write)
deps[0].set(rawVal, write=write)
return setTempValues

def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
Expand Down Expand Up @@ -72,8 +72,8 @@ def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
name = name,
description = description,
mode = 'RW',
linkedGet = lambda: rdVar.value(),
linkedSet = lambda value, write: wrVar.set(value),
linkedGet = lambda read: rdVar.get(read=read),
linkedSet = lambda value, write: wrVar.set(value, write=write),
dependencies = [rdVar],
enum = {
False: 'False',
Expand Down Expand Up @@ -315,8 +315,8 @@ def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
name = 'ConvertRate',
description = 'Conversion rate',
mode = 'RW',
linkedGet = lambda: self.ConvertRateRead.value(),
linkedSet = lambda value, write: self.ConvertRateWrite.set(value),
linkedGet = lambda read: self.ConvertRateRead.get(read=read),
linkedSet = lambda value, write: self.ConvertRateWrite.set(value, write=write),
dependencies = [self.ConvertRateRead],
units = 'Hz',
enum = {
Expand Down
2 changes: 1 addition & 1 deletion python/surf/devices/silabs/_Si5324.py
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,7 @@ def LoadTxtFile(arg):
description = 'Inverse of LOL',
mode = 'RO',
dependencies = [self.LOL_INT],
linkedGet = lambda: (False if self.LOL_INT.value() else True)
linkedGet = lambda read: (False if self.LOL_INT.get(read=read) else True)
))

def _setValue(self,offset,data):
Expand Down
2 changes: 1 addition & 1 deletion python/surf/devices/silabs/_Si5326.py
Original file line number Diff line number Diff line change
Expand Up @@ -1200,7 +1200,7 @@ def LoadTxtFile(arg):
description = 'Inverse of LOL',
mode = 'RO',
dependencies = [self.LOL_INT],
linkedGet = lambda: (False if self.LOL_INT.value() else True)
linkedGet = lambda read: (False if self.LOL_INT.get(read=read) else True)
))

def _setValue(self,offset,data):
Expand Down
2 changes: 1 addition & 1 deletion python/surf/devices/silabs/_Si5345Lite.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def LoadCsvFile(arg):
description = 'Inverse of LOL',
mode = 'RO',
dependencies = [self.Page0.LOL],
linkedGet = lambda: (False if self.Page0.LOL.value() else True)
linkedGet = lambda read: (False if self.Page0.LOL.get(read=read) else True)
))

def _setValue(self,offset,data):
Expand Down
2 changes: 1 addition & 1 deletion python/surf/devices/silabs/_Si5394Lite.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def LoadCsvFile(arg):
description = 'Inverse of LOL',
mode = 'RO',
dependencies = [self.Page0.LOL],
linkedGet = lambda: (False if self.Page0.LOL.value() else True)
linkedGet = lambda read: (False if self.Page0.LOL.get(read=read) else True)
))

def _setValue(self,offset,data):
Expand Down
14 changes: 7 additions & 7 deletions python/surf/devices/ti/_Tmp461.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ def __init__(self,

############################################################################

def getTempReg(var):
x = var.dependencies[0].value()
def getTempReg(var, read):
x = var.dependencies[0].get(read=read)
sign = x >> 7 # Get the sign bit
x &= 0x7F # mask off sign bit
x = float(x)# Covert to degC
Expand All @@ -37,7 +37,7 @@ def setTempValues(var, value, write):
sign = 0x00
x = int(abs(value))
rawVal = (x&0xFF) | sign
deps[0].set(rawVal,write)
deps[0].set(rawVal, write=write)
return setTempValues

def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
Expand Down Expand Up @@ -69,8 +69,8 @@ def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
name = name,
description = description,
mode = 'RW',
linkedGet = lambda: rdVar.value(),
linkedSet = lambda value, write: wrVar.set(value),
linkedGet = lambda read: rdVar.get(read=read),
linkedSet = lambda value, write: wrVar.set(value, write=write),
dependencies = [rdVar],
enum = {
False: 'False',
Expand Down Expand Up @@ -272,8 +272,8 @@ def addBoolPair(name,description,rdOffset,wrOffset,bitOffset):
name = 'ConvertRate',
description = 'Conversion rate',
mode = 'RW',
linkedGet = lambda: self.ConvertRateRead.value(),
linkedSet = lambda value, write: self.ConvertRateWrite.set(value),
linkedGet = lambda read: self.ConvertRateRead.get(read=read),
linkedSet = lambda value, write: self.ConvertRateWrite.set(value, write=write),
dependencies = [self.ConvertRateRead],
units = 'Hz',
enum = {
Expand Down
4 changes: 2 additions & 2 deletions python/surf/devices/ti/_UCD92xx.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ def __init__(self, **kwargs):
))

@staticmethod
def getPMbusLinearDataFormat11Bit(var):
def getPMbusLinearDataFormat11Bit(var, read):
# Get the 16-bt RAW value
raw = var.dependencies[0].value()
raw = var.dependencies[0].get(read=read)

# V is a 16-bit unsigned binary integer mantissa,
V = 1.0*raw
Expand Down
Loading

0 comments on commit 598775b

Please sign in to comment.