#!python

from pycpsw import *
import numpy as np
import time
from math import *
import matplotlib.pyplot as plt

import Tkinter
from  Tkinter import *
import tkFont



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('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyWiperRegA') )
KlyWiperRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyWiperRegB') )
KlyNVRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyNVRegA') )
KlyNVRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/KlyNVRegB') )
ModWiperRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/ModWiperRegA') )
ModWiperRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/ModWiperRegB') )
ModNVRegA = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/ModNVRegA') )
ModNVRegB = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/ModNVRegB') )


AdcFrameDelay = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcFrameSetDelay') )
AdcSetDelay = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcSetDelay') )
AdcIDelayLoad = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/AdcIDelayLoad') )	

DataTrigDelay = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmData/PulseDelay') )
DataTrigMask = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmData/OpCodeMask[0-7]') )

AccelTrigDelay = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmAccel/PulseDelay') )
AccelTrigWidth = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmAccel/PulseWidth') )
AccelTrigMask = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmAccel/OpCodeMask[0-7]') )

StandbyTrigDelay = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmStandby/PulseDelay') )
StandbyTrigWidth = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmStandby/PulseWidth') )
StandbyTrigMask = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/TrigRtmStandby/OpCodeMask[0-7]') )


SoftBufferClear = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/SoftBufferClear') )
SoftBufferTrigger = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/SoftBufferTrigger') )

BeamVIData = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/RtmAdcBuffer[0]/MemoryArray[0-511]') )
BeamPwrData = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/RtmAdcBuffer[1]/MemoryArray[0-511]') )

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

FaultClear = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/FaultClear') )

FaultStatusBit = ScalVal_RO.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierMrLlrfApp/RtmLlrfCore/FaultOut') )

ClkConfig = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierCore/AxiSy56040/OutputConfig[0-3]') )
ClkSel = ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierCore/AmcCarrierTiming/TimingFrameRx/ClkSel') )
TimingPolarity =ScalVal.create( p_mmio.findByName('AmcCarrierMrEthV2/AmcCarrierCore/AmcCarrierTiming/TimingFrameRx/RxPolarity') )

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

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

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

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

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

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

StatusBits1 = ['Normal Mode', 'Motor Time out', 'Detuning', 'Tuning', 'Lower Tuned', 'Upper Tuned', 'Motor Not Tuned',
              'Lower Detuned', 'Upper Detuned', 'Motor Not Detuned', 'Modulator Fault', 'Beam Under Current', 'Beam Over Current',
              'Beam Over Voltage', 'Forward Power Over', 'Reflected Power Over']

StatusBits0 = ['Standby Mode', 'Motor Not Timed out', 'Not Detuning', 'Not Tuning', 'Lower Not Tuned', 'Upper Not Tuned', 'Motor Tuned',
              'Lower Not Detuned', 'Upper not Detuned', 'Motor  Detuned', 'Modulator Ok', 'Beam Under Current OK', 'Beam Over Current Ok',
              'Beam Over Voltage Ok', 'Forward Power Over Ok', 'Reflected Power Over Ok']

TimingClk = 119

def PotVolts2Counts(Threshold):

	RTop = 1
	RChip = 10
	RBottom = 1
	VSource = 3.3

	I = VSource/(RTop + RChip + RBottom)
	Counts = int((Threshold-I*RBottom)*255/I/RChip)
	return Counts
  
def ADCCounts2Volts(Counts):
	Volts = float(Counts)*2.5/65535
	return Volts

def DecodeStatus(Stat):
	for i in range(15,-1,-1):
#		print(i)
		if ((int(Stat) & int(pow(2,i))) > 0):
			print StatusBits1[(15-i)]
		else:
			print StatusBits0[(15-i)]
	return

def StatClear():
  FaultClear.setVal([1])
  FaultClear.setVal([0])

def SLEDStatus(Stat):
	SLEDBITs = (Stat >> 6) & 0x3F
	if (SLEDBITs == 0x31):
		print("SLED Tuned")
	elif (SLEDBITs == 0x0E):
		print ('SLED Detuned')
	else:
		print ('SLED Fault')
	return
	
def PulseWidth(Time):
	Counts = int(Time*119)
	return Counts	
	
def FastADCCounts2Volts(Counts):
	Volts = (float(Counts) - 2048)/2048
	return Volts
	
def us2Counts(val):
	Counts = int(val*TimingClk)
	return Counts

def Counts2us(val):
	t = float(val/TimingClk)
	return t


def ADCDataDelay(Taps):
	AdcSetDelay.setVal([(Taps)])
	AdcIDelayLoad.setVal([1])
	AdCIDelayLoad.setVal([0])
	
	
#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()))




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)



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)

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
print ("FirmwareVersion = 0x%4x" % (FirmwareVersion.getVal()))
print ("   Compile Date = " + DateString)
print ("      ID String = " + IdString)
print ("       Sub Type = " + SubTypeString)

print ("Timing Setup")
ClockConfig = [0,0,0,0]
ClkConfig.setVal(ClockConfig)
ClockConfig = ClkConfig.getVal()
print ClockConfig

TimingPolarity.setVal([1])

print "Clock Select"
ClkSel.setVal([0])
print ClkSel.getVal()

DataTrigMask.setVal([0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000])
DataTrigDelay.setVal([50])

AccelTrigWidth.setVal([PulseWidth(5)])
AccelTrigDelay.setVal([0])
AccelTrigMask.setVal([0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000])

StandbyTrigWidth.setVal([PulseWidth(5)])
StandbyTrigDelay.setVal([2000])
StandbyTrigMask.setVal([0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000])



print
print ("Test Threshold Pot and ADC")
Thres = 0x00


BCThres = 2.5
BVThres = 1.0
FWDThres = 1.5
REFLThres = 2.0

ThresMin = 0.275
ThresMax = 3.025

def writeBeamVoltThres(val):
	Thres = float(val)
	if (Thres < ThresMin):
		Thres = ThresMin
	elif (Thres > ThresMax):
		Thres = ThresMax

	KlyWiperRegB.setVal( [PotVolts2Counts(Thres)] )
	time.sleep(.02)
	s_BeamVoltsADC.set('{:06.4f}'.format(ADCCounts2Volts(AdcIn1.getVal())))
	return


def writeBeamCurrentThres(val):
	Thres = float(val)
	if (Thres < ThresMin):
		Thres = ThresMin
	elif (Thres > ThresMax):
		Thres = ThresMax

	KlyWiperRegA.setVal( [PotVolts2Counts(Thres)] )
	time.sleep(.02)
	s_BeamCurrentADC.set('{:06.4f}'.format(ADCCounts2Volts(AdcIn0.getVal())))
	return

def writeFwdPwrThres(val):
	Thres = float(val)
	if (Thres < ThresMin):
		Thres = ThresMin
	elif (Thres > ThresMax):
		Thres = ThresMax

	ModWiperRegA.setVal( [PotVolts2Counts(Thres)] )
	time.sleep(.02)
	s_FwdPwrADC.set('{:06.4f}'.format(ADCCounts2Volts(AdcIn2.getVal())))
	return

def writeReflPwrThres(val):
	Thres = float(val)
	if (Thres < ThresMin):
		Thres = ThresMin
	elif (Thres > ThresMax):
		Thres = ThresMax

	ModWiperRegB.setVal( [PotVolts2Counts(Thres)] )
	time.sleep(.02)
	s_ReflPwrADC.set('{:06.4f}'.format(ADCCounts2Volts(AdcIn3.getVal())))
	return



def writeAccelWidth(val):
	Counts = int(us2Counts(float(val)))
	AccelTrigWidth.setVal(Counts)
	s_AccelWidth.set(str(Counts2us(AccelTrigWidth.getVal())))
	return

#while (True) :
#KlyWiperRegA.setVal( [PotVolts2Counts(BCThres)] )
#KlyWiperRegB.setVal( [PotVolts2Counts(BVThres)] )
#ModWiperRegA.setVal( [PotVolts2Counts(FWDThres)] )
#ModWiperRegB.setVal( [PotVolts2Counts(REFLThres)] )

# write CFG to scan
CfgRegister.setVal([0xFF1C])
time.sleep(0.1)

# Write CFG to no longer update
# clear msb, writing 0 does not work!
CfgRegister.setVal([0x7F1C])
time.sleep(0.1)
print
print

# Read adc's



BCThresADC = ADCCounts2Volts(AdcIn0.getVal())
BVThresADC = ADCCounts2Volts(AdcIn1.getVal())
FWDThresADC = ADCCounts2Volts(AdcIn2.getVal())
REFLThresADC = ADCCounts2Volts(AdcIn3.getVal())


BCThresErr = (BCThresADC - BCThres)/BCThres * 100
BVThresErr = (BVThresADC - BVThres)/BVThres * 100
FWDThresErr = (FWDThresADC - FWDThres)/FWDThres * 100
REFLThresErr = (REFLThresADC - REFLThres)/REFLThres * 100

print('   Beam Current Threshold {:06.4f}  {:6.2f}%'.format(BCThresADC, BCThresErr))
print('   Beam Voltage Thershold {:06.4f}  {:6.2f}%'.format(BVThresADC, BVThresErr))
print('  Forward Power Threshold {:06.4f}  {:6.2f}%'.format(FWDThresADC, FWDThresErr))
print('Reflected Power Threshold {:06.4f}  {:6.2f}%'.format(REFLThresADC, REFLThresErr))
print

def UpdateBeamVThres():
	return

top = Tk()


v_Firmware = StringVar()
v_DateString = StringVar()
v_IdString = StringVar()
v_SubTypeString = StringVar()

v_BeamVoltThreshold = DoubleVar()
s_BeamVoltsADC = StringVar()

v_BeamCurrentThreshold = DoubleVar()
s_BeamCurrentADC = StringVar()

v_FwdPwrThreshold = DoubleVar()
s_FwdPwrADC = StringVar()

v_ReflPwrThreshold = DoubleVar()
s_ReflPwrADC = StringVar()

s_AccelWidth = StringVar()
s_AccelDelay = StringVar()

f_title = Frame(top)
f_title.grid(row = 0, column = 0, columnspan=3)
Label(f_title, text = 'RF Interlock Test', fg = "blue", font = ('Times', '24', 'bold italic')).grid(row=0, column = 0)
l_Title = Label(f_title, text = 'RF Interlock Test', fg = "blue", font = ('Times', '24', 'bold italic'))
l_Title.pack(side=TOP, anchor=W, expand=YES)

f_ID = Frame(top, bd=4, relief=RIDGE)
f_ID.grid(row = 1, column = 0, sticky= N)
Label(f_ID, text = 'RTM ID', fg = "blue", font = ('Times', '16', 'bold italic')).grid(row=1, column = 0)
Label(f_ID, text = 'Version ' + str(FirmwareVersion.getVal())).grid(row = 2, column=0, sticky = W)
Label(f_ID, text = 'Date ' + DateString).grid(row = 3, column=0, sticky = W)
Label(f_ID, text = 'ID ' + IdString).grid(row = 4, column=0, sticky = W)
Label(f_ID, text = 'Sub Type ' + SubTypeString).grid(row = 5, column=0, sticky = W)



f_Threshold = Frame(top, bd=4, relief=RIDGE)
f_Threshold.grid(row=2, column = 0, sticky = N)
l_ThresTitle = Label(f_Threshold, text = 'Thresholds', fg = "blue", font = ('Times', '16', 'bold italic')).grid(row = 0, column=0, sticky=N)

l_BeamVolts = Label(f_Threshold, text = 'BeamVolts')
l_BeamVolts.grid(row = 1, column = 0, sticky = W)
SldrBV = Scale(f_Threshold, from_=0.275, to=3.025, orient="horizontal",length=100, resolution=0.01, command=writeBeamVoltThres)
SldrBV.grid(row = 1, column = 1, sticky = W)
SldrBV.set(ADCCounts2Volts(AdcIn1.getVal()))
ebx_BeamVoltsThreshold = Entry(f_Threshold, textvariable = s_BeamVoltsADC, width=10)
ebx_BeamVoltsThreshold.grid(row=1, column=2)

l_BeamCurrent = Label(f_Threshold, text = 'BeamCurrent')
l_BeamCurrent.grid(row = 3, column = 0, sticky = W)
SldrBC = Scale(f_Threshold, from_=0.275, to=3.025, orient="horizontal",length=100, resolution=0.01, command=writeBeamCurrentThres)
SldrBC.grid(row = 3, column = 1, sticky = W)
SldrBC.set(ADCCounts2Volts(AdcIn0.getVal()))
ebx_BeamCurrentThreshold = Entry(f_Threshold, textvariable = s_BeamCurrentADC, width=10)
ebx_BeamCurrentThreshold.grid(row=3, column=2)

l_FwdPwr = Label(f_Threshold, text = 'Forward Power ')
l_FwdPwr.grid(row = 5, column = 0, sticky = W)
SldrFP = Scale(f_Threshold, from_=0.275, to=3.025, orient="horizontal",length=100, resolution=0.01, command=writeFwdPwrThres)
SldrFP.grid(row = 5, column = 1, sticky = W)
SldrFP.set(ADCCounts2Volts(AdcIn2.getVal()))
ebx_FwdPwrThreshold = Entry(f_Threshold, textvariable = s_FwdPwrADC, width=10)
ebx_FwdPwrThreshold.grid(row=5, column=2)


l_ReflPwr = Label(f_Threshold, text = 'Reflected Power')
l_ReflPwr.grid(row = 7, column = 0, sticky = W)
SldrRP = Scale(f_Threshold, from_=0.275, to=3.025, orient="horizontal",length=100, resolution=0.01, command=writeReflPwrThres)
SldrRP.grid(row = 7, column = 1, sticky = W)
SldrRP.set(ADCCounts2Volts(AdcIn3.getVal()))
ebx_ReflPwrThreshold = Entry(f_Threshold, textvariable = s_ReflPwrADC, width=10)
ebx_ReflPwrThreshold.grid(row=7, column=2)


f_Triggers = Frame(top, bd=4, relief=RIDGE)
f_Triggers.grid(row = 1, column = 1, columnspan=3)

l_TriggersTitle = Label(f_Threshold, text = 'Triggers', fg = "blue", font = ('Times', '16', 'bold italic')).grid(row = 0, column=0, sticky=N)
l_AccelWidth = Label(f_Triggers, text = 'Accelerate Width')
l_AccelWidth.grid(row = 1, column = 0)
ebx_AccelWidth = Entry(f_Triggers, textvariable = s_AccelWidth, width=10)
ebx_AccelWidth.grid(row=1, column = 1)

l_AccelDelay = Label(f_Triggers, text = 'Accelerate Delay')
l_AccelDelay.grid(row = 2, column = 0)
ebx_AccelDelay = Entry(f_Triggers, textvariable = s_AccelDelay, width=10)
ebx_AccelDelay.grid(row=2, column = 1)


top.mainloop()

time.sleep(1)
x=0
while (True):

	StatVal = Status.getVal()
	DecodeStatus(StatVal)
	print
	if (FaultStatusBit.getVal() == 1):
		print('Faulted')
	else:
		print('No Fault')

	SLEDStatus(StatVal)
	time.sleep(2)
	print
	print
	print x
	x=x+1
	if (x == 10):
		print ('Clear')
		StatClear()	
		x = 1


	
