From 92b78db99294224fb797dc172791f8fe798115bd Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 13:50:46 +0100 Subject: [PATCH 01/11] modified README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c0557d..7a1964c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# resy-ss17-template +# resy-ss17-grp1 Template for grp repositories From 398a259050598d9e7e3dd2626f9b0cf4b3eeef59 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 14:02:04 +0100 Subject: [PATCH 02/11] start to write switch.c --- V1/switch.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 V1/switch.c diff --git a/V1/switch.c b/V1/switch.c new file mode 100644 index 0000000..3527208 --- /dev/null +++ b/V1/switch.c @@ -0,0 +1,15 @@ +/* + * switch.c + * How to register an button and count this + * author: Simon Wörner, Manuel Vögele, + * Siegfried Kienzle + * 24-March-2017 + * + * */ + +//Source: http://elinux.org/RPi_GPIO_Code_Samples: +#define BCM2837_PERIPHERIAL_BASE 0x3F000000 +#define GPIO_BASE (BCM2837_PERIPHERIAL_BASE + 0x3F000000) + + + From 966611815f4f3791b4632ee0592130e199af50e0 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 15:06:31 +0100 Subject: [PATCH 03/11] add function reserve --- V1/switch.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index 3527208..3b3ac1e 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -7,9 +7,32 @@ * * */ -//Source: http://elinux.org/RPi_GPIO_Code_Samples: -#define BCM2837_PERIPHERIAL_BASE 0x3F000000 -#define GPIO_BASE (BCM2837_PERIPHERIAL_BASE + 0x3F000000) - +#include +#include + +int reserve(char gpioPort) +{ + int fd; + char buffer[2]; + + strcpy(buffer, gpioPort + "\n"); + + if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC) == -1) { + perror(NULL); + return EXIT_FAILURE; + } + + if(write(fd, &buffer, sizeof(buffer)) == -1) { + perror("Cannot write into file"); + return EXIT_FAILURE; + } + printf("Success"); + return EXIT_SUCCESS; +} +int main() +{ + + return 0; +} From 414c1a95acc36ce24b4b3e33734d7457017b8c87 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 15:09:38 +0100 Subject: [PATCH 04/11] add forgotten close in function reserve --- V1/switch.c | 1 + 1 file changed, 1 insertion(+) diff --git a/V1/switch.c b/V1/switch.c index 3b3ac1e..b00692a 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -27,6 +27,7 @@ int reserve(char gpioPort) return EXIT_FAILURE; } printf("Success"); + close(fd); return EXIT_SUCCESS; } From f230a08868b86f7d77929ff5439f298ef348d8d7 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 15:54:38 +0100 Subject: [PATCH 05/11] add some defines and the function inOut --- V1/switch.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/V1/switch.c b/V1/switch.c index b00692a..ed448c8 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -7,6 +7,13 @@ * * */ +#define PIN01 1 +#define PIN12 12 +#define PIN11 11 +#define PIN06 6 +#define IN ((const unsigned char *)"in\n") +#define OUT ((const unsigned char *)"out\n") + #include #include @@ -31,6 +38,10 @@ int reserve(char gpioPort) return EXIT_SUCCESS; } +int inOut(char gpioPort, char * inOut) +{ + +} int main() { From b15d09216e95a3eb9e28f375b6be27b213a8b2f8 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 16:34:06 +0100 Subject: [PATCH 06/11] remove some bugs --- V1/switch.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index ed448c8..ceab9d4 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -7,24 +7,27 @@ * * */ -#define PIN01 1 -#define PIN12 12 -#define PIN11 11 -#define PIN06 6 -#define IN ((const unsigned char *)"in\n") -#define OUT ((const unsigned char *)"out\n") +#define PIN01 ((char *) "1\n") +#define PIN12 ((char *) "12\n") +#define PIN11 ((char *) "11\n") +#define PIN06 ((char *) "6\n") +#define IN ((char *)"in\n") +#define OUT ((char *)"out\n") #include +#include +#include #include +#include -int reserve(char gpioPort) +int reserve(char* gpioPort) { int fd; char buffer[2]; + printf("%s", gpioPort); + strcpy(buffer, gpioPort ); - strcpy(buffer, gpioPort + "\n"); - - if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC) == -1) { + if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC) == -1)) { perror(NULL); return EXIT_FAILURE; } @@ -45,6 +48,6 @@ int inOut(char gpioPort, char * inOut) int main() { - + reserve(PIN06); return 0; } From a2baf654b6ed68ba65a518aca893a52c1f4c8a04 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 17:03:46 +0100 Subject: [PATCH 07/11] remove bug with strings --- V1/switch.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index ceab9d4..3af17d7 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -1,18 +1,18 @@ -/* +/* * switch.c * How to register an button and count this * author: Simon Wörner, Manuel Vögele, * Siegfried Kienzle * 24-March-2017 - * - * */ + * + * */ -#define PIN01 ((char *) "1\n") -#define PIN12 ((char *) "12\n") -#define PIN11 ((char *) "11\n") -#define PIN06 ((char *) "6\n") -#define IN ((char *)"in\n") -#define OUT ((char *)"out\n") +#define PIN01 "1\n" +#define PIN12 "12\n" +#define PIN11 "11\n" +#define PIN06 "6\n" +#define IN "in\n" +#define OUT "out\n" #include #include @@ -24,15 +24,13 @@ int reserve(char* gpioPort) { int fd; char buffer[2]; - printf("%s", gpioPort); strcpy(buffer, gpioPort ); - - if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC) == -1)) { + if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC)) == -1) { perror(NULL); return EXIT_FAILURE; } - if(write(fd, &buffer, sizeof(buffer)) == -1) { + if((write(fd, &buffer, sizeof(buffer))) == -1) { perror("Cannot write into file"); return EXIT_FAILURE; } From bcad9de814660e56482774de73fda0d6ae2e2f6e Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Fri, 24 Mar 2017 17:51:26 +0100 Subject: [PATCH 08/11] add function voltage and inOrOut --- V1/switch.c | 51 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index 3af17d7..d97f47a 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -7,12 +7,14 @@ * * */ -#define PIN01 "1\n" -#define PIN12 "12\n" -#define PIN11 "11\n" -#define PIN06 "6\n" +#define PIN01 "1" +#define PIN12 "12" +#define PIN11 "11" +#define PIN06 "6" #define IN "in\n" #define OUT "out\n" +#define V33 "1\n" +#define V0 "0\n" #include #include @@ -20,12 +22,12 @@ #include #include -int reserve(char* gpioPort) +int writeIntoFile(char* value, char* path) { int fd; - char buffer[2]; - strcpy(buffer, gpioPort ); - if((fd=open("/sys/class/gpio/export", O_RDWR | O_CREAT | O_TRUNC)) == -1) { + char buffer[3]; + strcpy(buffer, value); + if((fd=open(path, O_RDWR | O_CREAT | O_TRUNC)) == -1) { perror(NULL); return EXIT_FAILURE; } @@ -39,13 +41,40 @@ int reserve(char* gpioPort) return EXIT_SUCCESS; } -int inOut(char gpioPort, char * inOut) +int reserve(char* gpioPort) { + char str[3]; + strcpy(str, gpioPort); + strcat(str, "\n"); + return writeIntoFile(str,"/sys/class/gpio/export"); +} +int inOrOut(char* gpioPort, char* inOut) +{ + char *direc = "/direction"; + char *gpioPath = "/sys/class/gpio/gpio"; + char path[32]; + strcpy(path, gpioPath); + strcat(path, gpioPort); + strcat(path, direc); + return writeIntoFile(inOut, path); +} + +int voltage(char* gpioPort, char* volt) +{ + char *val = "/value"; + char *gpioPath = "/sys/class/gpio/gpio"; + char path[28]; + strcpy(path, gpioPath); + strcat(path, gpioPort); + strcat(path, val); + return writeIntoFile(volt, path); } int main() { - reserve(PIN06); - return 0; + reserve(PIN06); + inOrOut(PIN06, OUT); + voltage(PIN06, V0); + return 0; } From 71c04f77f333537a86b56bc59be7be28826bde55 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Mon, 27 Mar 2017 20:58:02 +0200 Subject: [PATCH 09/11] add reserve, voltage and inOrOut --- V1/switch.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/V1/switch.c b/V1/switch.c index d97f47a..1965736 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -74,7 +74,12 @@ int voltage(char* gpioPort, char* volt) int main() { reserve(PIN06); - inOrOut(PIN06, OUT); + reserve(PIN01); + reserve(PIN11); voltage(PIN06, V0); + voltage(PIN01, V33); + inOrOut(PIN01, OUT); + inOrOut(PIN11, IN); + return 0; } From fc25e2f5069661f181cc65212436044d5282c4e2 Mon Sep 17 00:00:00 2001 From: Siegfried Kienzle Date: Tue, 28 Mar 2017 06:34:23 +0200 Subject: [PATCH 10/11] remove logical bug --- V1/switch.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index 1965736..0ac0d12 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -76,10 +76,9 @@ int main() reserve(PIN06); reserve(PIN01); reserve(PIN11); - voltage(PIN06, V0); - voltage(PIN01, V33); inOrOut(PIN01, OUT); inOrOut(PIN11, IN); - + voltage(PIN06, V0); + voltage(PIN01, V33); return 0; } From 8281c38db8c3949009e907725ca038962b604f84 Mon Sep 17 00:00:00 2001 From: Kienzle Date: Wed, 29 Mar 2017 11:10:15 +0200 Subject: [PATCH 11/11] rename some functions and add some implementations --- V1/switch.c | 70 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/V1/switch.c b/V1/switch.c index 0ac0d12..b691f98 100644 --- a/V1/switch.c +++ b/V1/switch.c @@ -7,14 +7,12 @@ * * */ -#define PIN01 "1" -#define PIN12 "12" -#define PIN11 "11" -#define PIN06 "6" +#define BUTTON "17" #define IN "in\n" #define OUT "out\n" -#define V33 "1\n" -#define V0 "0\n" +#define HIGH "1\n" +#define LOW "0\n" +#define MAXBYTES 1 #include #include @@ -49,18 +47,18 @@ int reserve(char* gpioPort) return writeIntoFile(str,"/sys/class/gpio/export"); } -int inOrOut(char* gpioPort, char* inOut) +int setDirection(char* gpioPort, char* inOut) { char *direc = "/direction"; char *gpioPath = "/sys/class/gpio/gpio"; char path[32]; strcpy(path, gpioPath); - strcat(path, gpioPort); + strcat(path, gpioPort); strcat(path, direc); return writeIntoFile(inOut, path); } -int voltage(char* gpioPort, char* volt) +int setOutput(char* gpioPort, char* volt) { char *val = "/value"; char *gpioPath = "/sys/class/gpio/gpio"; @@ -71,14 +69,52 @@ int voltage(char* gpioPort, char* volt) return writeIntoFile(volt, path); } -int main() +int mainLoop(char* gpioPort) { - reserve(PIN06); - reserve(PIN01); - reserve(PIN11); - inOrOut(PIN01, OUT); - inOrOut(PIN11, IN); - voltage(PIN06, V0); - voltage(PIN01, V33); + int fid, portValue, count, countButton; + char *val = "/value"; + char *gpioPath = "/sys/class/gpio/gpio"; + char path[28]; + strcpy(path, gpioPath); + strcat(path, gpioPort); + strcat(path, val); + + while(true) + { + if( (fid=open(path, O_RDONLY)) == -1) + perror("Fehler "); + if(readInput(fid) == 1) + { + countButton++; + printf("%d", countButton); + } + + + close(fid); + } +} + +char[] readInput(int fid) +{ + char buffer[MAXBYTES]; + read(fid, &buffer, MAXBYTES); + return buffer; +} + +int unexport(char* gpioport) +{ + char str[3]; + strcpy(str, gpioPort); + strcat(str, "\n"); + return writeIntoFile(str,"/sys/class/gpio/unexport"); +} + + +int main() +{ + reserve(BUTTON); + setDirection(BUTTON, IN); + mainLoop(BUTTON); + unexport(BUTTON); return 0; }