Select Git revision
merge_array_files.cwl
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
pcctypes.py 1.84 KiB
#For capnproto
from collections import namedtuple
from enum import Enum
from recordclass import recordclass
#I2C ports & Switch addresses of device
MPaddr=namedtuple("MPaddr","nI2C I2C nSwitch Switch");
#Device registers
DevReg=namedtuple("DevReg","Addr Register_R Register_W store");
#Addr: Byte (I2C) or *BBdev
#Register_R/W: Byte (I2C register)
#store: Byte 0=not stored else store index
#Bitbang devices
BBdev=namedtuple("BBdev","nPins devs pins addr")
# devs: *DevReg[nPins]
# pins: Byte[nPins]
# addr: Byte (SPI device address)
class I2Cmodules(Enum):
Switch = 0
RCU = 1
CLK = 2
UNB2 = 3
class DevType(Enum):
Var = 0
I2C = 1
SPIbb= 2
I2Cbb= 3
Instr =4
VarUpdate = 5
Internal = 6
HBA1 = 7
HBA2 = 8
class RW(Enum):
Hidden = 0 #Not an OPC_UA variable
ReadOnly = 1 #OPC_variable name_R
WriteOnly = 2 #OPC_variable name_RW
ReadWrite = 3 #both of above
class datatype(Enum):
dInt = 0
dfloat = 1
dstring = 2
#Variable two device link
Var2dev=namedtuple("Var2dev","name module type devreg width bitoffset Scale")
#name: string (Currently unused!)
#module: I2Cmodules
#Type: DevType
#DevReg: *DevReg
#Width: Byte (# of bits)
#Bitoffset: Byte
#Scale: Float (=1 means no scaling i.e. integer)
#OPC-UA variable: Array of similar variables
VarArray=recordclass("VarArray","name nVars Vars RW type size OPCR OPCW") #OPCR and OPCW linked at runtime
#name: string
#Vars: *Var2dev[nVars]
#RW: RW
#type: datatype
#size: =nVars (default), but x16/32 for HBA antennas
#OPCR/W: pointer to variable in OPC-UA server (linked during runtime)
#Instruction
Instr=namedtuple("DevInstr","type dev nvalue value")
#Type: DevType
#dev: pointer to vararray / DevReg / etc depending on type
#value: Bytes[nvalue]
#List of instructions
Instrs=namedtuple("Instr","name ninstr instr")
#name: string
#inst: Instr[ninstr]