-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmoving.c
76 lines (70 loc) · 2.1 KB
/
moving.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 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 <https://www.gnu.org/licenses/>.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "moving.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> //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);
}