Message ID | 20230605190051.3915571-1-joe.slater@windriver.com |
---|---|
State | New |
Headers | show |
Series | [v2,libgpiod,1/1] gpio-tools-test.bats: modify delays in toggle test | expand |
> -----Original Message----- > From: andy.shevchenko@gmail.com <andy.shevchenko@gmail.com> > Sent: Monday, June 5, 2023 1:04 PM > To: Slater, Joseph <joe.slater@windriver.com> > Cc: linux-gpio@vger.kernel.org; MacLeod, Randy > <Randy.MacLeod@windriver.com> > Subject: Re: [v2][libgpiod][PATCH 1/1] gpio-tools-test.bats: modify delays in > toggle test > > Mon, Jun 05, 2023 at 12:00:51PM -0700, joe.slater@windriver.com kirjoitti: > > From: Joe Slater <joe.slater@windriver.com> > > > > The test "gpioset: toggle (continuous)" uses fixed delays to test > > toggling values. This is not reliable, so we switch to looking for > > transitions from one value to another. > > > > We wait for a transition up to 1.5 seconds. > > ... > > > +gpiosim_wait_value() { > > + local OFFSET=$2 > > + local EXPECTED=$3 > > + local DEVNAME=${GPIOSIM_DEV_NAME[$1]} > > + local CHIPNAME=${GPIOSIM_CHIP_NAME[$1]} > > + local > PORT=$GPIOSIM_SYSFS/$DEVNAME/$CHIPNAME/sim_gpio$OFFSET/value > > + > > + for i in {1..15} ; do > > Do you need space before semicolon? > > > + [ "$(<$PORT)" = "$EXPECTED" ] && return > > + sleep 0.1 > > + done > > + return 1 > > +} > > ... > > > - for LINE in $(find $BANKPATH/ | grep -E "line[0-9]+$") > > + for LINE in $(find $BANKPATH/ | egrep "line[0-9]+$") > > Seems stray change. [Slater, Joseph] The extra space is not necessary. I removed it. Putting egrep back was a mistake. I'll send a V3 in a few minutes. Joe > > -- > With Best Regards, > Andy Shevchenko >
diff --git a/tools/gpio-tools-test.bats b/tools/gpio-tools-test.bats index c83ca7d..f7a0e38 100755 --- a/tools/gpio-tools-test.bats +++ b/tools/gpio-tools-test.bats @@ -141,6 +141,20 @@ gpiosim_check_value() { [ "$VAL" = "$EXPECTED" ] } +gpiosim_wait_value() { + local OFFSET=$2 + local EXPECTED=$3 + local DEVNAME=${GPIOSIM_DEV_NAME[$1]} + local CHIPNAME=${GPIOSIM_CHIP_NAME[$1]} + local PORT=$GPIOSIM_SYSFS/$DEVNAME/$CHIPNAME/sim_gpio$OFFSET/value + + for i in {1..15} ; do + [ "$(<$PORT)" = "$EXPECTED" ] && return + sleep 0.1 + done + return 1 +} + gpiosim_cleanup() { for CHIP in ${!GPIOSIM_CHIP_NAME[@]} do @@ -154,7 +168,7 @@ gpiosim_cleanup() { ls $BANKPATH/line* > /dev/null 2>&1 if [ "$?" = "0" ] then - for LINE in $(find $BANKPATH/ | grep -E "line[0-9]+$") + for LINE in $(find $BANKPATH/ | egrep "line[0-9]+$") do test -e $LINE/hog && rmdir $LINE/hog rmdir $LINE @@ -1567,15 +1581,15 @@ request_release_line() { gpiosim_check_value sim0 4 0 gpiosim_check_value sim0 7 0 - sleep 1 - - gpiosim_check_value sim0 1 0 + # sleeping fixed amounts can be unreliable, so we + # sync to the toggles + # + gpiosim_wait_value sim0 1 0 gpiosim_check_value sim0 4 1 gpiosim_check_value sim0 7 1 - sleep 1 - gpiosim_check_value sim0 1 1 + gpiosim_wait_value sim0 1 1 gpiosim_check_value sim0 4 0 gpiosim_check_value sim0 7 0 }