#!python

from pycpsw import *
#import numpy as np
import time


p = Path.loadYamlFile( '/afs/slac/u/el/jjo/images/AmcCarrierMrEthV2_project.yaml/000TopLevel.yaml', 'NetIODev' )

p_mmio = p.findByName('mmio')

# Thresholds
KlyWiperRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyWiperRegA') )
KlyWiperRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyWiperRegB') )
#KlyWiperRegAB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyWiperRegAB') )
KlyNVRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyNVRegA') )
KlyNVRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyNVRegB') )
#KlyNVRegAB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyNVRegAB') )
ModWiperRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModWiperRegA') )
ModWiperRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModWiperRegB') )
#ModWiperRegAB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModWiperRegAB') )
ModNVRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModNVRegA') )
ModNVRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModNVRegB') )
#ModNVRegAB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/ModNVRegAB') )

Mode = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/Mode') )

# CPLD
Status = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/Status') )

# 
CfgRegister = ScalVal.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/CfgRegister') )

AdcIn0 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcIn[0]') )
AdcIn1 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcIn[1]') )
AdcIn2 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcIn[2]') )
AdcIn3 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcIn[3]') )

FirmwareVersion = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/FirmwareVersion') )
SystemId0 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SystemId[0]') )
SystemId1 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SystemId[1]') )
SystemId2 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SystemId[2]') )
SystemId3 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SystemId[3]') )

FirmwareDate0 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/FirmwareDate[0]') )
FirmwareDate1 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/FirmwareDate[1]') )
FirmwareDate2 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/FirmwareDate[2]') )
FirmwareDate3 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/FirmwareDate[3]') )

SubType0 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SubType[0]') )
SubType1 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SubType[1]') )
SubType2 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SubType[2]') )
SubType3 = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEth/AmcCarrierMrLlrfApp/RtmLlrfCore/SubType[3]') )




#KlyWiperRegAB.setVal( [0x55] )
#print("AB=0x%x" % (KlyWiperRegAB.getVal()))
#Mode.setVal( [0x1] )
#print("Mode=0x%x" % (Mode.getVal()))


print("FIrmware=0x%x" % (FirmwareVersion.getVal()))
  
#Mode.setVal( [0x1] )
#Mode.setVal( [0x0] )

#Registers
print("SystemId0=0x%4x" % (SystemId0.getVal()))
print("SystemId1=0x%4x" % (SystemId1.getVal()))
print("SystemId2=0x%4x" % (SystemId2.getVal()))
print("SystemId3=0x%4x" % (SystemId3.getVal()))
print("Status=0x%4x" % (Status.getVal()))

print
print("FirmwareVersion=0x%4x" % (FirmwareVersion.getVal()))

DateString =''

DateString = chr((FirmwareDate0.getVal()) >> 8)
DateString = DateString + chr((FirmwareDate0.getVal()) & 255)
DateString = DateString + chr((FirmwareDate1.getVal()) >> 8)
DateString = DateString + chr((FirmwareDate1.getVal()) & 255)
DateString = DateString + chr((FirmwareDate2.getVal()) >> 8)
DateString = DateString + chr((FirmwareDate2.getVal()) & 255)
DateString = DateString + chr((FirmwareDate3.getVal()) >> 8)
DateString = DateString + chr((FirmwareDate3.getVal()) & 255)

print ("Compile Date " + DateString)


IdString =''

IdString = chr((SystemId0.getVal()) >> 8)
IdString = IdString + chr((SystemId0.getVal()) & 255)
IdString = IdString + chr((SystemId1.getVal()) >> 8)
IdString = IdString + chr((SystemId1.getVal()) & 255)
IdString = IdString + chr((SystemId2.getVal()) >> 8)
IdString = IdString + chr((SystemId2.getVal()) & 255)
IdString = IdString + chr((SystemId3.getVal()) >> 8)
IdString = IdString + chr((SystemId3.getVal()) & 255)

print ("ID String " + IdString)

SubTypeString =''

SubTypeString = chr((SubType0.getVal()) >> 8)
SubTypeString = SubTypeString + chr((SubType0.getVal()) & 255)
SubTypeString = SubTypeString + chr((SubType1.getVal()) >> 8)
SubTypeString = SubTypeString + chr((SubType1.getVal()) & 255)
SubTypeString = SubTypeString + chr((SubType2.getVal()) >> 8)
SubTypeString = SubTypeString + chr((SubType2.getVal()) & 255)
SubTypeString = SubTypeString + chr((SubType3.getVal()) >> 8)
SubTypeString = SubTypeString + chr((SubType3.getVal()) & 255)

print ("Sub Type  " + SubTypeString)

print
ThresLow = 0x00
ThresHi  = 0xFF

#while (True) :
#  KlyWiperRegA.setVal( [ThresLow] )
#  time.sleep(.1)
#  KlyWiperRegA.setVal( [ThresHi] )
# time.sleep(.1)
#
#  KlyWiperRegB.setVal( [ThresLow] )
#  time.sleep(.1)
# KlyWiperRegB.setVal( [ThresHi] )
#  time.sleep(.1)
#
#  ModWiperRegA.setVal( [ThresLow] )
#  time.sleep(.1)
#  ModWiperRegA.setVal( [ThresHi] )
#  time.sleep(.1)
  
#  ModWiperRegB.setVal( [ThresLow] )
#  time.sleep(.1)
#  ModWiperRegB.setVal( [ThresHi] )
#  time.sleep(.1)
#while (True) :
#  print (" Status 0x%x" %(Status.getVal()))
#  time.sleep(1)
  
#CfgRegister.setVal( [0x3fff] )
print("CfgRegister=0x%x" % (CfgRegister.getVal()))

print("AdcIn0=0x%x" % (AdcIn0.getVal()))
print("AdcIn1=0x%x" % (AdcIn1.getVal()))
print("AdcIn2=0x%x" % (AdcIn2.getVal()))
print("AdcIn3=0x%x" % (AdcIn3.getVal()))