/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This file is part of Shutter.
*
* Shutter is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Shutter is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Shutter. If not, see .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "moving.h"
#include
#include
#include //project is to be compiled to openwrt
#define RESETPIN "/sys/class/gpio/gpio2/value"
void set_ch (shutter *r, byte *channel)
{
while (*channel != r->ch)
{
if (*channel > r->ch)
{
press_button (prev);
(*channel)--;
}
else if (*channel < r->ch)
{
press_button (next);
(*channel)++;
}
}
}
//doing negative logic as reset is active low and GPIO2 is 1 on startup
void reset ()
{
FILE *gpio2 = fopen (RESETPIN, "w");
fprintf (gpio2, "0");
fclose (gpio2);
sleep (1);
gpio2 = fopen (RESETPIN, "w");
fprintf (gpio2, "1");
fclose (gpio2);
sleep (3);
}
//doing positive logic as button GPIOs are 0 on startup
void press_button (buttons b)
{
char *fname = calloc (29, sizeof (char ));
sprintf (fname, "/sys/class/gpio/gpio%d/value", b);
FILE *gpio = fopen (fname, "w");
fprintf (gpio, "0");
fclose (gpio);
gpio = fopen (fname, "w");
usleep (150000);
fprintf (gpio, "1");
fclose (gpio);
usleep (250000);
free (fname);
}
void lower (shutter *r)
{
press_button (down);
usleep (r->percentage * r->rolltime_down * 10000);
press_button (stop);
}