#264 adjust unit test and fix is40pin

This commit is contained in:
mstroh76
2025-05-23 19:51:01 +02:00
parent 18fc04d7f2
commit b87ca97daf
4 changed files with 38 additions and 28 deletions

View File

@@ -972,7 +972,7 @@ static void doVersion (char *argv [])
static void doIs40Pin ()
{
exit(piBoard40Pin());
exit(piBoard40Pin() ? EXIT_SUCCESS : EXIT_FAILURE);
}
/*

View File

@@ -110,11 +110,15 @@ wfis_test() {
fi
}
gpio is40pin || { GPIOIN=17; GPIOOUT=18; echo "old 28 pin system"; }
echo
echo Unit test gpio GPIO${GPIOOUT} and GPIO${GPIOIN} - functions: mode, write, wfi
echo ------------------------------------------------------------------
echo
#prepare trigger out
gpio -g mode $GPIOOUT out

View File

@@ -12,7 +12,7 @@ int GPIO = 19;
int GPIOIN = 26;
const int ToggleValue = 4;
float irq_timstamp_duration_ms = 0;
float accuracy = 0.012;
float accuracy = 0.015;
float bounce_acc = 1.0;
static volatile int globalCounter;

View File

@@ -79,35 +79,41 @@ int main (void) {
int IRQpin = GPIOIN;
int OUTpin = GPIO;
if (RaspberryPiModel==PI_MODEL_4B) {
pinMode(IRQpin, INPUT);
pinMode(OUTpin, OUTPUT);
digitalWrite (OUTpin, LOW) ;
printf("\nTesting IRQ @ WPI-GPIO%d with trigger @ WPI-GPIO%d rising\n", IRQpin, OUTpin);
CheckSame("wiringPiISR", wiringPiISR(IRQpin, INT_EDGE_RISING, &wfiup), 0);
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 3 , 3);
sleep(1);
CheckSame("wiringPiISRStop", wiringPiISRStop(IRQpin), 0);
printf("\n.IRQ off\n");
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 2, 0);
switch(RaspberryPiModel) {
case PI_MODEL_4B:
case PI_MODEL_5:
pinMode(IRQpin, INPUT);
pinMode(OUTpin, OUTPUT);
digitalWrite (OUTpin, LOW) ;
printf("\nTesting IRQ @ WPI-GPIO%d with trigger @ WPI-GPIO%d falling\n", IRQpin, OUTpin);
CheckSame("wiringPiISR", wiringPiISR(IRQpin, INT_EDGE_RISING, &wfidown), 0);
sleep(1);
StartSequence(INT_EDGE_FALLING, OUTpin, 4, -4);
sleep(1);
CheckSame("wiringPiISRStop", wiringPiISRStop(IRQpin), 0);
printf("\n.IRQ off\n");
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 2, 0);
printf("\nTesting IRQ @ WPI-GPIO%d with trigger @ WPI-GPIO%d rising\n", IRQpin, OUTpin);
CheckSame("wiringPiISR", wiringPiISR(IRQpin, INT_EDGE_RISING, &wfiup), 0);
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 3 , 3);
sleep(1);
CheckSame("wiringPiISRStop", wiringPiISRStop(IRQpin), 0);
printf("\n.IRQ off\n");
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 2, 0);
printf("Error check - next call must be wrong!\n");
CheckSame("wiringPiISRStop with wrong pin, result code:", wiringPiISRStop(5555), EINVAL);
printf("\nTesting IRQ @ WPI-GPIO%d with trigger @ WPI-GPIO%d falling\n", IRQpin, OUTpin);
CheckSame("wiringPiISR", wiringPiISR(IRQpin, INT_EDGE_RISING, &wfidown), 0);
sleep(1);
StartSequence(INT_EDGE_FALLING, OUTpin, 4, -4);
sleep(1);
CheckSame("wiringPiISRStop", wiringPiISRStop(IRQpin), 0);
printf("\n.IRQ off\n");
sleep(1);
StartSequence(INT_EDGE_RISING, OUTpin, 2, 0);
pinMode(OUTpin, INPUT);
printf("Error check - next call must be wrong!\n");
CheckSame("wiringPiISRStop with wrong pin, result code:", wiringPiISRStop(5555), EINVAL);
pinMode(OUTpin, INPUT);
break;
default:
printf("unit test not possible with this hardware, need connection between Wiringpi pin 28 and 29!\n");
break;
}
return UnitTestState();