Fixed a bug in the gpio readall command on model B's (caused by a side-effect

of changing it for the B+)

Aded a gpio command: usbp hi/low - to change the usb power
This commit is contained in:
Gordon Henderson
2014-07-17 22:23:57 +01:00
parent dca8a19fb8
commit df45388f64
8 changed files with 308 additions and 293 deletions

View File

@@ -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,8 +236,44 @@ int cmReadall (void)
}
printf ("+-----+------+-------+ +-----+------+-------+\n") ;
}
return TRUE ;
/*
* abReadall:
* Read all the pins on the model A or B.
*********************************************************************************
*/
void abReadall (int model, int rev)
{
int pin ;
char *type ;
if (model == PI_MODEL_A)
type = " A" ;
else
if (rev == PI_VERSION_2)
type = "B2" ;
else
type = "B1" ;
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) ;
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) ;
}
@@ -284,36 +283,24 @@ int cmReadall (void)
*********************************************************************************
*/
int bPlusReadall (void)
void bPlusReadall (void)
{
int model, rev, mem ;
int pin ;
char *maker ;
char *name ;
piBoardId (&model, &rev, &mem, &maker) ;
if (model != PI_MODEL_BPLUS)
return FALSE ;
/**/ if (wpMode == WPI_MODE_GPIO)
name = "BCM" ;
else
name = "wPi" ;
printf (" +-----+---------+------+----+--B Plus--+----+------+---------+-----+\n") ;
printf (" | %s | Name | Mode | Val| Physical |Val | Mode | Name | %s |\n", name, name) ;
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") ;
return TRUE ;
printf (" +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+\n") ;
printf (" | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |\n") ;
printf (" +-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+\n") ;
}
void doReadall (void)
{
int pin ;
int model, rev, mem, maker, overVolted ;
if (wiringPiNodes != NULL) // External readall
{
@@ -321,73 +308,14 @@ void doReadall (void)
return ;
}
if (cmReadall ())
return ;
piBoardId (&model, &rev, &mem, &maker, &overVolted) ;
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") ;
}
}
void doReadallOld (void)
{
int pin ;
if (wiringPiNodes != NULL) // External readall
{
doReadallExternal () ;
return ;
}
if (cmReadall ())
return ;
if (bPlusReadall ())
return ;
printf ("+----------+-Rev%d-+------+--------+------+-------+\n", piBoardRev ()) ;
printf ("| wiringPi | GPIO | Phys | Name | Mode | Value |\n") ;
printf ("+----------+------+------+--------+------+-------+\n") ;
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) ;
}