#Script imported from: Drive Out.xml
import traceback

#by default, failed
ret = 'Test failed'
success = False

try:
    #Pre-actions: 2 = drive out
    caput(DEVICE+':COM:2', 2)
    #Creating channels: dimension 1
    #PseudoPositioner id000000
    #ScalarDetector id000001
    id000001 = Channel(DEVICE+':STA:1', type = 'd')
    #ScalarDetector id000003
    id000003 = Channel(DEVICE+':IST:2', type = 'd')
    #ScalarDetector id000004
    id000004 = Channel(DEVICE+':DIAM:2', type = 'd')
    #ScalarDetector id000005
    id000005 = Channel(DEVICE+':IST1:1', type = 'd')
    #ScalarDetector id000006
    id000006 = Channel(DEVICE+':IST1:2', type = 'd')
    #ScalarDetector id000007
    id000007 = Channel(DEVICE+':IST2:1', type = 'd')
    #ScalarDetector id000008
    id000008 = Channel(DEVICE+':IST2:2', type = 'd')
    #ScalarDetector id000009
    id000009 = Channel(DEVICE+':IST3:1', type = 'd')
    #ScalarDetector id000010
    id000010 = Channel(DEVICE+':IST3:2', type = 'd')
except:
	print "Unexpected error:", sys.exc_info()[0]
	ret = 'Unable to create channel - ' + traceback.format_exc()
	success = False
	raise Exception('Unable to create channel - ' + traceback.format_exc())  
	sys.exit()

#TODO: Set the diplay names of positioners and detectors
scan = ManualScan(['id000000'], ['id000001', 'id000003', 'id000004', 'id000005', 'id000006', 'id000007', 'id000008', 'id000009', 'id000010'] , [0.0], [3000.0], [3000])
scan.start()

#Dimension 1
#PseudoPositioner id000000
for setpoint1 in range(0, 3000):
    readback1 = setpoint1
    sleep( 0.1 ) # Settling time
    #Detector id000001
    detector1 = id000001.get()
    #Detector id000003
    detector2 = id000003.get()
    #Detector id000004
    detector3 = id000004.get()
    #Detector id000005
    detector4 = id000005.get()
    #Detector id000006
    detector5 = id000006.get()
    #Detector id000007
    detector6 = id000007.get()
    #Detector id000008
    detector7 = id000008.get()
    #Detector id000009
    detector8 = id000009.get()
    #Detector id000010
    detector9 = id000010.get()
    scan.append ([setpoint1], [readback1], [detector1, detector2, detector3, detector4, detector5, detector6, detector7, detector8, detector9])

#Closing channels
id000001.close()
id000003.close()
id000004.close()
id000005.close()
id000006.close()
id000007.close()
id000008.close()
id000009.close()
id000010.close()

scan.end()

#return ok
ret = 'Slides moved out'
success = True