]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Fix libgpiod for 64-bit Pi by detecting and loading appropriate lib
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 10 Sep 2021 15:58:03 +0000 (08:58 -0700)
committerMelissa LeBlanc-Williams <melissa@adafruit.com>
Fri, 10 Sep 2021 15:58:03 +0000 (08:58 -0700)
src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py
src/adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64 [new file with mode: 0644]

index 19dc98f32089364b6e266712f07ce39038dda5e1..326f802ac3afb283b00c8721dbd016b00271d056 100644 (file)
@@ -5,6 +5,7 @@ import os
 import atexit
 import random
 import sysv_ipc
 import atexit
 import random
 import sysv_ipc
+import struct
 
 DEBUG = False
 queues = []
 
 DEBUG = False
 queues = []
@@ -49,9 +50,15 @@ class PulseIn:
                 "Message queue creation failed"
             ) from sysv_ipc.ExistentialError
 
                 "Message queue creation failed"
             ) from sysv_ipc.ExistentialError
 
+        # Check if OS is 64-bit
+        if struct.calcsize("P") * 8 == 64:
+            libgpiod_filename = "libgpiod_pulsein64"
+        else:
+            libgpiod_filename = "libgpiod_pulsein"
+
         dir_path = os.path.dirname(os.path.realpath(__file__))
         cmd = [
         dir_path = os.path.dirname(os.path.realpath(__file__))
         cmd = [
-            dir_path + "/libgpiod_pulsein",
+            dir_path + "/" + libgpiod_filename,
             "--pulses",
             str(maxlen),
             "--queue",
             "--pulses",
             str(maxlen),
             "--queue",
diff --git a/src/adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64 b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64
new file mode 100644 (file)
index 0000000..0143060
Binary files /dev/null and b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/libgpiod_pulsein64 differ