From 4f288339d7e4c538a9f387288a241045d0e8ebf7 Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Thu, 18 Oct 2018 18:52:47 -0400 Subject: [PATCH] copying from afsk --- cw/utils.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 cw/utils.h diff --git a/cw/utils.h b/cw/utils.h new file mode 100644 index 00000000..f35ee2d0 --- /dev/null +++ b/cw/utils.h @@ -0,0 +1,54 @@ +/* + * A sample application transmitting AFSK at 1200 baud + * + * Portions Copyright (C) 2018 Libre Space Foundation + * Portions Copyright (C) 2018 Jonathan Brandenburg + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef UTILS_H_ +#define UTILS_H_ + +#include + +#define BIT(x) (1 << x) + +static inline size_t min_ul(size_t x, size_t y) { + size_t ret = x < y ? x : y; + return ret; +} + +/** + * + * @return the milliseconds from the start of the program. + * Time is handled based on TIM2 timer. + */ +static inline uint32_t millis() { + static struct timeval tv_start; + static int tv_start_initialized = 0; + if (!tv_start_initialized) { + gettimeofday(&tv_start, NULL); + } + + struct timeval tv_current; + gettimeofday(&tv_current, NULL); + + uint32_t millis_elapsed = 0; + millis_elapsed = (uint32_t) (tv_current.tv_sec - tv_start.tv_sec) * 1000; + millis_elapsed += (uint32_t) (tv_current.tv_usec - tv_start.tv_usec) / 1000; + return millis_elapsed; +} + +#endif /* UTILS_H_ */