]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Rollback breaking libgpiod changes from #1001
authorMelissa LeBlanc-Williams <melissa@adafruit.com>
Sat, 16 Aug 2025 17:29:51 +0000 (10:29 -0700)
committerMelissa LeBlanc-Williams <melissa@adafruit.com>
Sat, 16 Aug 2025 17:29:51 +0000 (10:29 -0700)
src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_pin_2_x.py

index aa1ee1861a25e86faf60aa68b505e91ffe8ee8d0..9f12d9d427cd07baf730e2dfa2f770766b3a1852 100644 (file)
@@ -48,8 +48,14 @@ class Pin:
         """Initialize the Pin"""
         # Input,
         if not self._line_request:
         """Initialize the Pin"""
         # Input,
         if not self._line_request:
-            line_config = gpiod.LineSettings()
+            self._line_request = self._chip.request_lines(
+                config={int(self._num): None},
+                consumer=self._CONSUMER,
+            )
+            # print("init line: ", self.id, self._line)
 
 
+        if mode is not None:
+            line_config = gpiod.LineSettings()
             if mode == self.IN:
                 line_config.direction = gpiod.line.Direction.INPUT
                 if pull is not None:
             if mode == self.IN:
                 line_config.direction = gpiod.line.Direction.INPUT
                 if pull is not None:
@@ -62,18 +68,24 @@ class Pin:
                     else:
                         raise RuntimeError(f"Invalid pull for pin: {self.id}")
 
                     else:
                         raise RuntimeError(f"Invalid pull for pin: {self.id}")
 
+                self._mode = self.IN
+                self._line_request.reconfigure_lines(
+                    {
+                        int(self._num): line_config,
+                    }
+                )
             elif mode == self.OUT:
                 if pull is not None:
                     raise RuntimeError("Cannot set pull resistor on output")
             elif mode == self.OUT:
                 if pull is not None:
                     raise RuntimeError("Cannot set pull resistor on output")
+                self._mode = self.OUT
                 line_config.direction = gpiod.line.Direction.OUTPUT
                 line_config.direction = gpiod.line.Direction.OUTPUT
-
+                self._line_request.reconfigure_lines(
+                    {
+                        int(self._num): line_config,
+                    }
+                )
             else:
             else:
-                raise RuntimeError(f"Invalid mode for pin: {self.id}")
-
-            self._line_request = self._chip.request_lines(
-                {int(self._num): line_config},
-                consumer=self._CONSUMER,
-            )
+                raise RuntimeError("Invalid mode for pin: %s" % self.id)
 
     def value(self, val=None):
         """Set or return the Pin Value"""
 
     def value(self, val=None):
         """Set or return the Pin Value"""