diff --git a/api/mraa/common.h b/api/mraa/common.h index 41fee98..071a073 100644 --- a/api/mraa/common.h +++ b/api/mraa/common.h @@ -31,9 +31,6 @@ #define MRAA_SUB_PLATFORM_BIT_SHIFT 9 #define MRAA_SUB_PLATFORM_MASK (1<i2c_bus_count; ++bus) { + int i, bus; + for (i = 0; i < board->i2c_bus_count; ++i) { char* busType; switch (mraa_get_platform_type()) { case MRAA_INTEL_GALILEO_GEN1: @@ -76,21 +75,21 @@ print_bus(mraa_board_t* board) case MRAA_RASPBERRY_PI: case MRAA_BEAGLEBONE: case MRAA_BANANA: - bus_index = bus; + bus = i; busType = "stdapi"; break; case MRAA_FTDI_FT4222: busType = "ft4222"; - bus_index = MRAA_USE_SUB_PLATFORM(bus); + bus = mraa_use_sub_platform(i); break; default: busType = "unknown"; break; } - fprintf(stdout, "Bus %2d: id=%02d type=%s ", bus_index, plat->i2c_bus[bus].bus_id, busType); - if (bus == plat->def_i2c_bus) - fprintf(stdout, " default", bus); - fprintf(stdout, "\n", bus); + fprintf(stdout, "Bus %2d: id=%02d type=%s ", bus, plat->i2c_bus[bus].bus_id, busType); + if (i == plat->def_i2c_bus) + fprintf(stdout, " default", i); + fprintf(stdout, "\n"); } } diff --git a/src/i2c/i2c.c b/src/i2c/i2c.c index f6917f7..7b1d4f9 100644 --- a/src/i2c/i2c.c +++ b/src/i2c/i2c.c @@ -80,14 +80,14 @@ mraa_i2c_init(int bus) return NULL; } - if (MRAA_IS_ON_SUB_PLATFORM(bus)) { + if (mraa_is_on_sub_platform(bus)) { syslog(LOG_NOTICE, "i2c: Using sub platform"); board = board->sub_platform; if (board == NULL) { syslog(LOG_ERR, "i2c: Sub platform Not Initialised"); return NULL; } - bus = MRAA_GET_SUB_PLATFORM_INDEX(bus); + bus = mraa_get_sub_platform_index(bus); } if (board->i2c_bus_count == 0) { diff --git a/src/mraa.c b/src/mraa.c index 09713ae..fbba808 100644 --- a/src/mraa.c +++ b/src/mraa.c @@ -586,3 +586,21 @@ mraa_find_i2c_bus(const char* devname, int startfrom) return ret; } + +mraa_boolean_t +mraa_is_on_sub_platform(int pin_or_bus) +{ + return (pin_or_bus | MRAA_SUB_PLATFORM_MASK) != 0; +} + +int +mraa_use_sub_platform(int pin_or_bus) +{ + return pin_or_bus | MRAA_SUB_PLATFORM_MASK; +} + +int +mraa_get_sub_platform_index(int pin_or_bus) +{ + return pin_or_bus & (~MRAA_SUB_PLATFORM_MASK); +}