From 535d92ab79d429193a8a563bbeb0b5398b6b1ff3 Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Thu, 23 Oct 2014 18:05:07 +0100 Subject: [PATCH] i2c: use default i2c bus in board config if invalid Signed-off-by: Brendan Le Foll --- include/mraa_internal.h | 2 +- src/i2c/i2c.c | 2 +- src/mraa.c | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/mraa_internal.h b/include/mraa_internal.h index 5747980..5b1cf2d 100644 --- a/include/mraa_internal.h +++ b/include/mraa_internal.h @@ -56,7 +56,7 @@ unsigned int mraa_setup_aio(int pin); * * @return unsigned int if using /dev/i2c-2 returned would be 2 */ -unsigned int mraa_setup_i2c(int bus); +unsigned int mraa_setup_i2c(int* bus); /** Setup spi interface, sets up multiplexer on device. * diff --git a/src/i2c/i2c.c b/src/i2c/i2c.c index 7e0b6a9..7be4a0b 100644 --- a/src/i2c/i2c.c +++ b/src/i2c/i2c.c @@ -29,7 +29,7 @@ mraa_i2c_context mraa_i2c_init(int bus) { - int checked_pin = mraa_setup_i2c(bus); + int checked_pin = mraa_setup_i2c(&bus); if (checked_pin < 0) { switch(checked_pin) { case MRAA_NO_SUCH_IO: diff --git a/src/mraa.c b/src/mraa.c index 9c6c3d5..670a87a 100644 --- a/src/mraa.c +++ b/src/mraa.c @@ -198,7 +198,7 @@ mraa_setup_aio(int aio) } unsigned int -mraa_setup_i2c(int bus) +mraa_setup_i2c(int* bus) { if (plat == NULL) return MRAA_PLATFORM_NO_INIT; @@ -207,27 +207,27 @@ mraa_setup_i2c(int bus) syslog(LOG_ERR, "No i2c buses defined in platform"); return MRAA_NO_SUCH_IO; } - if (bus >= plat->i2c_bus_count) { + if (*bus >= plat->i2c_bus_count) { syslog(LOG_ERR, "Above i2c bus count"); return MRAA_NO_SUCH_IO; } - if (plat->i2c_bus[bus].bus_id == -1) { - syslog(LOG_ERR, "Platform not currently allowed for mraa use"); - return MRAA_NO_SUCH_IO; + if (plat->i2c_bus[*bus].bus_id == -1) { + syslog(LOG_ERR, "Invalid i2c bus, moving to default i2c bus"); + *bus = plat->def_i2c_bus; } - int pos = plat->i2c_bus[bus].sda; + int pos = plat->i2c_bus[*bus].sda; if (plat->pins[pos].i2c.mux_total > 0) if (mraa_setup_mux_mapped(plat->pins[pos].i2c) != MRAA_SUCCESS) return MRAA_IO_SETUP_FAILURE; - pos = plat->i2c_bus[bus].scl; + pos = plat->i2c_bus[*bus].scl; if (plat->pins[pos].i2c.mux_total > 0) if (mraa_setup_mux_mapped(plat->pins[pos].i2c) != MRAA_SUCCESS) return MRAA_IO_SETUP_FAILURE; - return plat->i2c_bus[bus].bus_id; + return plat->i2c_bus[*bus].bus_id; } mraa_spi_bus_t*