uart: add function mraa_uart_get_dev_path
Used for getting the path to the character device under linux for uart device. i.e. "/dev/ttyS0" Adds paths to existing platforms. Closes #84 Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
#include "common.h"
|
||||
#include "arm/raspberry_pi_b.h"
|
||||
|
||||
#define UART_DEV_PATH "/dev/ttyAMA0"
|
||||
|
||||
mraa_board_t*
|
||||
mraa_raspberry_pi_b()
|
||||
{
|
||||
@@ -178,6 +180,17 @@ mraa_raspberry_pi_b()
|
||||
b->def_uart_dev = 0;
|
||||
b->uart_dev[0].rx = 10;
|
||||
b->uart_dev[0].tx = 8;
|
||||
int uart_path_length = strlen(UART_DEV_PATH) + 1;
|
||||
b->uart_dev[0].device_path = (char*) malloc(sizeof(char) * uart_path_length);
|
||||
if (b->uart_dev[0].device_path == NULL) {
|
||||
goto error;
|
||||
}
|
||||
strncpy(b->uart_dev[0].device_path, UART_DEV_PATH, uart_path_length);
|
||||
|
||||
return b;
|
||||
|
||||
error:
|
||||
syslog(LOG_CRIT, "raspberry pi: board failed to initialise");
|
||||
free(b);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -83,6 +83,7 @@ mraa_uart_init(int index)
|
||||
memset(dev, 0, sizeof(struct _uart));
|
||||
|
||||
dev->index = index;
|
||||
dev->path = plat->uart_dev[index].device_path;
|
||||
if (advance_func->uart_init_post != NULL) {
|
||||
mraa_result_t ret = advance_func->uart_init_post(dev);
|
||||
if (ret != MRAA_SUCCESS) {
|
||||
@@ -93,3 +94,17 @@ mraa_uart_init(int index)
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
char*
|
||||
mraa_uart_get_dev_path(mraa_uart_context dev)
|
||||
{
|
||||
if (dev == NULL) {
|
||||
syslog(LOG_ERR, "uart: get_device_path failed, context is NULL");
|
||||
return "ERROR:CONTEXT_IS_NULL";
|
||||
}
|
||||
if (dev->path == NULL) {
|
||||
syslog(LOG_ERR, "uart: device path undefined");
|
||||
return "ERROR:PATH_NOT_SET";
|
||||
}
|
||||
return dev->path;
|
||||
}
|
||||
|
||||
@@ -140,6 +140,8 @@ mraa_intel_de3815()
|
||||
b->spi_bus[0].miso = 12;
|
||||
b->spi_bus[0].sclk = 13;
|
||||
|
||||
b->uart_dev_count = 0;
|
||||
|
||||
return b;
|
||||
error:
|
||||
syslog(LOG_CRIT, "de3815: Platform failed to initialise");
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
// Might not always be correct. First thing to check if mmap stops
|
||||
// working. Check the device for 0x1199 and Intel Vendor (0x8086)
|
||||
#define MMAP_PATH "/sys/devices/pci0000:00/0000:00:0c.0/resource0"
|
||||
#define UART_DEV_PATH "/dev/ttyMFD1"
|
||||
|
||||
typedef struct {
|
||||
int sysfs;
|
||||
@@ -1365,6 +1366,13 @@ mraa_intel_edison_fab_c()
|
||||
b->uart_dev[0].rx = 0;
|
||||
b->uart_dev[0].tx = 1;
|
||||
|
||||
int uart_path_length = strlen(UART_DEV_PATH) + 1;
|
||||
b->uart_dev[0].device_path = (char*) malloc(sizeof(char) * uart_path_length);
|
||||
if (b->uart_dev[0].device_path == NULL) {
|
||||
goto error;
|
||||
}
|
||||
strncpy(b->uart_dev[0].device_path, UART_DEV_PATH, uart_path_length);
|
||||
|
||||
int il;
|
||||
for (il =0; il < MRAA_INTEL_EDISON_PINCOUNT; il++) {
|
||||
pinmodes[il].gpio.sysfs = -1;
|
||||
|
||||
@@ -405,11 +405,25 @@ mraa_intel_galileo_rev_d()
|
||||
b->spi_bus[0].miso = 12;
|
||||
b->spi_bus[0].sclk = 13;
|
||||
|
||||
int uart_path_length = strlen("/dev/ttyS0") + 1;
|
||||
|
||||
b->uart_dev_count = 2;
|
||||
b->def_uart_dev = 0;
|
||||
b->uart_dev[0].rx = 0;
|
||||
b->uart_dev[0].tx = 1;
|
||||
b->uart_dev[0].device_path = (char*) malloc(sizeof(char) * uart_path_length);
|
||||
if (b->uart_dev[0].device_path == NULL) {
|
||||
goto error;
|
||||
}
|
||||
strncpy(b->uart_dev[0].device_path, "/dev/ttyS0", uart_path_length);
|
||||
|
||||
b->uart_dev[1].rx = -1;
|
||||
b->uart_dev[1].tx = -1;
|
||||
b->uart_dev[1].device_path = (char*) malloc(sizeof(char) * uart_path_length);
|
||||
if (b->uart_dev[1].device_path == NULL) {
|
||||
goto error;
|
||||
}
|
||||
strncpy(b->uart_dev[1].device_path, "/dev/ttyS1", uart_path_length);
|
||||
|
||||
return b;
|
||||
error:
|
||||
|
||||
@@ -746,10 +746,17 @@ mraa_intel_galileo_gen2()
|
||||
b->spi_bus[0].miso = 12;
|
||||
b->spi_bus[0].sclk = 13;
|
||||
|
||||
int uart_path_length = strlen("/dev/ttyS0") + 1;
|
||||
|
||||
b->uart_dev_count = 1;
|
||||
b->def_uart_dev = 0;
|
||||
b->uart_dev[0].rx = 0;
|
||||
b->uart_dev[0].tx = 1;
|
||||
b->uart_dev[0].device_path = (char*) malloc(sizeof(char) * uart_path_length);
|
||||
if (b->uart_dev[0].device_path == NULL) {
|
||||
goto error;
|
||||
}
|
||||
strncpy(b->uart_dev[0].device_path, "/dev/ttyS0", uart_path_length);
|
||||
|
||||
return b;
|
||||
error:
|
||||
|
||||
@@ -181,6 +181,8 @@ mraa_intel_minnow_max()
|
||||
b->spi_bus[0].miso = 7;
|
||||
b->spi_bus[0].sclk = 11;
|
||||
|
||||
b->uart_dev_count = 0;
|
||||
|
||||
return b;
|
||||
error:
|
||||
syslog(LOG_CRIT, "minnowmax: Platform failed to initialise");
|
||||
|
||||
Reference in New Issue
Block a user