/* * pins2.h * * Created on: Jan 31, 2015 * Author: Paul Bunt and Joe Boylan * * this is a fork of pins.h, adding functinality for input checking */ #ifndef PINS2_H_ #define PINS2_H_ #include #include #include #include #include #include #include "mraa.h" void delay(int milliseconds); bool PinPulse(int pin, int time); bool PinActive(int pin); bool PinPulse(int pin, int time){ mraa_result_t r = MRAA_SUCCESS; mraa_init(); mraa_gpio_context gpio; gpio = mraa_gpio_init(pin); if ( gpio == NULL ) { fprintf(stderr, "Error opening GPIO\n"); exit(1); } r = mraa_gpio_dir(gpio, MRAA_GPIO_OUT); if ( r != MRAA_SUCCESS ) { mraa_result_print(r); mraa_result_print(r); } //turn on r = mraa_gpio_write(gpio, 1); if ( r != MRAA_SUCCESS) { mraa_result_print(r); } delay(time); //turn off r = mraa_gpio_write(gpio, 0); if ( r != MRAA_SUCCESS) { mraa_result_print(r); } /* Clean up GPIO and exit */ r = mraa_gpio_close(gpio); if ( r != MRAA_SUCCESS ) { mraa_result_print(r); } } void delay(int milliseconds) { long pause; clock_t now,then; pause = milliseconds*(CLOCKS_PER_SEC/1000); now = then = clock(); while( (now-then) < pause ) now = clock(); } bool PinActive(int pin){ //init MRAA mraa_result_t r = MRAA_SUCCESS; mraa_init(); //init pin mraa_gpio_context gpio; gpio = mraa_gpio_init(pin); if ( gpio == NULL ) { fprintf(stderr, "Error opening GPIO\n"); exit(1); } //set pin for input r = mraa_gpio_dir(gpio, MRAA_GPIO_IN); if ( r != MRAA_SUCCESS ) { mraa_result_print(r); mraa_result_print(r); } bool returning = false; int input = mraa_gpio_read(gpio); switch(input) { case 0: returning = false; break; case 1: returning = true; break; case -1: fprintf(stderr, "Error Reading GPIO\n"); returning = false; break; default: fprintf(stdout, "something went wrong..."); returning = false; } /* Clean up GPIO and exit */ r = mraa_gpio_close(gpio); if ( r != MRAA_SUCCESS ) { mraa_result_print(r); } return returning; } #endif /* PINS2_H_ */