from time import sleep
import parallel

def doSet(ports,p):
	bStr = ''
	for i in xrange(0,8):
		if ports[7-i] == False:
			bStr+='0'
		else:
			bStr+='1'
	
	p.setData(int(bStr,2))

def main():
	p = parallel.Parallel()

	ports = []
	for i in range(0,8):
		ports.append(False)

	print "start"
	ports[0] = True
	doSet(ports, p)
	num = 0
	dir = 1
	max = 5
	loop = -1
	while loop < max:
		try:
			num = ports.index(True)
			ports[num] = False
			if num + 1 == len(ports):
				dir = -1
			elif num == 0:
				dir = 1
				loop = loop+1
			ports[num + dir] = True
			
			
			doSet(ports, p)
			sleep(0.1)
		except KeyboardInterrupt:
			print "Breaking"
			break

	print "End of program 1!"
	#Program 2
	ports[0] = True
	#Reset ports:
	for i in range(1,7):
		ports[i] = False
	print "Reset ports"
	doSet(ports,p)
	print "Begin program 2"
	while 1:
		try:
			num = ports.index(True)
			try:
				if ports[ports.index(True)+1:].index(True) == 0:
					if num == 0:
						print "Breaking"
						break
					num = -1
				else:
					ports[num] = False
			except ValueError:
				if num == 7:
					num = -1
				else:
					ports[num] = False
			ports[num+1] = True

			doSet(ports,p)
			sleep(0.1)
		except KeyboardInterrupt:
			print "Breaking"
			break

	print "End of Program 2!"

	for x in range(0,2):
		#Blink all led's twice:
		p.setData(254)
		sleep(0.3)
		p.setData(128)
		sleep(0.2)

	p.setData(0)
	
	print "Press ctrl+c within 2 seconds to cancel"
	t = 0
	while t < 2:
		try:
			sleep(0.1)
			t = t + 0.1
		except KeyboardInterrupt:
			print "Exitting"
			exit()
	print "Restarting!"
	main()

main()
