diff --git a/src/kiss.c b/src/kiss.c index 1726333..901b858 100644 --- a/src/kiss.c +++ b/src/kiss.c @@ -76,42 +76,74 @@ error_io: return -1; } +static inline ssize_t write_byte(int fd, unsigned char c) { + return write(fd, &c, sizeof(c)); +} + +static inline ssize_t write_command(int fd, int command, int port) { + return write_byte(fd, ((port & 0x0f) << 4) | (command & 0x0f)); +} + ssize_t patty_kiss_write(int fd, const void *buf, size_t len, int port) { - size_t i; + size_t i, start = 0, end = 0; unsigned char escape_fend[2] = { PATTY_KISS_FESC, PATTY_KISS_TFEND }; unsigned char escape_fesc[2] = { PATTY_KISS_FESC, PATTY_KISS_TFESC }; - unsigned char command = (port & 0x0f) << 4; + if (write_byte(fd, PATTY_KISS_FEND) < 0) { + goto error_io; + } - if (write(fd, &command, 1) < 0) { + if (write_command(PATTY_KISS_DATA, port) < 0) { goto error_io; } for (i=0; i