usb: Converted sub-platform bus/pin helper macros to functions.
authorHenry Bruce <henry.bruce@intel.com>
Fri, 26 Jun 2015 21:22:09 +0000 (14:22 -0700)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Tue, 8 Sep 2015 13:42:03 +0000 (14:42 +0100)
Signed-off-by: Henry Bruce <henry.bruce@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/mraa/common.h
examples/mraa-i2c.c
src/i2c/i2c.c
src/mraa.c

index 41fee98..071a073 100644 (file)
@@ -31,9 +31,6 @@
 
 #define MRAA_SUB_PLATFORM_BIT_SHIFT 9
 #define MRAA_SUB_PLATFORM_MASK (1<<MRAA_SUB_PLATFORM_BIT_SHIFT)
-#define MRAA_IS_ON_SUB_PLATFORM(pin_or_bus) (((pin_or_bus)|MRAA_SUB_PLATFORM_MASK) != 0)
-#define MRAA_USE_SUB_PLATFORM(pin_or_bus) ((pin_or_bus)|MRAA_SUB_PLATFORM_MASK)
-#define MRAA_GET_SUB_PLATFORM_INDEX(pin_or_bus) ((pin_or_bus)&(~MRAA_SUB_PLATFORM_MASK))
 
 
 
@@ -191,6 +188,34 @@ char* mraa_get_pin_name(int pin);
  */
 int mraa_get_default_2c_bus();
 
+/**
+ * Check if pin or bus id includes sub platform mask.
+ *
+ * @param int pin or bus number
+ *
+ * @return mraa_boolean_t 1 if pin or bus is for sub platform, 0 otherwise
+ */
+mraa_boolean_t mraa_is_on_sub_platform(int pin_or_bus);
+
+/**
+ * Convert pin or bus id to corresponding sub platform id.
+ *
+ * @param int pin or bus number
+ *
+ * @return int sub platform pin or bus number
+ */
+int mraa_use_sub_platform(int pin_or_bus);
+
+/**
+ * Convert pin or bus sub platform id to base platform id.
+ *
+ * @param int sub platform pin or bus number
+ *
+ * @return int base platform pin or bus number
+ */
+int mraa_get_sub_platform_index(int pin_or_bus);
+
+
 
 #ifdef __cplusplus
 }
index 8e8ddcb..3bde860 100644 (file)
@@ -63,9 +63,8 @@ print_command_error()
 void
 print_bus(mraa_board_t* board)
 {
-    int bus_index;
-    int bus;
-    for (bus = 0; bus < board->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");
     }
 }
 
index f6917f7..7b1d4f9 100644 (file)
@@ -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) {
index 09713ae..fbba808 100644 (file)
@@ -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);
+}