Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,14 @@ def init(self, mode=IN, pull=None):
"""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:
Expand All @@ -62,18 +68,24 @@ def init(self, mode=IN, pull=None):
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")
self._mode = self.OUT
line_config.direction = gpiod.line.Direction.OUTPUT

self._line_request.reconfigure_lines(
{
int(self._num): line_config,
}
)
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"""
Expand Down