chiark / gitweb /
Updating gpio manual page
[wiringPi.git] / gpio / gpio.c
index b696542e04c0566eeef4558ba8c7b8cffbf5df2d..b3534c8fd2010bfcb7c13a383bb670c8ec793269 100644 (file)
@@ -40,7 +40,7 @@
 #  define      FALSE   (1==2)
 #endif
 
-#define        VERSION "1.2"
+#define        VERSION "1.3"
 
 static int wpMode ;
 
@@ -52,9 +52,10 @@ char *usage = "Usage: gpio -v\n"
              "       gpio drive <group> <value>\n"
              "       gpio pwm-bal/pwm-ms \n"
              "       gpio pwmr <range> \n"
+             "       gpio pwmc <divider> \n"
              "       gpio load spi/i2c\n"
              "       gpio gbr <channel>\n"
-             "       gpio gbw <channel> <value>\n" ;
+             "       gpio gbw <channel> <value>" ;     // No trailing newline needed here.
 
 
 /*
@@ -687,8 +688,8 @@ void doPwm (int argc, char *argv [])
 
 
 /*
- * doPwmMode: doPwmRange:
- *     Change the PWM mode and Range values
+ * doPwmMode: doPwmRange: doPwmClock:
+ *     Change the PWM mode, range and clock divider values
  *********************************************************************************
  */
 
@@ -718,6 +719,27 @@ static void doPwmRange (int argc, char *argv [])
   pwmSetRange (range) ;
 }
 
+static void doPwmClock (int argc, char *argv [])
+{
+  unsigned int clock ;
+
+  if (argc != 3)
+  {
+    fprintf (stderr, "Usage: %s pwmc <clock>\n", argv [0]) ;
+    exit (1) ;
+  }
+
+  clock = (unsigned int)strtoul (argv [2], NULL, 10) ;
+
+  if ((clock < 1) || (clock > 4095))
+  {
+    fprintf (stderr, "%s: clock must be between 0 and 4096\n", argv [0]) ;
+    exit (1) ;
+  }
+
+  pwmSetClock (clock) ;
+}
+
 
 /*
  * main:
@@ -731,7 +753,7 @@ int main (int argc, char *argv [])
 
   if (argc == 1)
   {
-    fprintf (stderr, "%s: %s\n", argv [0], usage) ;
+    fprintf (stderr, "%s\n", usage) ;
     return 1 ;
   }
 
@@ -747,6 +769,8 @@ int main (int argc, char *argv [])
     printf ("Copyright (c) 2012 Gordon Henderson\n") ;
     printf ("This is free software with ABSOLUTELY NO WARRANTY.\n") ;
     printf ("For details type: %s -warranty\n", argv [0]) ;
+    printf ("\n") ;
+    printf ("This Raspberry Pi is a revision %d board.\n", piBoardRev ()) ;
     return 0 ;
   }
 
@@ -785,9 +809,8 @@ int main (int argc, char *argv [])
   else if (strcasecmp (argv [1], "unexportall") == 0)  { doUnexportall (argc, argv) ;  return 0 ; }
   else if (strcasecmp (argv [1], "unexport"   ) == 0)  { doUnexport    (argc, argv) ;  return 0 ; }
 
-// Check for drive or load commands:
+// Check for load command:
 
-  if (strcasecmp (argv [1], "drive") == 0)     { doPadDrive (argc, argv) ; return 0 ; }
   if (strcasecmp (argv [1], "load" ) == 0)     { doLoad     (argc, argv) ; return 0 ; }
 
 // Gertboard commands
@@ -839,13 +862,15 @@ int main (int argc, char *argv [])
     wpMode = WPI_MODE_PINS ;
   }
 
-// Check for PWM operations
+// Check for PWM or Pad Drive operations
 
   if (wpMode != WPI_MODE_PIFACE)
   {
-    if (strcasecmp (argv [1], "pwm-bal") == 0) { doPwmMode  (PWM_MODE_BAL) ; return 0 ; }
-    if (strcasecmp (argv [1], "pwm-ms")  == 0) { doPwmMode  (PWM_MODE_MS) ;  return 0 ; }
-    if (strcasecmp (argv [1], "pwmr")    == 0) { doPwmRange (argc, argv) ;   return 0 ; }
+    if (strcasecmp (argv [1], "pwm-bal") == 0) { doPwmMode  (PWM_MODE_BAL) ;   return 0 ; }
+    if (strcasecmp (argv [1], "pwm-ms")  == 0) { doPwmMode  (PWM_MODE_MS) ;    return 0 ; }
+    if (strcasecmp (argv [1], "pwmr")    == 0) { doPwmRange (argc, argv) ;     return 0 ; }
+    if (strcasecmp (argv [1], "pwmc")    == 0) { doPwmClock (argc, argv) ;     return 0 ; }
+    if (strcasecmp (argv [1], "drive")   == 0) { doPadDrive (argc, argv) ;     return 0 ; }
   }
 
 // Check for wiring commands