X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/02cf06bea528e58a35090a6892d79fad3d6f6491..1530cf9cbfb008ff6a7e54e695dcb5a34f95d5a4:/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py diff --git a/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py index 19dc98f..4f7ae36 100644 --- a/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py +++ b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py @@ -1,15 +1,20 @@ +# SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries +# +# SPDX-License-Identifier: MIT """Custom PulseIn Class to read PWM signals""" import time import subprocess import os import atexit import random +import struct import sysv_ipc DEBUG = False queues = [] procs = [] + # The message queues live outside of python space, and must be formally cleaned! def final(): """In case the program is cancelled or quit, we need to clean up the PulseIn @@ -25,6 +30,7 @@ def final(): atexit.register(final) + # pylint: disable=c-extension-no-member class PulseIn: """PulseIn Class to read PWM signals""" @@ -49,9 +55,15 @@ class PulseIn: "Message queue creation failed" ) from sysv_ipc.ExistentialError + # Check if OS is 64-bit + if struct.calcsize("P") * 8 == 64: # pylint: disable=no-member + libgpiod_filename = "libgpiod_pulsein64" + else: + libgpiod_filename = "libgpiod_pulsein" + dir_path = os.path.dirname(os.path.realpath(__file__)) cmd = [ - dir_path + "/libgpiod_pulsein", + dir_path + "/" + libgpiod_filename, "--pulses", str(maxlen), "--queue", @@ -64,7 +76,7 @@ class PulseIn: if DEBUG: print(cmd) - self._process = subprocess.Popen(cmd) + self._process = subprocess.Popen(cmd) # pylint: disable=consider-using-with procs.append(self._process) # wait for it to start up