X-Git-Url: https://git.ayoreis.com/hackapet/Adafruit_Blinka.git/blobdiff_plain/d718837dec2d148bc6177bc67efd9eb2a5d62cea..a8a160c837be23b17fd159a270edf7c4a6304b88:/python/mcp/__init__.py diff --git a/python/mcp/__init__.py b/python/mcp/__init__.py index 799f336..0e52a3c 100644 --- a/python/mcp/__init__.py +++ b/python/mcp/__init__.py @@ -30,8 +30,25 @@ class Enum(object): yield (key, val) -class Pin(Enum): - def __init__(self, id): - """ id type is likely platform-specific""" - self.id = id - pass +class ContextManaged: + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.deinit() + +def Lockable(ContextManaged): + _locked = False + + def try_lock(self): + if self._locked: + return False + else: + self._locked=True + return True + + def unlock(self): + if self._locked: + self._locked = False + else: + raise ValueError("Not locked")