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.
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