diff options
-rw-r--r-- | examples/sinewave/sinewave.cpp | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/examples/sinewave/sinewave.cpp b/examples/sinewave/sinewave.cpp index 519ed46..398fa3c 100644 --- a/examples/sinewave/sinewave.cpp +++ b/examples/sinewave/sinewave.cpp @@ -2,47 +2,40 @@ #include <unistd.h> #include <chrono> -#include <functional> #include <iostream> #include <stdexcept> -#include <string> #include <thread> #include <hwd.h> -volatile sig_atomic_t keep_running {1}; +using seconds = std::chrono::duration<double>; + + +volatile sig_atomic_t keep_running {true}; -void termination_handler(int signum) +void termination_handler(int) { keep_running = false; } -using seconds = std::chrono::duration<double>; -using Clock = std::chrono::high_resolution_clock; - - int main(int argc, char* argv[]) { struct sigaction int_action; - int_action.sa_handler = termination_handler; sigemptyset(&int_action.sa_mask); int_action.sa_flags = 0; - sigaction(SIGINT, &int_action, NULL); - - seconds interval{ 0.01 }; - int i = 0; + sigaction(SIGINT, &int_action, nullptr); + seconds interval {0.01}; int samples = 0; - int opt = 0; - + int opt = 0; try { while ((opt = getopt(argc, argv, "n:i:")) != -1) { switch (opt) { case 'i': - interval = seconds{ std::stod(optarg) }; + interval = seconds {std::stod(optarg)}; break; case 'n': samples = std::stoi(optarg); @@ -57,14 +50,13 @@ int main(int argc, char* argv[]) std::cerr << "Invalid argument: " << ia.what() << std::endl; return 1; } - + int i = 1; while (keep_running) { - if (samples != 0 && i >= samples) break; - i++; - const auto endTime = Clock::now() + interval; + if (samples != 0 && i++ > samples) + break; + const auto end_time = std::chrono::high_resolution_clock::now() + interval; std::cout << hwd::sinewave::get_point() << std::endl; - std::this_thread::sleep_until(endTime); + std::this_thread::sleep_until(end_time); } - return 0; } |