From: Gordon Henderson Date: Thu, 7 Feb 2013 21:53:49 +0000 (+0000) Subject: Slight change to the gpio program to fix SPI buffer size when loading X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=wiringPi.git;a=commitdiff_plain;h=98bcb20d9391ebde24f9eb1244f0d238fb1a1dab Slight change to the gpio program to fix SPI buffer size when loading the module. Typo in gpio man page Bug fixed in board revision detection (which would never happen anyway, however) --- diff --git a/People b/People index f5645be..8be8b6d 100644 --- a/People +++ b/People @@ -22,3 +22,6 @@ Arno Wagner CHARLES Thibaut: A small issue in softTone + +Xian Stannard + Fixing some typos in the man page! diff --git a/gpio/gpio.1 b/gpio/gpio.1 index ec54f13..ec65519 100644 --- a/gpio/gpio.1 +++ b/gpio/gpio.1 @@ -182,7 +182,7 @@ close as the Pi can manage) The default speed is 100Kb/sec. .TP .B load spi [buffer size in KB] -This loads the the spi drivers into the kernel and changes the permissions +This loads the spi drivers into the kernel and changes the permissions on the associated /dev/ entries so that the current user has access to them. Optionally it will set the SPI buffer size to that supplied. The default is 4KB. diff --git a/gpio/gpio.c b/gpio/gpio.c index 8d61957..e71e432 100644 --- a/gpio/gpio.c +++ b/gpio/gpio.c @@ -42,7 +42,7 @@ extern int wiringPiDebug ; # define FALSE (1==2) #endif -#define VERSION "1.11" +#define VERSION "1.12" static int wpMode ; @@ -152,7 +152,7 @@ static void doLoad (int argc, char *argv []) file1 = "/dev/spidev0.0" ; file2 = "/dev/spidev0.1" ; if (argc == 4) - sprintf (args1, " bufsize=%d", atoi (argv [3]) * 1024) ; + sprintf (args1, " bufsiz=%d", atoi (argv [3]) * 1024) ; else if (argc > 4) _doLoadUsage (argv) ; } diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c index 12b1af1..a68ae33 100644 --- a/wiringPi/wiringPi.c +++ b/wiringPi/wiringPi.c @@ -475,9 +475,11 @@ int wpiPinToGpio (int wpiPin) * 0001 - Not used * 0002 - Rev 1 * 0003 - Rev 1 - * 0004 - Rev 2 - * 0005 - Rev 2 (but error) + * 0004 - Rev 2 (Early reports? + * 0005 - Rev 2 (but error?) * 0006 - Rev 2 + * 0008 - Rev 2 - Model A + * 000e - Rev 2 + 512MB * 000f - Rev 2 + 512MB * * A small thorn is the olde style overvolting - that will add in @@ -502,13 +504,11 @@ int piBoardRev (void) char *c, lastChar ; static int boardRev = -1 ; -// No point checking twice... - - if (boardRev != -1) + if (boardRev != -1) // No point checking twice return boardRev ; if ((cpuFd = fopen ("/proc/cpuinfo", "r")) == NULL) - return -1 ; + piBoardRevOops ("Unable to open /proc/cpuinfo") ; while (fgets (line, 120, cpuFd) != NULL) if (strncmp (line, "Revision", 8) == 0) @@ -516,10 +516,11 @@ int piBoardRev (void) fclose (cpuFd) ; - if (line == NULL) + if (strncmp (line, "Revision", 8) != 0) piBoardRevOops ("No \"Revision\" line") ; - line [strlen (line) - 1] = 0 ; // Chomp LF + for (c = &line [strlen (line) - 1] ; (*c == '\n') || (*c == '\r') ; --c) + *c = 0 ; if (wiringPiDebug) printf ("piboardRev: Revision string: %s\n", line) ; diff --git a/wiringPi/wiringPiISR.c b/wiringPi/wiringPiISR.c deleted file mode 100644 index 9e847cc..0000000 --- a/wiringPi/wiringPiISR.c +++ /dev/null @@ -1,109 +0,0 @@ -/* - * wiringPiISR.c: - * Simplified Interrupt Service Routine handling - * Copyright (c) 2013 Gordon Henderson - *********************************************************************** - * This file is part of wiringPi: - * https://projects.drogon.net/raspberry-pi/wiringpi/ - * - * wiringPi is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * wiringPi is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with wiringPi. - * If not, see . - *********************************************************************** - */ - -#include -#include -#include - -#include "wiringPi.h" - - - -static void (*isrFunctions [64])(void) ; -static int isrFds [64] ; - -/* - * interruptHandler: - * This is a thread and gets started to wait for the interrupt we're - * hoping to catch. It will call the user-function when the interrupt - * fires. - ********************************************************************************* - */ - -static void *interruptHandler (void *arg) -{ - int pin = *(int *)arg ; - - (void)piHiPri (55) ; - - for (;;) - { - if (waitForInterrupt (pin, -1) > 0) - isrFunctions [pin] () ; - } - - return NULL ; -} - -/* - * wiringPiISR: - * Take the details and create an interrupt handler that will do a call- - * back to the user supplied function. - ********************************************************************************* - */ - -int wiringPiISR (int pin, int mode, void (*function)(void)) -{ - pthread_t threadId ; - char command [64] ; - - pin &= 63 ; - - if (wiringPiMode == WPI_MODE_UNINITIALISED) - { - fprintf (stderr, "wiringPiISR: wiringPi has not been initialised. Unable to continue.\n") ; - exit (EXIT_FAILURE) ; - } - else if (wiringPiMode == WPI_MODE_PINS) - pin = pinToGpio [pin] ; - - - isrFunctions [pin] = function ; - -// Now export the pin and set the right edge - - if (mode != INT_EDGE_SETUP) - { - /**/ if (mode == INT_EDGE_FALLING) - modes = "falling" ; - else if (mode == INT_EDGE_RISING) - modes = "rising" ; - else - modes = "both" ; - - sprintf (command, "/usr/local/bin/gpio edge %d %s", pin, modes) ; - system (command) ; - } - - sprintf (fName, "/sys/class/gpio/gpio%d/value", pin) ; - if ((isrFds [pin] = open (fName, O_RDWR)) < 0) - return -1 ; - - { - fprintf ("std - - pthread_create (&threadId, NULL, interruptHandler, &pin) ; -} - -