kopia lustrzana https://github.com/Hamlib/Hamlib
Replace sleep macros with hamlib custom functions
rodzic
0d02109483
commit
70115f7efd
|
@ -93,24 +93,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#undef sleep
|
|
||||||
#undef usleep
|
|
||||||
#define usleep(n)\
|
|
||||||
do {\
|
|
||||||
unsigned long sec = n/1000000ul;\
|
|
||||||
unsigned long nsec = n*1000ul - (sec * 1000000000ul);\
|
|
||||||
struct timespec t;\
|
|
||||||
t.tv_sec=sec;\
|
|
||||||
t.tv_nsec = nsec;\
|
|
||||||
nanosleep(&t,NULL);\
|
|
||||||
} while(0)
|
|
||||||
#define sleep(n)\
|
|
||||||
do {\
|
|
||||||
struct timespec t;\
|
|
||||||
t.tv_sec=n;\
|
|
||||||
t.tv_nsec = 0;\
|
|
||||||
nanosleep(&t,NULL);\
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ RIGSRC = rig.c serial.c serial.h misc.c misc.h register.c register.h event.c \
|
||||||
rot_conf.c rot_conf.h iofunc.c iofunc.h ext.c mem.c settings.c \
|
rot_conf.c rot_conf.h iofunc.c iofunc.h ext.c mem.c settings.c \
|
||||||
parallel.c parallel.h usb_port.c usb_port.h debug.c network.c network.h \
|
parallel.c parallel.h usb_port.c usb_port.h debug.c network.c network.h \
|
||||||
cm108.c cm108.h gpio.c gpio.h idx_builtin.h token.h par_nt.h microham.c microham.h \
|
cm108.c cm108.h gpio.c gpio.h idx_builtin.h token.h par_nt.h microham.c microham.h \
|
||||||
amplifier.c amp_reg.c amp_conf.c amp_conf.h extamp.c
|
amplifier.c amp_reg.c amp_conf.c amp_conf.h extamp.c sleep.c
|
||||||
|
|
||||||
lib_LTLIBRARIES = libhamlib.la
|
lib_LTLIBRARIES = libhamlib.la
|
||||||
libhamlib_la_SOURCES = $(RIGSRC)
|
libhamlib_la_SOURCES = $(RIGSRC)
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
/**
|
||||||
|
* \addtogroup rig
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file src/sleep.c
|
||||||
|
* \brief Replacements for sleep and usleep
|
||||||
|
* \author Michael Black W9MDB
|
||||||
|
* \date 2020
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Hamlib Interface - Replacements for sleep and usleep
|
||||||
|
* Copyright (c) 2020 by Michael Black W9MDB
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief provide sleep and usleep replacements
|
||||||
|
* \param same as man page for each
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include "hamlib/rig.h"
|
||||||
|
|
||||||
|
unsigned int sleep(unsigned int secs)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
struct timespec t;
|
||||||
|
struct timespec tleft;
|
||||||
|
t.tv_sec = secs;
|
||||||
|
t.tv_nsec = 0;
|
||||||
|
retval = nanosleep(&t, &tleft);
|
||||||
|
|
||||||
|
if (retval == -1) { return tleft.tv_sec; }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Does not have the same 1000000 limit as usleep
|
||||||
|
int usleep(useconds_t usec)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
unsigned long sec = usec / 1000000ul;
|
||||||
|
unsigned long nsec = usec * 1000ul - (sec * 1000000000ul);
|
||||||
|
struct timespec t;
|
||||||
|
t.tv_sec = sec;
|
||||||
|
t.tv_nsec = nsec;
|
||||||
|
retval = nanosleep(&t, NULL);
|
||||||
|
|
||||||
|
// EINTR is the only error return usleep should need
|
||||||
|
// since EINVAL should not be a problem
|
||||||
|
if (retval == -1) { return EINTR; }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Ładowanie…
Reference in New Issue