/*
 * Program for PIR-Sensor.
 * Connect on board pin number 07 to Sensor
 *
 * gcc -Wall -o pir -l wiringPi pir.c
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <signal.h>
#include <wiringPi.h>

/* Sensor auf GPIO 4, Pin 7, WiringPi 7 */
#define SENSOR 7

unsigned int state = 0;
unsigned int data  = 0;
struct sigaction sig_struct;

/* Signalhandler fuer STRG-C */
void  finish(int sig)
  {
  printf("Signal %d empfangen. Programm wird beendet.\n", sig);
  exit(0);
  }

int main(int argc, char **argv)
  {
  /* Initialisierung der Bibliothek */
  if (wiringPiSetup() == -1)
    {
    printf("Please run this as root\n");
    return EXIT_FAILURE;
    }

  /* Signalhandler fuer STRG-C einrichten */
  sig_struct.sa_handler = finish;
  sigemptyset(&sig_struct.sa_mask);
  sig_struct.sa_flags = 0;
  sigaction(SIGINT,&sig_struct,NULL);

  /* Sensor als Input definieren */
  pinMode(SENSOR, INPUT);

  while((data = digitalRead(SENSOR)) != 0)
    {
    usleep(100000);
    }

  printf("Bereit...\n");
  while (1)
    {
    data = digitalRead(SENSOR);
    if(data == 1 && state == 0)
      {
      printf("Bewegung erkannt - %d\n",(int)time(NULL));
      state = 1;
      }
    else if (data == 0 && state == 1)
      {
      printf("Bereit...\n");
      state = 0;
      }
    usleep(100000);
    }
  return EXIT_SUCCESS;
  }


