outsourcing of gpio-code
This commit is contained in:
51
project/gpio.c
Normal file
51
project/gpio.c
Normal file
@@ -0,0 +1,51 @@
|
||||
/*GPIO.c*/
|
||||
#include<stdio.h>
|
||||
#include<fcntl.h>
|
||||
#include<string.h>
|
||||
#include<unistd.h>
|
||||
#include<string.h>
|
||||
|
||||
#define BASEPATH "/sys/class/gpio/"
|
||||
#define GPIO_FOLDER "gpio%s/"
|
||||
|
||||
void writeFile(char *filename, char *buffer, size_t count)
|
||||
{
|
||||
int fd = open(filename, O_WRONLY);
|
||||
if(fd == -1) {
|
||||
perror("Fehler bei open ");
|
||||
}
|
||||
write(fd, buffer, count);
|
||||
close(fd);
|
||||
}
|
||||
|
||||
void registerPin(char *pin)
|
||||
{
|
||||
writeFile(BASEPATH "export", pin, strlen(pin));
|
||||
}
|
||||
|
||||
void freePin(char *pin)
|
||||
{
|
||||
writeFile(BASEPATH "unexport", pin, strlen(pin));
|
||||
}
|
||||
|
||||
void setDirection(char *pin, char *direction, int dirlen)
|
||||
{
|
||||
char path[50];
|
||||
sprintf(path, BASEPATH GPIO_FOLDER "direction", pin);
|
||||
writeFile(path, direction, dirlen);
|
||||
}
|
||||
|
||||
void registerOutput(char *pin)
|
||||
{
|
||||
registerPin(pin);
|
||||
setDirection(pin, "out", 3);
|
||||
}
|
||||
|
||||
void writeOutput(char *pin, int state)
|
||||
{
|
||||
char path[50];
|
||||
sprintf(path, BASEPATH GPIO_FOLDER "value", pin);
|
||||
FILE *fd = fopen(path, "w");
|
||||
fprintf(fd, "%i", state);
|
||||
fclose(fd);
|
||||
}
|
||||
Reference in New Issue
Block a user