# testleds can be :
# "all" to test all the leds
# a single led number, a list of led numbers

import hyperion
import time
#import colorsys

# Get parameters
sleepTime = float(hyperion.args.get('sleepTime', 0.5))
testleds = hyperion.args.get('testleds', "all")
ledlist = hyperion.args.get('ledlist', "1")

testlist = ()
if (testleds == "list") and (type(ledlist) is str):
	for s in ledlist.split(','):
		i = int(s)
		if (i<hyperion.ledCount):
			testlist += (i,)
elif (testleds == "list") and (type(ledlist) is list):
	for s in (ledlist):
		i = int(s)
		if (i<hyperion.ledCount):
			testlist += (i,)
else:
	testlist = range(hyperion.ledCount)

def TestRgb( iteration ):

    switcher = {
        0: (255, 0, 0),
        1: (0, 255, 0),
        2: (0, 0, 255),
        3: (255, 255, 255),
        4: (0, 0, 0),
    }

    return switcher.get(iteration, (127,127,127) )

ledData = bytearray(hyperion.ledCount * (0,0,0) )
i = 0
while not hyperion.abort():
	j = i % 5
	if (testleds == "all"):
		for lednum in testlist:
			rgb = TestRgb( j )
			ledData[3*lednum+0] = rgb[0] 
			ledData[3*lednum+1] = rgb[1] 
			ledData[3*lednum+2] = rgb[2] 
	else:
		for lednum in testlist:
			rgb = TestRgb( j )
			ledData[3*lednum+0] = rgb[0] 
			ledData[3*lednum+1] = rgb[1] 
			ledData[3*lednum+2] = rgb[2] 

	hyperion.setColor (ledData)
	i += 1
	time.sleep(sleepTime)