diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/sinewave/sinewave_example.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/examples/sinewave/sinewave_example.cpp b/examples/sinewave/sinewave_example.cpp index 606cab2..781b594 100644 --- a/examples/sinewave/sinewave_example.cpp +++ b/examples/sinewave/sinewave_example.cpp @@ -1,3 +1,4 @@ +#include <signal.h> #include <unistd.h> #include <chrono> @@ -9,11 +10,20 @@ #include <hwd.h> + +volatile bool signalEnd = false; + +void sig_handler(int signum) { + signalEnd = true; +} + using seconds = std::chrono::duration<double>; using Clock = std::chrono::high_resolution_clock; int main(int argc, char* argv[]) { + signal(SIGINT, sig_handler); + seconds interval{ 0.01 }; int i = 0; int samples; @@ -44,7 +54,7 @@ int main(int argc, char* argv[]) { hwd::sinewave::set_frequency(10); hwd::sinewave::set_phase(30); - while (1) { + while (!signalEnd) { if (i >= samples) break; i++; |