From e8da87fbaced1edf75a5b37f78e8d4eb5ec0f18d Mon Sep 17 00:00:00 2001 From: Gordon Henderson Date: Wed, 1 Mar 2017 11:55:19 +0000 Subject: [PATCH] Added a fix to include -lcrypt for people who can't do it themselves. Added gpio readall support for the Pi 0W. --- VERSION | 2 +- build | 14 +-- debian-template/wiringPi/DEBIAN/control | 2 +- examples/Makefile | 2 +- gpio/readall.c | 4 +- version.h | 4 +- wiringPi/Makefile | 2 +- wiringPi/rht03.c | 146 ++++++++++++++++++++++-- wiringPi/wiringPi.c | 2 +- wiringPi/wiringPi.h | 1 + wiringPiD/wiringpid | Bin 18721 -> 18654 bytes 11 files changed, 154 insertions(+), 25 deletions(-) diff --git a/VERSION b/VERSION index 4bdd32f..2a43146 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.40 +2.42 diff --git a/build b/build index 070ea3f..7dc074c 100755 --- a/build +++ b/build @@ -160,13 +160,13 @@ fi $sudo make install check_make_ok - echo - echo "wiringPi Daemon" - cd ../wiringPiD - make -j5 - check_make_ok - $sudo make install - check_make_ok +# echo +# echo "wiringPi Daemon" +# cd ../wiringPiD +# make -j5 +# check_make_ok +# $sudo make install +# check_make_ok # echo # echo "Examples" diff --git a/debian-template/wiringPi/DEBIAN/control b/debian-template/wiringPi/DEBIAN/control index 75cedfa..73359aa 100644 --- a/debian-template/wiringPi/DEBIAN/control +++ b/debian-template/wiringPi/DEBIAN/control @@ -1,5 +1,5 @@ Package: wiringpi -Version: 2.40 +Version: 2.42 Section: libraries Priority: optional Architecture: armhf diff --git a/examples/Makefile b/examples/Makefile index 4725d85..6d87885 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -33,7 +33,7 @@ INCLUDE = -I/usr/local/include CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe LDFLAGS = -L/usr/local/lib -LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt +LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt # Should not alter anything below this line ############################################################################### diff --git a/gpio/readall.c b/gpio/readall.c index aec6de6..18f836f 100644 --- a/gpio/readall.c +++ b/gpio/readall.c @@ -299,6 +299,8 @@ static void plus2header (int model) printf (" +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+\n") ; else if (model == PI_MODEL_ZERO) printf (" +-----+-----+---------+------+---+-Pi Zero--+---+------+---------+-----+-----+\n") ; + else if (model == PI_MODEL_ZERO_W) + printf (" +-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+\n") ; else if (model == PI_MODEL_2) printf (" +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+\n") ; else if (model == PI_MODEL_3) @@ -346,7 +348,7 @@ void doReadall (void) /**/ if ((model == PI_MODEL_A) || (model == PI_MODEL_B)) abReadall (model, rev) ; - else if ((model == PI_MODEL_BP) || (model == PI_MODEL_AP) || (model == PI_MODEL_2) || (model == PI_MODEL_3) || (model == PI_MODEL_ZERO)) + else if ((model == PI_MODEL_BP) || (model == PI_MODEL_AP) || (model == PI_MODEL_2) || (model == PI_MODEL_3) || (model == PI_MODEL_ZERO) || (model == PI_MODEL_ZERO_W)) piPlusReadall (model) ; else if ((model == PI_MODEL_CM) || (model == PI_MODEL_CM3)) allReadall () ; diff --git a/version.h b/version.h index 2c359b6..b556f91 100644 --- a/version.h +++ b/version.h @@ -1,3 +1,3 @@ -#define VERSION "2.40" +#define VERSION "2.42" #define VERSION_MAJOR 2 -#define VERSION_MINOR 40 +#define VERSION_MINOR 42 diff --git a/wiringPi/Makefile b/wiringPi/Makefile index 0a1283f..e1868b9 100644 --- a/wiringPi/Makefile +++ b/wiringPi/Makefile @@ -41,7 +41,7 @@ INCLUDE = -I. DEFS = -D_GNU_SOURCE CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC -LIBS = -lm -lpthread -lrt +LIBS = -lm -lpthread -lrt -lcrypt ############################################################################### diff --git a/wiringPi/rht03.c b/wiringPi/rht03.c index 9fa5702..1129cfd 100644 --- a/wiringPi/rht03.c +++ b/wiringPi/rht03.c @@ -22,22 +22,147 @@ *********************************************************************** */ -//#include -//#include -//#include - -//#include -//#include +#include +#include #include -//#include #include -//#include #include "wiringPi.h" -#include "../devLib/maxdetect.h" - #include "rht03.h" +/* + * maxDetectLowHighWait: + * Wait for a transition from low to high on the bus + ********************************************************************************* + */ + +static int maxDetectLowHighWait (const int pin) +{ + struct timeval now, timeOut, timeUp ; + +// If already high then wait for pin to go low + + gettimeofday (&now, NULL) ; + timerclear (&timeOut) ; + timeOut.tv_usec = 1000 ; + timeradd (&now, &timeOut, &timeUp) ; + + while (digitalRead (pin) == HIGH) + { + gettimeofday (&now, NULL) ; + if (timercmp (&now, &timeUp, >)) + return FALSE ; + } + +// Wait for it to go HIGH + + gettimeofday (&now, NULL) ; + timerclear (&timeOut) ; + timeOut.tv_usec = 1000 ; + timeradd (&now, &timeOut, &timeUp) ; + + while (digitalRead (pin) == LOW) + { + gettimeofday (&now, NULL) ; + if (timercmp (&now, &timeUp, >)) + return FALSE ; + } + + return TRUE ; +} + + +/* + * maxDetectClockByte: + * Read in a single byte from the MaxDetect bus + ********************************************************************************* + */ + +static unsigned int maxDetectClockByte (const int pin) +{ + unsigned int byte = 0 ; + int bit ; + + for (bit = 0 ; bit < 8 ; ++bit) + { + if (!maxDetectLowHighWait (pin)) + return 0 ; + +// bit starting now - we need to time it. + + delayMicroseconds (30) ; + byte <<= 1 ; + if (digitalRead (pin) == HIGH) // It's a 1 + byte |= 1 ; + } + + return byte ; +} + + +/* + * maxDetectRead: + * Read in and return the 4 data bytes from the MaxDetect sensor. + * Return TRUE/FALSE depending on the checksum validity + ********************************************************************************* + */ + +static int maxDetectRead (const int pin, unsigned char buffer [4]) +{ + int i ; + unsigned int checksum ; + unsigned char localBuf [5] ; + struct timeval now, then, took ; + +// See how long we took + + gettimeofday (&then, NULL) ; + +// Wake up the RHT03 by pulling the data line low, then high +// Low for 10mS, high for 40uS. + + pinMode (pin, OUTPUT) ; + digitalWrite (pin, 0) ; delay (10) ; + digitalWrite (pin, 1) ; delayMicroseconds (40) ; + pinMode (pin, INPUT) ; + +// Now wait for sensor to pull pin low + + if (!maxDetectLowHighWait (pin)) + return FALSE ; + +// and read in 5 bytes (40 bits) + + for (i = 0 ; i < 5 ; ++i) + localBuf [i] = maxDetectClockByte (pin) ; + + checksum = 0 ; + for (i = 0 ; i < 4 ; ++i) + { + buffer [i] = localBuf [i] ; + checksum += localBuf [i] ; + } + checksum &= 0xFF ; + +// See how long we took + + gettimeofday (&now, NULL) ; + timersub (&now, &then, &took) ; + +// Total time to do this should be: +// 10mS + 40µS - reset +// + 80µS + 80µS - sensor doing its low -> high thing +// + 40 * (50µS + 27µS (0) or 70µS (1) ) +// = 15010µS +// so if we take more than that, we've had a scheduling interruption and the +// reading is probably bogus. + + if ((took.tv_sec != 0) || (took.tv_usec > 16000)) + return FALSE ; + + return checksum == localBuf [4] ; +} + /* * myReadRHT03: @@ -76,6 +201,7 @@ static int myReadRHT03 (const int pin, int *temp, int *rh) return TRUE ; } + /* * myAnalogRead: ********************************************************************************* diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c index e018100..a8f5963 100644 --- a/wiringPi/wiringPi.c +++ b/wiringPi/wiringPi.c @@ -222,7 +222,7 @@ const char *piModelNames [16] = "Pi Zero", // 09 "CM3", // 10 "Unknown11", // 11 - "Unknown12", // 12 + "Pi Zero-W", // 12 "Unknown13", // 13 "Unknown14", // 14 "Unknown15", // 15 diff --git a/wiringPi/wiringPi.h b/wiringPi/wiringPi.h index 0788bf2..f601f13 100644 --- a/wiringPi/wiringPi.h +++ b/wiringPi/wiringPi.h @@ -98,6 +98,7 @@ #define PI_MODEL_3 8 #define PI_MODEL_ZERO 9 #define PI_MODEL_CM3 10 +#define PI_MODEL_ZERO_W 12 #define PI_VERSION_1 0 #define PI_VERSION_1_1 1 diff --git a/wiringPiD/wiringpid b/wiringPiD/wiringpid index 529e2868b44f2cf2b6a01664f1653c4f28c3067a..b21232e76adc76f7666d6af737b36fadbc79a170 100755 GIT binary patch delta 5952 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 F`TvV)B*Opz delta 6224 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 BX2Spg