Implementation checklist added for OnAir
1 parent 1e69c88 commit bb73d6376cd3d6b315f984a5c75e3e0c8ed6269b
@David Whale David Whale authored on 19 May 2016
Showing 1 changed file
View
80
src/energenie/OnAir.py
#
# NOTE: This also might include intelligent power level selection based
# on RSSI reports from different devices.
 
import OpenThings
import TwoBit
import radio
 
 
class OpenThingsAirInterface():
def __init__(self):
pass #TODO
# radio params defaults FSK, inner_repeats, outer_delay, outer_repeats, power_level, frequency
# tx defaults
# rx defaults
self.radio = radio # aids mocking later
#TODO: tx defaults
# FSK, inner_repeats, outer_delay, outer_repeats, power_level, frequency
#TODO: rx defaults
# FSK, poll_rate, timeout, frequency
 
def send(self, payload, radio_params=None):
pass #TODO
# payload is a pydict suitable for OpenThings
# radio_params is an overlay on top of radio tx defaults
# tx, pydict payload and radio params in
# OpenThings encode and encrypt, configure radio for FSK transmit, pass repeats
pass #TODO
#TODO: OpenThings.encode()
#TODO: configure radio modulation
#TODO: set radio to transmit mode
#TODO: configure other radio parameters
#TODO: transmit payload
#TODO: return radio to state before transmit
 
def receive(self, radio_params): # -> (radio_measurements, payload or None)
pass # TODO
def receive(self, radio_params): # -> (radio_measurements, address or None, payload or None)
# radio_params is an overlay on top of radio rx defaults (e.g. poll rate, timeout, min payload, max payload)
# radio_measurements might include rssi reading, short payload report, etc
# rx, configure radio for FSK receive OpenThings decode and decrypt,
# pydict payload and metadata (RSSI etc) out
pass # TODO
#TODO: configure radio modulation
#TODO: set radio to receive mode
#TODO: set other radio parameters
#TODO: poll radio at rate until timeout or received
#TODO: return radio to state it was before receive
#TODO: OpenThings.decode
#TODO: report damaged payload (crc failure)
#TODO: extract addresses
#TODO: return (radio_measurements, address, payload)
 
 
class TwoBitAirInterface():
def __init__(self):
pass # TODO
# radio params defaults OOK, inner_repeats, outer_delay, outer_repeats, power_level, frequency
# tx defaults
# rx defaults
self.radio = radio # aids mocking later
#TODO: tx defaults
# OOK, inner_repeats, outer_delay, outer_repeats, power_level, frequency
#TODO: rx defaults
# OOK, poll_rate, timeout, frequency
 
def send(self, payload, radio_params=None):
pass #TODO
# payload is just a list of bytes, or a byte buffer
# radio_params is an overlay on top of radio tx defaults
# tx, pydict payload and radio params in
# TwoBit encode, configure radio for OOK transmit, pass repeats
pass #TODO
 
def receive(self, radio_params): # -> (radio_measurements, payload or None)
pass # TODO
#TODO: TwoBit.encode()
#TODO: configure radio modulation
#TODO: set radio to transmit mode
#TODO: configure other radio parameters
#TODO: transmit payload
#TODO: return radio to state before transmit
 
def receive(self, radio_params): # -> (radio_measurements, address or None, payload or None)
# radio_params is an overlay on top of radio rx defaults (e.g. poll rate, timeout, min payload, max payload)
# radio_measurements might include rssi reading, short payload report, etc
# rx, configure radio for OOK receive, TwoBit decode
# pydict payload and metadata (RSSI etc) out
pass # TODO
#TODO: configure radio modulation
#TODO: set radio to receive mode
#TODO: set other radio parameters
#TODO: poll radio at rate until timeout or received
#TODO: return radio to state it was before receive
#TODO: TwoBit.decode
#TODO: report damaged payload??
#TODO: extract addresses (house_address, device_index)
#TODO: return (radio_measurements, address, payload)
 
 
# END