+# 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
atexit.register(final)
-# pylint: disable=c-extension-no-member, consider-using-with
+
+# pylint: disable=c-extension-no-member
class PulseIn:
"""PulseIn Class to read PWM signals"""
"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",
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