X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=gpio%2Freadall.c;h=76b5cfc979ea04034160c95d858b6e18d3045ee8;hb=df45388f6431f7baba31ac1e8e242d89828637a0;hp=a92e58c5a9500bffdb4a486ae974febdc2a664fe;hpb=dca8a19fb816b1314008d84c092b11148a85715c;p=wiringPi.git diff --git a/gpio/readall.c b/gpio/readall.c index a92e58c..76b5cfc 100644 --- a/gpio/readall.c +++ b/gpio/readall.c @@ -75,34 +75,11 @@ static void doReadallExternal (void) ********************************************************************************* */ -static char *pinNames [] = -{ - "GPIO 0", "GPIO 1", "GPIO 2", "GPIO 3", "GPIO 4", "GPIO 5", "GPIO 6", "GPIO 7", - "SDA ", "SCL ", - "CE0 ", "CE1 ", "MOSI ", "MISO ", "SCLK ", - "TxD ", "RxD ", - "GPIO 8", "GPIO 9", "GPIO10", "GPIO11", -} ; - static char *alts [] = { "IN", "OUT", "ALT5", "ALT4", "ALT0", "ALT1", "ALT2", "ALT3" } ; -static int wpiToPhys [64] = -{ - 11, 12, 13, 15, 16, 18, 22, 7, // 0...7 - 3, 5, // 8...9 - 24, 26, 19, 21, 23, // 10..14 - 8, 10, // 15..16 - 53, 54, 55, 56, // 17..20 - 0,0,0,0,0,0,0,0,0,0,0, // 20..31 - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 32..47 - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 47..63 -} ; - -// The other mappings needed are in wiringPi.c - static int physToWpi [64] = { -1, // 0 @@ -126,10 +103,14 @@ static int physToWpi [64] = 24, 27, 25, 28, -1, 29, - -1, -1, -1, -1, -1, -1, -1, // ... 47 - -1, -1, -1, -1, -1, // ... 52 - 17, 18, 19, 20, // ... 53, 54, 55, 56 - P5 - -1, -1, -1, -1, -1, -1, -1, // ... 63 + -1, -1, + -1, -1, + -1, -1, + -1, -1, + -1, -1, + 17, 18, + 19, 20, + -1, -1, -1, -1, -1, -1, -1, -1, -1 } ; static char *physNames [64] = @@ -149,7 +130,7 @@ static char *physNames [64] = " MISO", "GPIO. 6", " SCLK", "CE0 ", " 0v", "CE1 ", - " SDA.0", "SCL0 ", + " SDA.0", "SCL.0 ", "GPIO.21", "0v ", "GPIO.22", "GPIO.26", "GPIO.23", "0v ", @@ -166,29 +147,27 @@ static char *physNames [64] = NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, } ; + +/* + * readallPhys: + * Given a physical pin output the data on it and the next pin: + *| BCM | wPi | Name | Mode | Val| Physical |Val | Mode | Name | wPi | BCM | + ********************************************************************************* + */ + static void readallPhys (int physPin) { int pin ; - /**/ if (wpMode == WPI_MODE_GPIO) - { - if (physPinToGpio (physPin) == -1) - printf (" | ") ; - else - printf (" | %3d", physPinToGpio (physPin)) ; - } - else if (wpMode != WPI_MODE_PHYS) - { - if (physToWpi [physPin] == -1) - printf (" | ") ; - else - printf (" | %3d", physToWpi [physPin]) ; - } + if (physPinToGpio (physPin) == -1) + printf (" | | ") ; + else + printf (" | %3d | %3d", physPinToGpio (physPin), physToWpi [physPin]) ; printf (" | %s", physNames [physPin]) ; if (physToWpi [physPin] == -1) - printf (" | | ") ; + printf (" | | ") ; else { /**/ if (wpMode == WPI_MODE_GPIO) @@ -199,7 +178,7 @@ static void readallPhys (int physPin) pin = physToWpi [physPin] ; printf (" | %4s", alts [getAlt (pin)]) ; - printf (" | %s", (digitalRead (pin) == LOW) ? "Lo" : "Hi") ; + printf (" | %d", digitalRead (pin)) ; } // Pin numbers: @@ -211,7 +190,7 @@ static void readallPhys (int physPin) // Same, reversed if (physToWpi [physPin] == -1) - printf (" | | ") ; + printf (" | | ") ; else { /**/ if (wpMode == WPI_MODE_GPIO) @@ -221,40 +200,24 @@ static void readallPhys (int physPin) else pin = physToWpi [physPin] ; - printf (" | %s", (digitalRead (pin) == LOW) ? "Lo" : "Hi") ; + printf (" | %d", digitalRead (pin)) ; printf (" | %-4s", alts [getAlt (pin)]) ; } printf (" | %-5s", physNames [physPin]) ; - /**/ if (wpMode == WPI_MODE_GPIO) - { - if (physPinToGpio (physPin) == -1) - printf (" | ") ; - else - printf (" | %-3d", physPinToGpio (physPin)) ; - } - else if (wpMode != WPI_MODE_PHYS) - { - if (physToWpi [physPin] == -1) - printf (" | ") ; - else - printf (" | %-3d", physToWpi [physPin]) ; - } + if (physToWpi [physPin] == -1) + printf (" | | ") ; + else + printf (" | %-3d | %-3d", physToWpi [physPin], physPinToGpio (physPin)) ; printf (" |\n") ; } -int cmReadall (void) +void cmReadall (void) { - int model, rev, mem ; int pin ; - char *maker ; - - piBoardId (&model, &rev, &mem, &maker) ; - if (model != PI_MODEL_CM) - return FALSE ; printf ("+-----+------+-------+ +-----+------+-------+\n") ; printf ("| Pin | Mode | Value | | Pin | Mode | Value |\n") ; @@ -273,93 +236,71 @@ int cmReadall (void) } printf ("+-----+------+-------+ +-----+------+-------+\n") ; - - return TRUE ; } /* - * bPlusReadall: - * Read all the pins on the model B+ + * abReadall: + * Read all the pins on the model A or B. ********************************************************************************* */ -int bPlusReadall (void) +void abReadall (int model, int rev) { - int model, rev, mem ; int pin ; - char *maker ; - char *name ; - - piBoardId (&model, &rev, &mem, &maker) ; - if (model != PI_MODEL_BPLUS) - return FALSE ; + char *type ; - /**/ if (wpMode == WPI_MODE_GPIO) - name = "BCM" ; + if (model == PI_MODEL_A) + type = " A" ; else - name = "wPi" ; + if (rev == PI_VERSION_2) + type = "B2" ; + else + type = "B1" ; - printf (" +-----+---------+------+----+--B Plus--+----+------+---------+-----+\n") ; - printf (" | %s | Name | Mode | Val| Physical |Val | Mode | Name | %s |\n", name, name) ; - printf (" +-----+---------+------+----+----++----+----+------+---------+-----+\n") ; - for (pin = 1 ; pin <= 40 ; pin += 2) + printf (" +-----+-----+---------+------+---+-Model %s-+---+------+---------+-----+-----+\n", type) ; + printf (" | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |\n") ; + printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ; + for (pin = 1 ; pin <= 26 ; pin += 2) readallPhys (pin) ; - printf (" +-----+---------+------+----+----++----+----+------+---------+-----+\n") ; - return TRUE ; + if (rev == PI_VERSION_2) // B version 2 + { + printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ; + for (pin = 51 ; pin <= 54 ; pin += 2) + readallPhys (pin) ; + } + + printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ; + printf (" | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |\n") ; + printf (" +-----+-----+---------+------+---+-Model %s-+---+------+---------+-----+-----+\n", type) ; } -void doReadall (void) +/* + * bPlusReadall: + * Read all the pins on the model B+ + ********************************************************************************* + */ + +void bPlusReadall (void) { int pin ; - if (wiringPiNodes != NULL) // External readall - { - doReadallExternal () ; - return ; - } - - if (cmReadall ()) - return ; - - if (bPlusReadall ()) - return ; - - /**/ if (wpMode == WPI_MODE_GPIO) - { - printf (" +-----+-------+------+----+-Rev%d-----+----+------+-------+-----+\n", piBoardRev ()) ; - printf (" | BCM | Name | Mode | Val| Physical |Val | Mode | Name | BCM |\n") ; - printf (" +-----+-------+------+----+----++----+----+------+-------+-----+\n") ; - for (pin = 1 ; pin <= 26 ; pin += 2) - readallPhys (pin) ; - printf (" +-----+-------+------+----+----++----+----+------+-------+-----+\n") ; - } - else if (wpMode == WPI_MODE_PHYS) - { - printf (" +-------+------+----+-Rev%d-----+----+------+-------+\n", piBoardRev ()) ; - printf (" | Name | Mode | Val| Physical |Val | Mode | Name |\n") ; - printf (" +-------+------+----+----++----+----+------+-------+\n") ; - for (pin = 1 ; pin <= 26 ; pin += 2) - readallPhys (pin) ; - printf (" +-------+------+----+----++----+----+------+-------+\n") ; - } - else // wiringPi - { - printf (" +-----+-------+------+----+-Rev%d-----+----+------+-------+-----+\n", piBoardRev ()) ; - printf (" | wPi | Name | Mode | Val| Physical |Val | Mode | Name | wPi |\n") ; - printf (" +-----+-------+------+----+----++----+----+------+-------+-----+\n") ; - for (pin = 1 ; pin <= 26 ; pin += 2) - readallPhys (pin) ; - printf (" +-----+-------+------+----+----++----+----+------+-------+-----+\n") ; - } + printf (" +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+\n") ; + printf (" | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |\n") ; + printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ; + for (pin = 1 ; pin <= 40 ; pin += 2) + readallPhys (pin) ; + printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ; + printf (" | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |\n") ; + printf (" +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+\n") ; } -void doReadallOld (void) +void doReadall (void) { - int pin ; + int model, rev, mem, maker, overVolted ; if (wiringPiNodes != NULL) // External readall { @@ -367,27 +308,14 @@ void doReadallOld (void) return ; } - if (cmReadall ()) - return ; - - if (bPlusReadall ()) - return ; - - printf ("+----------+-Rev%d-+------+--------+------+-------+\n", piBoardRev ()) ; - printf ("| wiringPi | GPIO | Phys | Name | Mode | Value |\n") ; - printf ("+----------+------+------+--------+------+-------+\n") ; + piBoardId (&model, &rev, &mem, &maker, &overVolted) ; - for (pin = 0 ; pin < 64 ; ++pin) // Crude, but effective - { - if (wpiPinToGpio (pin) == -1) - continue ; - - printf ("| %6d | %3d | %3d | %s | %-4s | %-4s |\n", - pin, wpiPinToGpio (pin), wpiToPhys [pin], - pinNames [pin], - alts [getAlt (pin)], - digitalRead (pin) == HIGH ? "High" : "Low ") ; - } - - printf ("+----------+------+------+--------+------+-------+\n") ; + /**/ if ((model == PI_MODEL_A) || (model == PI_MODEL_B)) + abReadall (model, rev) ; + else if (model == PI_MODEL_BP) + bPlusReadall () ; + else if (model == PI_MODEL_CM) + cmReadall () ; + else + printf ("Oops - unable to determine board type... model: %d\n", model) ; }