diff --git a/doc/branch_ook_radio_config.txt b/doc/branch_ook_radio_config.txt index 7e3e420..60470c5 100644 --- a/doc/branch_ook_radio_config.txt +++ b/doc/branch_ook_radio_config.txt @@ -1,21 +1,35 @@ -The MiHome light requires a bit more of the transmit architecture to be fleshed out, so that it is possible for -the device classes to pass radio parameters down the transmit pipeline. +Supporting the MiHome Light -The MiHome light requires a longer transmit burst to guarantee that it sees the transmit message. -Testing in the lab has show that parameters (OUTER_TIMES=1, OUTER_DELAY=0, INNER_TIMES=75) is a good parameter -that leads to good reliability. +The MiHome light requires a longer transmit burst. +OUTER_TIMES=1, OUTER_DELAY=0, INNER_TIMES=75 -It is not yet possible for the OOK transmit pipeline between the device class and the radio module to pass -forward these parameters. Devices.py/LegacyDevice/send_message() needs to read the radio config parameters -from it's most concrete instance, and use these to send to the air_interface (which is actually ook_interface, -which is a OnAir.TwoBitAirInterface instance). OnAir.TwoBitAirInterface.send() then needs to read out these -radio config parameters and override the defaults passed to radio.transmit() - defaults are presently outer_times=1, -inner_times=8, outer_delay=0, modulation=ook. Also see the note in OnAir.TwoBitInterface.send() about having -default radio parameters that are overriden by any radio parameters passed into it (so that if no parameters -are provided, sensible defaults are used). +This is already possible with the new radio physical layer, +and the light has been tested at the physical layer and proved to work reliably +with these settings. -This will then allow any device class to configure any of the lower level parameters of the radio to best suit -that specific device classes radio receive performance characteristics. +There is presently no way to pass this forward from the device classes to the radio.transmit() + +STEPS REQUIRED + +1. Devices.py/LegacyDevice/send_message() + needs to read the radio config parameters from it's most concrete instance + +2. Use these to send to the air_interface + (which is actually ook_interface, + which is a OnAir.TwoBitAirInterface instance). + +3. OnAir.TwoBitAirInterface.send() + Needs to read out these radio config parameters + and override the defaults passed to radio.transmit() + +4. defaults are presently outer_times=1, inner_times=8, outer_delay=0, modulation=ook. + +5. OnAir.TwoBitInterface.send() + Needs default radio parameters that are overriden by any radio parameters passed into it + (so that if no parameters are provided, sensible defaults are used). + + +FUTURE WORK Note also that when radio transmit parameters are changed, this changes the amount of time that the radio is in transmit mode (and therefore alters the amount of time it is in receive mode, and ultimately how wide or @@ -23,6 +37,3 @@ the chain how long a certain set of parameters will leave the receive window closed, so that a deterministic message scheduler can be written that schedules messages into known transmit and receive slots. No need to implement that yet, but we need to allow for it in the future. - - -