uart.c: add replace functions used by mock
Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
1b3a9371a1
commit
8a9efd1bcc
@@ -217,6 +217,15 @@ mraa_uart_init_raw(const char* path)
|
||||
}
|
||||
dev->path = path;
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_init_raw_replace)) {
|
||||
status = dev->advance_func->uart_init_raw_replace(dev, path);
|
||||
if (status == MRAA_SUCCESS) {
|
||||
return dev;
|
||||
} else {
|
||||
goto init_raw_cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
// now open the device
|
||||
if ((dev->fd = open(dev->path, O_RDWR)) == -1) {
|
||||
syslog(LOG_ERR, "uart: open(%s) failed: %s", path, strerror(errno));
|
||||
@@ -289,6 +298,10 @@ mraa_uart_flush(mraa_uart_context dev)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_flush_replace)) {
|
||||
return dev->advance_func->uart_flush_replace(dev);
|
||||
}
|
||||
|
||||
if (tcdrain(dev->fd) == -1) {
|
||||
return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
|
||||
}
|
||||
@@ -304,6 +317,10 @@ mraa_uart_set_baudrate(mraa_uart_context dev, unsigned int baud)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_set_baudrate_replace)) {
|
||||
return dev->advance_func->uart_set_baudrate_replace(dev, baud);
|
||||
}
|
||||
|
||||
struct termios termio;
|
||||
if (tcgetattr(dev->fd, &termio)) {
|
||||
syslog(LOG_ERR, "uart%i: set_baudrate: tcgetattr() failed: %s", dev->index, strerror(errno));
|
||||
@@ -336,6 +353,10 @@ mraa_uart_set_mode(mraa_uart_context dev, int bytesize, mraa_uart_parity_t parit
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_set_mode_replace)) {
|
||||
return dev->advance_func->uart_set_mode_replace(dev, bytesize, parity, stopbits);
|
||||
}
|
||||
|
||||
struct termios termio;
|
||||
if (tcgetattr(dev->fd, &termio)) {
|
||||
syslog(LOG_ERR, "uart%i: set_mode: tcgetattr() failed: %s", dev->index, strerror(errno));
|
||||
@@ -408,6 +429,10 @@ mraa_uart_set_flowcontrol(mraa_uart_context dev, mraa_boolean_t xonxoff, mraa_bo
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_set_flowcontrol_replace)) {
|
||||
return dev->advance_func->uart_set_flowcontrol_replace(dev, xonxoff, rtscts);
|
||||
}
|
||||
|
||||
// hardware flow control
|
||||
int action = TCIOFF;
|
||||
if (xonxoff) {
|
||||
@@ -448,6 +473,10 @@ mraa_uart_set_timeout(mraa_uart_context dev, int read, int write, int interchar)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_set_timeout_replace)) {
|
||||
return dev->advance_func->uart_set_timeout_replace(dev, read, write, interchar);
|
||||
}
|
||||
|
||||
struct termios termio;
|
||||
// get current modes
|
||||
if (tcgetattr(dev->fd, &termio)) {
|
||||
@@ -477,6 +506,10 @@ mraa_uart_set_non_blocking(mraa_uart_context dev, mraa_boolean_t nonblock)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_set_non_blocking_replace)) {
|
||||
return dev->advance_func->uart_set_non_blocking_replace(dev, nonblock);
|
||||
}
|
||||
|
||||
// get current flags
|
||||
int flags = fcntl(dev->fd, F_GETFL);
|
||||
|
||||
@@ -517,6 +550,10 @@ mraa_uart_read(mraa_uart_context dev, char* buf, size_t len)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_read_replace)) {
|
||||
return dev->advance_func->uart_read_replace(dev, buf, len);
|
||||
}
|
||||
|
||||
if (dev->fd < 0) {
|
||||
syslog(LOG_ERR, "uart%i: read: port is not open", dev->index);
|
||||
return MRAA_ERROR_INVALID_RESOURCE;
|
||||
@@ -533,6 +570,10 @@ mraa_uart_write(mraa_uart_context dev, const char* buf, size_t len)
|
||||
return MRAA_ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_write_replace)) {
|
||||
return dev->advance_func->uart_write_replace(dev, buf, len);
|
||||
}
|
||||
|
||||
if (dev->fd < 0) {
|
||||
syslog(LOG_ERR, "uart%i: write: port is not open", dev->index);
|
||||
return MRAA_ERROR_INVALID_RESOURCE;
|
||||
@@ -549,6 +590,10 @@ mraa_uart_data_available(mraa_uart_context dev, unsigned int millis)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (IS_FUNC_DEFINED(dev, uart_data_available_replace)) {
|
||||
return dev->advance_func->uart_data_available_replace(dev, millis);
|
||||
}
|
||||
|
||||
if (dev->fd < 0) {
|
||||
syslog(LOG_ERR, "uart%i: data_available: port is not open", dev->index);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user