Skip to content
Snippets Groups Projects
Select Git revision
  • 89ffab29f55f52d8fdfa096b0330a9630a9380d6
  • master default protected
  • reverse_versions
  • optimize_workflow
  • poppy_integration_v50
  • poppy_integration
  • releases/v5.0 protected
  • use-versioned-releases
  • releases/v5.0rc2 protected
  • releases/v5.0rc1 protected
  • releases/ldv_v407_atdb protected
  • ldv_v407_debug
  • releases/ldv_v406_debug protected
  • releases/ldv_v405 protected
  • releases/ldv_v404 protected
  • v5.0
  • v5.0rc2
  • v5.0rc1
  • ldv_v406_debug
  • ldv_v405_debug
  • ldv_v404
  • ldv_v403
  • ldv_v402
  • v4.0
  • ldv_v401
  • ldv_v40
  • ldv_v031
  • ldv_v03
  • ldv_v01
29 results

merge_array_files.cwl

Blame
  • 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]