diff --git a/src/energenie/OnAir.py b/src/energenie/OnAir.py index c7d7b6f..e95b8de 100644 --- a/src/energenie/OnAir.py +++ b/src/energenie/OnAir.py @@ -13,18 +13,11 @@ # NOTE: This also might include intelligent power level selection based # on RSSI reports from different devices. +from lifecycle import * import OpenThings import TwoBit import radio -def log_method(m): - def inner(*args, **kwargs): - print("CALL %s with %s %s" % (m, args, kwargs)) - r = m(*args, **kwargs) - print("RETURN %s with %s" % (m, r)) - return r - return inner - class OpenThingsAirInterface(): def __init__(self): diff --git a/src/energenie/Registry.py b/src/energenie/Registry.py index 0c5638c..d62072e 100644 --- a/src/energenie/Registry.py +++ b/src/energenie/Registry.py @@ -4,6 +4,8 @@ # # NOTE: This is an initial, non persisted implementation only +from lifecycle import * + import time try: import Devices # python 2 @@ -11,24 +13,6 @@ from . import Devices # python 3 -def deprecated(m): - print("warning: deprecated method %s" % str(m)) - return m - - -def unimplemented(m): - print("warning: unimplemented method %s" % str(m)) - def inner(*args, **kwargs): - print("warning: unimplemented method %s" % str(m)) - return m() - return inner - - -def untested(m): - print("warning: untested method %s" % str(m)) - return m - - directory = {} @deprecated @@ -86,14 +70,6 @@ # TODO: serialisation format for the individual device meta record? json? -def log_method(m): - def inner(*args, **kwargs): - print("CALL %s with: %s %s" % (m, args, kwargs)) - r = m(*args, **kwargs) - print("RETURN %s with: %s" % (m, r)) - return r - return inner - class RegistryStore(): # This is data storage, so it it just the 'RegistRY'?? """A mock in-memory only store, for testing and debugging""" diff --git a/src/energenie/TwoBit_test.py b/src/energenie/TwoBit_test.py index 34e8855..d01a163 100644 --- a/src/energenie/TwoBit_test.py +++ b/src/energenie/TwoBit_test.py @@ -18,17 +18,17 @@ print("*" * 80) -ALL_ON = TwoBit.build_switch_msg(True) -ALL_OFF = TwoBit.build_switch_msg(False) -ONE_ON = TwoBit.build_switch_msg(True, device_address=1) -ONE_OFF = TwoBit.build_switch_msg(False, device_address=1) -TWO_ON = TwoBit.build_switch_msg(True, device_address=2) -TWO_OFF = TwoBit.build_switch_msg(False, device_address=2) -THREE_ON = TwoBit.build_switch_msg(True, device_address=3) -THREE_OFF = TwoBit.build_switch_msg(False, device_address=3) -FOUR_ON = TwoBit.build_switch_msg(True, device_address=4) -FOUR_OFF = TwoBit.build_switch_msg(False, device_address=4) -MYHOUSE_ALL_ON = TwoBit.build_switch_msg(True, house_address=0x12345) +ALL_ON = TwoBit.encode_switch_message(True) +ALL_OFF = TwoBit.encode_switch_message(False) +ONE_ON = TwoBit.encode_switch_message(True, device_address=1) +ONE_OFF = TwoBit.encode_switch_message(False, device_address=1) +TWO_ON = TwoBit.encode_switch_message(True, device_address=2) +TWO_OFF = TwoBit.encode_switch_message(False, device_address=2) +THREE_ON = TwoBit.encode_switch_message(True, device_address=3) +THREE_OFF = TwoBit.encode_switch_message(False, device_address=3) +FOUR_ON = TwoBit.encode_switch_message(True, device_address=4) +FOUR_OFF = TwoBit.encode_switch_message(False, device_address=4) +MYHOUSE_ALL_ON = TwoBit.encode_switch_message(True, house_address=0x12345) tests = [ALL_ON, ALL_OFF, ONE_ON, ONE_OFF, TWO_ON, TWO_OFF, THREE_ON, THREE_OFF, FOUR_ON, FOUR_OFF, MYHOUSE_ALL_ON] diff --git a/src/energenie/lifecycle.py b/src/energenie/lifecycle.py new file mode 100644 index 0000000..88422d3 --- /dev/null +++ b/src/energenie/lifecycle.py @@ -0,0 +1,38 @@ +# lifecycle.py 21/05/2016 D.J.Whale +# +# Coding lifecycle method decorators. + +def unimplemented(m): + print("warning: unimplemented method %s" % str(m)) + def inner(*args, **kwargs): + print("warning: unimplemented method %s" % str(m)) + return m() + return inner + +def disabled(m): + """Load-time waring about disabled function""" + print("warning: method is disabled:%s" % m) + def nothing(*args, **kwargs):pass + return nothing + +def untested(m): + print("warning: untested method %s" % str(m)) + return m + +def log_method(m): + def inner(*args, **kwargs): + print("CALL %s with: %s %s" % (m, args, kwargs)) + r = m(*args, **kwargs) + print("RETURN %s with: %s" % (m, r)) + return r + return inner + +def deprecated(m): + print("warning: deprecated method %s" % str(m)) + return m + +# END + + + + diff --git a/src/energenie/radio.py b/src/energenie/radio.py index 5377d31..c4a2601 100644 --- a/src/energenie/radio.py +++ b/src/energenie/radio.py @@ -12,6 +12,8 @@ # All you would need is a different radio.py that marshalled data to and from # the Arduino via pyserial. +from lifecycle import * + #TODO: Should really add parameter validation here, so that C code doesn't have to. #although it will be faster in C (C could be made optional, like an assert?) @@ -62,30 +64,6 @@ return line -def unimplemented(m): - print("warning: method is not implemented:%s" % m) - return m - - -def deprecated(m): - """Load-time warning about deprecated method""" - print("warning: method is deprecated:%s" % m) - return m - - -def untested(m): - """Load-time warning about untested function""" - print("warning: method is untested:%s" % m) - return m - - -def disabled(m): - """Load-time waring about disabled function""" - print("warning: method is disabled:%s" % m) - def nothing(*args, **kwargs):pass - return nothing - - def init(): """Initialise the module ready for use""" #extern void radio_init(void);