pin_resolver: Add hardware interface reservation

This commit is contained in:
Desuuuu 2022-05-22 18:15:34 +02:00
parent 4490a58411
commit 9485c76a93
No known key found for this signature in database
GPG Key ID: 85943F4B2C2CE0DC
1 changed files with 8 additions and 0 deletions

View File

@ -19,6 +19,7 @@ class PinResolver:
def __init__(self, validate_aliases=True):
self.validate_aliases = validate_aliases
self.reserved = {}
self.reserved_interfaces = {}
self.aliases = {}
self.active_pins = {}
def reserve_pin(self, pin, reserve_name):
@ -26,6 +27,13 @@ class PinResolver:
raise error("Pin %s reserved for %s - can't reserve for %s" % (
pin, self.reserved[pin], reserve_name))
self.reserved[pin] = reserve_name
def reserve_interface(self, interface, reserve_name):
if (interface in self.reserved_interfaces
and self.reserved_interfaces[interface] != reserve_name):
raise error("Interface %s reserved for %s - can't reserve for %s"
% (interface, self.reserved_interfaces[interface],
reserve_name))
self.reserved_interfaces[interface] = reserve_name
def alias_pin(self, alias, pin):
if alias in self.aliases and self.aliases[alias] != pin:
raise error("Alias %s mapped to %s - can't alias to %s" % (