-# from adafruit_blinka.microcontroller.generic_linux.sysfs_pin import Pin
-# from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin
-from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin as GenericLinuxPin
-
-import os
-
-# Release (unexport) all pins on init and set to INPUT mode
-class Pin(GenericLinuxPin):
- def __init__(self, pin_id):
- self._release_sysfs_gpio(pin_id)
- super().__init__(pin_id)
-
- def _release_sysfs_gpio(self, pin_id, base_offset=336):
- # pin_id might be a tuple like (chip_id, line_number)
- if isinstance(pin_id, tuple):
- _, line_number = pin_id
- else:
- line_number = pin_id
-
- gpio_num = base_offset + int(line_number)
- gpio_path = f"/sys/class/gpio/gpio{gpio_num}"
-
- try:
- if not os.path.exists(gpio_path):
- with open("/sys/class/gpio/export", "w") as f:
- f.write(f"{gpio_num}")
- with open(f"{gpio_path}/direction", "w") as f:
- f.write("in")
- with open("/sys/class/gpio/unexport", "w") as f:
- f.write(f"{gpio_num}")
- except Exception:
- # fail silently if not allowed
- pass
-
-# Use with sysfs_pin
-# GPIO_BASE = 336