9119cd5cdf
git-svn-id: https://bucket.mit.edu/svn/nilm/zoom@7988 ddd99763-3ecb-0310-9145-efcb8ce7c51f
44 lines
1.1 KiB
C
44 lines
1.1 KiB
C
/*
|
|
* Serial I/O helper routines
|
|
*
|
|
* Jim Paris <jim@jtan.com>
|
|
* $Id$
|
|
*/
|
|
#ifndef SERIAL_UTIL_H
|
|
#define SERIAL_UTIL_H
|
|
|
|
#include <unistd.h>
|
|
|
|
/* Open serial port in raw mode, with custom baudrate if necessary */
|
|
int serial_open(const char *device, int rate);
|
|
|
|
/* Like read(), but restarts after EINTR, and reads until count bytes
|
|
are received or a timeout occurs. */
|
|
int saferead_timeout(int fd, void *buf, size_t count, int timeout_ms);
|
|
|
|
static inline int saferead(int fd, void *buf, size_t count) {
|
|
return saferead_timeout(fd, buf, count, -1);
|
|
}
|
|
|
|
/* Like write(), but restarts after EINTR */
|
|
ssize_t safewrite(int fd, const void *buf, size_t count);
|
|
|
|
/* Read bytes until no more are available for specified time */
|
|
int drain_timeout(int fd, int msec);
|
|
|
|
/* Read bytes until no more are available for 0.1 sec */
|
|
static inline int drain(int fd) {
|
|
return drain_timeout(fd, 100);
|
|
}
|
|
|
|
/* Like fprintf, but to a fd, using safewrite */
|
|
int fdprintf(int fd, const char *fmt, ...);
|
|
|
|
/* Like fgets, but from a fd, using saferead_timeout. */
|
|
char *fdgets(char *s, int size, int fd, int timeout_ms);
|
|
|
|
/* Like perl chomp. */
|
|
void chomp(char *s);
|
|
|
|
#endif
|