X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=serialport.c;h=4dc1b83d0146917fcfc5927db51df905645351f5;hb=7890cef6cf4f8496888f2a86593f9eff55244456;hp=9671731b58fdaf56a7e3ced53d7870584424ae30;hpb=5a8810e2b2e0ccd2567306469f7fc668337af415;p=libserialport.git diff --git a/serialport.c b/serialport.c index 9671731..4dc1b83 100644 --- a/serialport.c +++ b/serialport.c @@ -70,7 +70,7 @@ SP_API enum sp_return sp_get_port_by_name(const char *portname, struct sp_port * if (!portname) RETURN_ERROR(SP_ERR_ARG, "Null port name"); - DEBUG("Building structure for port %s", portname); + DEBUG_FMT("Building structure for port %s", portname); if (!(port = malloc(sizeof(struct sp_port)))) RETURN_ERROR(SP_ERR_MEM, "Port structure malloc failed"); @@ -120,7 +120,7 @@ SP_API char *sp_get_port_name(const struct sp_port *port) if (!port) return NULL; - RETURN_VALUE("%s", port->name); + RETURN_STRING(port->name); } SP_API char *sp_get_port_description(struct sp_port *port) @@ -130,7 +130,7 @@ SP_API char *sp_get_port_description(struct sp_port *port) if (!port || !port->description) return NULL; - RETURN_VALUE("%s", port->description); + RETURN_STRING(port->description); } SP_API enum sp_transport sp_get_port_transport(struct sp_port *port) @@ -140,7 +140,7 @@ SP_API enum sp_transport sp_get_port_transport(struct sp_port *port) if (!port) RETURN_ERROR(SP_ERR_ARG, "Null port"); - RETURN_VALUE("%d", port->transport); + RETURN_INT(port->transport); } SP_API enum sp_return sp_get_port_usb_bus_address(const struct sp_port *port, @@ -186,7 +186,7 @@ SP_API char *sp_get_port_usb_manufacturer(const struct sp_port *port) if (!port || port->transport != SP_TRANSPORT_USB || !port->usb_manufacturer) return NULL; - RETURN_VALUE("%s", port->usb_manufacturer); + RETURN_STRING(port->usb_manufacturer); } SP_API char *sp_get_port_usb_product(const struct sp_port *port) @@ -196,7 +196,7 @@ SP_API char *sp_get_port_usb_product(const struct sp_port *port) if (!port || port->transport != SP_TRANSPORT_USB || !port->usb_product) return NULL; - RETURN_VALUE("%s", port->usb_product); + RETURN_STRING(port->usb_product); } SP_API char *sp_get_port_usb_serial(const struct sp_port *port) @@ -206,7 +206,7 @@ SP_API char *sp_get_port_usb_serial(const struct sp_port *port) if (!port || port->transport != SP_TRANSPORT_USB || !port->usb_serial) return NULL; - RETURN_VALUE("%s", port->usb_serial); + RETURN_STRING(port->usb_serial); } SP_API char *sp_get_port_bluetooth_address(const struct sp_port *port) @@ -217,7 +217,7 @@ SP_API char *sp_get_port_bluetooth_address(const struct sp_port *port) || !port->bluetooth_address) return NULL; - RETURN_VALUE("%s", port->bluetooth_address); + RETURN_STRING(port->bluetooth_address); } SP_API enum sp_return sp_get_port_handle(const struct sp_port *port, @@ -257,7 +257,7 @@ SP_API enum sp_return sp_copy_port(const struct sp_port *port, DEBUG("Copying port structure"); - RETURN_VALUE("%p", sp_get_port_by_name(port->name, copy_ptr)); + RETURN_INT(sp_get_port_by_name(port->name, copy_ptr)); } SP_API void sp_free_port(struct sp_port *port) @@ -405,7 +405,7 @@ SP_API enum sp_return sp_open(struct sp_port *port, enum sp_mode flags) if (flags > (SP_MODE_READ | SP_MODE_WRITE)) RETURN_ERROR(SP_ERR_ARG, "Invalid flags"); - DEBUG("Opening port %s", port->name); + DEBUG_FMT("Opening port %s", port->name); #ifdef _WIN32 DWORD desired_access = 0, flags_and_attributes = 0, errors; @@ -564,7 +564,7 @@ SP_API enum sp_return sp_close(struct sp_port *port) CHECK_OPEN_PORT(); - DEBUG("Closing port %s", port->name); + DEBUG_FMT("Closing port %s", port->name); #ifdef _WIN32 /* Returns non-zero upon success, 0 upon failure. */ @@ -603,7 +603,8 @@ SP_API enum sp_return sp_flush(struct sp_port *port, enum sp_buffer buffers) const char *buffer_names[] = {"no", "input", "output", "both"}; - DEBUG("Flushing %s buffers on port %s", buffer_names[buffers], port->name); + DEBUG_FMT("Flushing %s buffers on port %s", + buffer_names[buffers], port->name); #ifdef _WIN32 DWORD flags = 0; @@ -637,7 +638,7 @@ SP_API enum sp_return sp_drain(struct sp_port *port) CHECK_OPEN_PORT(); - DEBUG("Draining port %s", port->name); + DEBUG_FMT("Draining port %s", port->name); #ifdef _WIN32 /* Returns non-zero upon success, 0 upon failure. */ @@ -678,12 +679,14 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, RETURN_ERROR(SP_ERR_ARG, "Null buffer"); if (timeout) - DEBUG("Writing %d bytes to port %s, timeout %d ms", count, port->name, timeout); + DEBUG_FMT("Writing %d bytes to port %s, timeout %d ms", + count, port->name, timeout); else - DEBUG("Writing %d bytes to port %s, no timeout", count, port->name); + DEBUG_FMT("Writing %d bytes to port %s, no timeout", + count, port->name); if (count == 0) - RETURN_VALUE("0", 0); + RETURN_INT(0); #ifdef _WIN32 DWORD bytes_written = 0; @@ -709,14 +712,14 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, if (GetLastError() == ERROR_IO_PENDING) { DEBUG("Waiting for write to complete"); GetOverlappedResult(port->hdl, &port->write_ovl, &bytes_written, TRUE); - DEBUG("Write completed, %d/%d bytes written", bytes_written, count); - RETURN_VALUE("%d", bytes_written); + DEBUG_FMT("Write completed, %d/%d bytes written", bytes_written, count); + RETURN_INT(bytes_written); } else { RETURN_FAIL("WriteFile() failed"); } } else { DEBUG("Write completed immediately"); - RETURN_VALUE("%d", count); + RETURN_INT(count); } #else size_t bytes_written = 0; @@ -745,7 +748,7 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, gettimeofday(&now, NULL); if (timercmp(&now, &end, >)) { DEBUG("write timed out"); - RETURN_VALUE("%d", bytes_written); + RETURN_INT(bytes_written); } timersub(&end, &now, &delta); } @@ -759,7 +762,7 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, } } else if (result == 0) { DEBUG("write timed out"); - RETURN_VALUE("%d", bytes_written); + RETURN_INT(bytes_written); } /* Do write. */ @@ -778,7 +781,7 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, ptr += result; } - RETURN_VALUE("%d", bytes_written); + RETURN_INT(bytes_written); #endif } @@ -792,10 +795,10 @@ SP_API enum sp_return sp_nonblocking_write(struct sp_port *port, if (!buf) RETURN_ERROR(SP_ERR_ARG, "Null buffer"); - DEBUG("Writing up to %d bytes to port %s", count, port->name); + DEBUG_FMT("Writing up to %d bytes to port %s", count, port->name); if (count == 0) - RETURN_VALUE("0", 0); + RETURN_INT(0); #ifdef _WIN32 DWORD written = 0; @@ -809,7 +812,7 @@ SP_API enum sp_return sp_nonblocking_write(struct sp_port *port, } else { DEBUG("Previous write not complete"); /* Can't take a new write until the previous one finishes. */ - RETURN_VALUE("0", 0); + RETURN_INT(0); } } @@ -836,7 +839,7 @@ SP_API enum sp_return sp_nonblocking_write(struct sp_port *port, } else { DEBUG("Asynchronous write running"); port->writing = 1; - RETURN_VALUE("%d", ++written); + RETURN_INT(++written); } } else { /* Actual failure of some kind. */ @@ -850,7 +853,7 @@ SP_API enum sp_return sp_nonblocking_write(struct sp_port *port, DEBUG("All bytes written immediately"); - RETURN_VALUE("%d", written); + RETURN_INT(written); #else /* Returns the number of bytes written, or -1 upon failure. */ ssize_t written = write(port->fd, buf, count); @@ -858,7 +861,7 @@ SP_API enum sp_return sp_nonblocking_write(struct sp_port *port, if (written < 0) RETURN_FAIL("write() failed"); else - RETURN_VALUE("%d", written); + RETURN_INT(written); #endif } @@ -873,12 +876,14 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, RETURN_ERROR(SP_ERR_ARG, "Null buffer"); if (timeout) - DEBUG("Reading %d bytes from port %s, timeout %d ms", count, port->name, timeout); + DEBUG_FMT("Reading %d bytes from port %s, timeout %d ms", + count, port->name, timeout); else - DEBUG("Reading %d bytes from port %s, no timeout", count, port->name); + DEBUG_FMT("Reading %d bytes from port %s, no timeout", + count, port->name); if (count == 0) - RETURN_VALUE("0", 0); + RETURN_INT(0); #ifdef _WIN32 DWORD bytes_read = 0; @@ -894,7 +899,7 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, if (GetLastError() == ERROR_IO_PENDING) { DEBUG("Waiting for read to complete"); GetOverlappedResult(port->hdl, &port->read_ovl, &bytes_read, TRUE); - DEBUG("Read completed, %d/%d bytes read", bytes_read, count); + DEBUG_FMT("Read completed, %d/%d bytes read", bytes_read, count); } else { RETURN_FAIL("ReadFile() failed"); } @@ -909,7 +914,7 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, RETURN_FAIL("WaitCommEvent() failed"); } - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); #else size_t bytes_read = 0; @@ -938,7 +943,7 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, gettimeofday(&now, NULL); if (timercmp(&now, &end, >)) /* Timeout has expired. */ - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); timersub(&end, &now, &delta); } result = select(port->fd + 1, &fds, NULL, NULL, timeout ? &delta : NULL); @@ -951,7 +956,7 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, } } else if (result == 0) { DEBUG("read timed out"); - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); } /* Do read. */ @@ -970,7 +975,7 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, ptr += result; } - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); #endif } @@ -984,7 +989,7 @@ SP_API enum sp_return sp_nonblocking_read(struct sp_port *port, void *buf, if (!buf) RETURN_ERROR(SP_ERR_ARG, "Null buffer"); - DEBUG("Reading up to %d bytes from port %s", count, port->name); + DEBUG_FMT("Reading up to %d bytes from port %s", count, port->name); #ifdef _WIN32 DWORD bytes_read; @@ -1011,7 +1016,7 @@ SP_API enum sp_return sp_nonblocking_read(struct sp_port *port, void *buf, } } - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); #else ssize_t bytes_read; @@ -1024,7 +1029,7 @@ SP_API enum sp_return sp_nonblocking_read(struct sp_port *port, void *buf, /* This is an actual failure. */ RETURN_FAIL("read() failed"); } - RETURN_VALUE("%d", bytes_read); + RETURN_INT(bytes_read); #endif } @@ -1034,7 +1039,7 @@ SP_API enum sp_return sp_input_waiting(struct sp_port *port) CHECK_OPEN_PORT(); - DEBUG("Checking input bytes waiting on port %s", port->name); + DEBUG_FMT("Checking input bytes waiting on port %s", port->name); #ifdef _WIN32 DWORD errors; @@ -1042,12 +1047,12 @@ SP_API enum sp_return sp_input_waiting(struct sp_port *port) if (ClearCommError(port->hdl, &errors, &comstat) == 0) RETURN_FAIL("ClearCommError() failed"); - RETURN_VALUE("%d", comstat.cbInQue); + RETURN_INT(comstat.cbInQue); #else int bytes_waiting; if (ioctl(port->fd, TIOCINQ, &bytes_waiting) < 0) RETURN_FAIL("TIOCINQ ioctl failed"); - RETURN_VALUE("%d", bytes_waiting); + RETURN_INT(bytes_waiting); #endif } @@ -1057,7 +1062,7 @@ SP_API enum sp_return sp_output_waiting(struct sp_port *port) CHECK_OPEN_PORT(); - DEBUG("Checking output bytes waiting on port %s", port->name); + DEBUG_FMT("Checking output bytes waiting on port %s", port->name); #ifdef _WIN32 DWORD errors; @@ -1065,12 +1070,12 @@ SP_API enum sp_return sp_output_waiting(struct sp_port *port) if (ClearCommError(port->hdl, &errors, &comstat) == 0) RETURN_FAIL("ClearCommError() failed"); - RETURN_VALUE("%d", comstat.cbOutQue); + RETURN_INT(comstat.cbOutQue); #else int bytes_waiting; if (ioctl(port->fd, TIOCOUTQ, &bytes_waiting) < 0) RETURN_FAIL("TIOCOUTQ ioctl failed"); - RETURN_VALUE("%d", bytes_waiting); + RETURN_INT(bytes_waiting); #endif } @@ -1374,7 +1379,7 @@ static enum sp_return get_config(struct sp_port *port, struct port_data *data, TRACE("%p, %p, %p", port, data, config); - DEBUG("Getting configuration for port %s", port->name); + DEBUG_FMT("Getting configuration for port %s", port->name); #ifdef _WIN32 if (!GetCommState(port->hdl, &data->dcb)) @@ -1591,7 +1596,7 @@ static enum sp_return set_config(struct sp_port *port, struct port_data *data, TRACE("%p, %p, %p", port, data, config); - DEBUG("Setting configuration for port %s", port->name); + DEBUG_FMT("Setting configuration for port %s", port->name); #ifdef _WIN32 if (config->baudrate >= 0) { @@ -2141,7 +2146,7 @@ SP_API enum sp_return sp_get_signals(struct sp_port *port, if (!signals) RETURN_ERROR(SP_ERR_ARG, "Null result pointer"); - DEBUG("Getting control signals for port %s", port->name); + DEBUG_FMT("Getting control signals for port %s", port->name); *signals = 0; #ifdef _WIN32 @@ -2206,17 +2211,17 @@ SP_API enum sp_return sp_end_break(struct sp_port *port) SP_API int sp_last_error_code(void) { - TRACE(""); + TRACE_VOID(); #ifdef _WIN32 - RETURN_VALUE("%d", GetLastError()); + RETURN_INT(GetLastError()); #else - RETURN_VALUE("%d", errno); + RETURN_INT(errno); #endif } SP_API char *sp_last_error_message(void) { - TRACE(""); + TRACE_VOID(); #ifdef _WIN32 LPVOID message; @@ -2232,9 +2237,9 @@ SP_API char *sp_last_error_message(void) (LPTSTR) &message, 0, NULL ); - RETURN_VALUE("%s", message); + RETURN_STRING(message); #else - RETURN_VALUE("%s", strerror(errno)); + RETURN_STRING(strerror(errno)); #endif }