Gordons Projects

--> Projects Top-Level GIT

Added support for the Pimoroni scrollPhat
[wiringPi] / wiringPi / wpiExtensions.c
index da41f29..b25428c 100644 (file)
 #include "mcp23s08.h"
 #include "mcp23s17.h"
 #include "sr595.h"
-#include "pcf8591.h"
 #include "pcf8574.h"
-#include "max31855.h"
-#include "max5322.h"
+#include "pcf8591.h"
 #include "mcp3002.h"
 #include "mcp3004.h"
 #include "mcp4802.h"
 #include "mcp3422.h"
+#include "max31855.h"
+#include "max5322.h"
+#include "ads1115.h"
 #include "sn3218.h"
 #include "drcSerial.h"
 
@@ -375,6 +376,32 @@ static int doExtensionPcf8574 (char *progName, int pinBase, char *params)
 
 
 /*
+ * doExtensionAds1115:
+ *     Analog Input
+ *     ads1115:base:i2cAddr
+ *********************************************************************************
+ */
+
+static int doExtensionAds1115 (char *progName, int pinBase, char *params)
+{
+  int i2c ;
+
+  if ((params = extractInt (progName, params, &i2c)) == NULL)
+    return FALSE ;
+
+  if ((i2c < 0x03) || (i2c > 0x77))
+  {
+    verbError ("%s: i2c address (0x%X) out of range", progName, i2c) ;
+    return FALSE ;
+  }
+
+  ads1115Setup (pinBase, i2c) ;
+
+  return TRUE ;
+}
+
+
+/*
  * doExtensionPcf8591:
  *     Analog IO
  *     pcf8591:base:i2cAddr
@@ -654,6 +681,7 @@ static struct extensionFunctionStruct extensionFunctions [] =
   { "mcp4802",         &doExtensionMcp4802     },
   { "mcp3422",         &doExtensionMcp3422     },
   { "max31855",                &doExtensionMax31855    },
+  { "ads1115",         &doExtensionAds1115     },
   { "max5322",         &doExtensionMax5322     },
   { "sn3218",          &doExtensionSn3218      },
   { "drcs",            &doExtensionDrcS        },
@@ -664,6 +692,8 @@ static struct extensionFunctionStruct extensionFunctions [] =
 /*
  * loadWPiExtension:
  *     Load in a wiringPi extension
+ *     The extensionData always starts with the name, a colon then the pinBase
+ *     number. Other parameters after that are decoded by the module in question.
  *********************************************************************************
  */
 
@@ -676,7 +706,7 @@ int loadWPiExtension (char *progName, char *extensionData, int printErrors)
 
   verbose = printErrors ;
 
-// Get the extension extension name by finding the first colon
+// Get the extension name by finding the first colon
 
   p = extension ;
   while (*p != ':')
@@ -688,9 +718,10 @@ int loadWPiExtension (char *progName, char *extensionData, int printErrors)
     }
     ++p ;
   }
-
   *p++ = 0 ;
 
+// Simple ATOI code
+
   if (!isdigit (*p))
   {
     verbError ("%s: pinBase number expected after extension name", progName) ;
@@ -699,7 +730,7 @@ int loadWPiExtension (char *progName, char *extensionData, int printErrors)
 
   while (isdigit (*p))
   {
-    if (pinBase > 1000000000)
+    if (pinBase > 1000000000) // Lets be realistic here...
     {
       verbError ("%s: pinBase too large", progName) ;
       return FALSE ;