#!/usr/bin/env python3

import sys, os, atexit
pn = os.path.abspath(os.path.dirname(sys.argv[0]))
parpar = os.path.dirname(os.path.dirname(pn))
os.chdir(parpar)
sys.path[0] = os.curdir

from mmgen.cfg import Config
from mmgen.util import msg
from mmgen.ui import keypress_confirm
from mmgen.led import LEDControl

opts_data = {
	'text': {
		'desc': 'Interactively test LED functionality',
		'usage': 'command',
		'options': """
-h, --help     Print this help message
""",
	}
}

cfg = Config(opts_data=opts_data)

def confirm_or_exit(prompt):
	if not keypress_confirm(cfg, f'{prompt}.  OK?', default_yes=True):
		msg('Exiting at user request')
		sys.exit(1)

confirm_or_exit('This script will interactively test LED functionality')

led = LEDControl(enabled=True)

atexit.register(led.stop)

confirm_or_exit('LED should now be turned off')

led.set('busy')

confirm_or_exit('LED should now be signaling busy (rapid flashing)')

led.set('standby')

confirm_or_exit('LED should now be signaling standby (slow flashing)')

led.set('error')

confirm_or_exit('LED should now be signaling error (insistent flashing)')

led.set('off')

confirm_or_exit('LED should now be turned off')

led.stop()

confirm_or_exit(f'LED should now be in its original state [trigger={led.board.trigger_reset}]')