diff --git a/examples/c++/CMakeLists.txt b/examples/c++/CMakeLists.txt index 109663e..b33af78 100644 --- a/examples/c++/CMakeLists.txt +++ b/examples/c++/CMakeLists.txt @@ -4,6 +4,7 @@ add_executable (Pwm3-cycle Pwm3-cycle.cpp) add_executable (I2c-compass I2c-compass.cpp) add_executable (Spi-pot Spi-pot.cpp) add_executable (Uart Uart-example.cpp) +add_executable (Isr-pin6 Isr-pin6.cpp) include_directories(${PROJECT_SOURCE_DIR}/api) @@ -13,3 +14,4 @@ target_link_libraries (Pwm3-cycle mraa stdc++) target_link_libraries (I2c-compass mraa stdc++ m) target_link_libraries (Spi-pot mraa stdc++) target_link_libraries (Uart mraa stdc++) +target_link_libraries (Isr-pin6 mraa stdc++) diff --git a/examples/c++/Isr-pin6.cpp b/examples/c++/Isr-pin6.cpp new file mode 100644 index 0000000..19c37fa --- /dev/null +++ b/examples/c++/Isr-pin6.cpp @@ -0,0 +1,57 @@ +/* + * Author: Brendan Le Foll + * Copyright (c) 2015 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include + +#include "mraa.hpp" + +static volatile int counter = 0; +static volatile int oldcounter = 0; + +void +interrupt(void* args) +{ + ++counter; +} + +int +main() +{ + mraa::Gpio* x = new mraa::Gpio(6); + + x->dir(mraa::DIR_IN); + + x->isr(mraa::EDGE_BOTH, &interrupt, NULL); + + for (;;) { + if (counter != oldcounter) { + fprintf(stdout, "timeout counter == %d\n", counter); + oldcounter = counter; + } + // got to relieve our poor CPU! + sleep(1); + } + + return EXIT_SUCCESS; +}