/******************************************************************************!
 * \file blink.c
 * \author Sebastien Beaugrand
 * \sa http://beaugrand.chez.com/
 * \copyright CeCILL 2.1 Free Software license
 ******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "wiringPi.h"

int main(int argc, char* argv[])
{
    int led;
    int button;
    int i;

    if (argc < 2) {
        printf("Usage: blink <pin>\n");
        return EXIT_FAILURE;
    }
    led = atoi(argv[1]);

    if (pinMode(led, OUTPUT)) {
        printf("error: pinMode(%d, OUTPUT) failed\n", led);
        return EXIT_FAILURE;
    }
    for (i = 0; i < 5; ++i) {
        digitalWrite(led, HIGH);
        delay(1000);
        digitalWrite(led, LOW);
        delay(1000);
    }

    if (argc != 3) {
        digitalQuit(led);
        return EXIT_SUCCESS;
    }

    button = atoi(argv[2]);
    if (pinMode(button, INPUT)) {
        printf("error: pinMode(%d, INPUT) failed\n", button);
        return EXIT_FAILURE;
    }

    for (i = 0; i < 100; ++i) {
        if (digitalRead(button) == LOW) {
            digitalQuit(button);
            for (i = 0; i < 5; ++i) {
                digitalWrite(led, HIGH);
                delay(500);
                digitalWrite(led, LOW);
                delay(500);
            }
            digitalQuit(led);
            return EXIT_SUCCESS;
        }
        delay(100);
    }

    digitalQuit(led);
    digitalQuit(button);
    return EXIT_SUCCESS;
}