#include "all-headers.h"

uint32_t antiBlinkBuffer;

const uint32_t bufferEmpty(0);
const uint32_t bufferFull(~ bufferEmpty);

bool buttonReleased;
bool actionDone;

DigitalPort LED[5];

void setup (USER_MODE) {
	// Start
	digitalWrite(L0_LED, true);

	antiBlinkBuffer = 0;

	buttonReleased = digitalRead(P0_PUSH_BUTTON);

	actionDone = false;

	LED[0] = L0_LED;
	LED[1] = L1_LED;
	LED[2] = L2_LED;
	LED[3] = L3_LED;
	LED[4] = L4_LED;
}

void loop (USER_MODE) {

	// Shift bits
	antiBlinkBuffer <<= 1;

	if (digitalRead(P0_PUSH_BUTTON))
		antiBlinkBuffer |= 0x01;

	// Command leds with buttons
	if (antiBlinkBuffer == bufferEmpty) {
		buttonReleased = false;
	}
	else if (antiBlinkBuffer == bufferFull) {
		buttonReleased = true;
		actionDone = false;
	}

	if (!buttonReleased && !actionDone) {
		digitalToggle(L0_LED);
		actionDone = true;
	}
}