X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=gpio%2Fgpio.c;fp=gpio%2Fgpio.c;h=5a97aabfaf8f8573c8d8a32e6b49131da4ab812e;hb=1bb4989e11145c3a369058850cea77cb9ca5c3ec;hp=2b6295335297405e2bebc3578b4c39daa03ec8fe;hpb=178ea08a0f557a4676a9b16aeca5259806ed0ce6;p=wiringPi.git diff --git a/gpio/gpio.c b/gpio/gpio.c index 2b62953..5a97aab 100644 --- a/gpio/gpio.c +++ b/gpio/gpio.c @@ -47,6 +47,8 @@ char *usage = "Usage: gpio -v\n" " gpio [-p] ...\n" " gpio export/edge/unexport/unexportall/exports ...\n" " gpio drive \n" + " gpio pwm-bal/pwm-ms \n" + " gpio pwmr \n" " gpio load spi/i2c" ; @@ -487,7 +489,7 @@ void doMode (int argc, char *argv []) ********************************************************************************* */ -void doPadDrive (int argc, char *argv []) +static void doPadDrive (int argc, char *argv []) { int group, val ; @@ -522,7 +524,7 @@ void doPadDrive (int argc, char *argv []) ********************************************************************************* */ -void doWrite (int argc, char *argv []) +static void doWrite (int argc, char *argv []) { int pin, val ; @@ -603,6 +605,39 @@ void doPwm (int argc, char *argv []) } +/* + * doPwmMode: doPwmRange: + * Change the PWM mode and Range values + ********************************************************************************* + */ + +static void doPwmMode (int mode) +{ + pwmSetMode (mode) ; +} + +static void doPwmRange (int argc, char *argv []) +{ + unsigned int range ; + + if (argc != 3) + { + fprintf (stderr, "Usage: %s pwmr \n", argv [0]) ; + exit (1) ; + } + + range = (unsigned int)strtoul (argv [2], NULL, 10) ; + + if (range == 0) + { + fprintf (stderr, "%s: range must be > 0\n", argv [0]) ; + exit (1) ; + } + + pwmSetRange (range) ; +} + + /* * main: * Start here @@ -718,6 +753,15 @@ int main (int argc, char *argv []) wpMode = WPI_MODE_PINS ; } +// Check for PWM 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 ; } + } + // Check for wiring commands /**/ if (strcasecmp (argv [1], "read" ) == 0) doRead (argc, argv) ;