]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Add timout loop after exporting the PWM pin.
authorScott Main <smain@google.com>
Fri, 4 Dec 2020 20:09:22 +0000 (12:09 -0800)
committerScott Main <smain@google.com>
Fri, 4 Dec 2020 20:59:17 +0000 (12:59 -0800)
This gives udev time to respond to the device event. Without this,
the subsequent attempts to modify pin properties will fail when
depending on udev rules to apply new user permissions.

This code is essentially copied from python-periphery, as was most
of this file (both MIT licenced). Although it appears sergeev added
this loop recently, compared to when this code was originally cloned.

src/adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py

index 2d58621c010686c3ce389e170eb627e3f90e5500..f751b71a4a017dc3870da1e1445820b6c521e1ce 100644 (file)
@@ -132,7 +132,7 @@ class PWMOut:
                 if e.errno != EACCES or (
                     e.errno == EACCES and i == PWMOut.PWM_STAT_RETRIES - 1
                 ):
                 if e.errno != EACCES or (
                     e.errno == EACCES and i == PWMOut.PWM_STAT_RETRIES - 1
                 ):
-                    raise PWMError(e.errno, "Opening PWM period: " + e.strerror)
+                    raise PWMError(e.errno, "Opening PWM period: " + e.strerror) from e
             sleep(PWMOut.PWM_STAT_DELAY)
 
         # self._set_enabled(False) # This line causes a write error when trying to enable
             sleep(PWMOut.PWM_STAT_DELAY)
 
         # self._set_enabled(False) # This line causes a write error when trying to enable