After a lot of experimenting, I have finally arrived at IRPs for the Dyson protocol that both decode and generate complete signals as sent by my AM05 heater remote. I believe the only difference between the various Dyson models, apart from parameter values, may be the toggle. On the AM05 it cycles through 0,1,2 and then back to 0, so not using the value 3. The Dyson discussion thread indicates that some models do use T=3, and it is possible that they may omit some other value or use a different ordering, such as in reverse. So I have created IRPs that do not include an assignment element for the toggle, and which set its range as 0..3.
My final discovery, which I do not fully understand, was that if the IRP includes the ditto repeats and the signal has no dittos, it decodes only if Repeat Finder is turned off. Another issue, which I should have anticipated, is that they do not work with the Arduino device as its limitation of lead-outs to a maximum of 65535us appears to apply to capturing as well as transmitting. For these reasons I have included a Dyson_relaxed as a fallback that works in all cases. So with this in mind, I offer the following as a revision of the Dyson entry in IrpProtocols.xml:
Code: Select all
<irp:protocol name="Dyson">
<irp:parameter name="prefer-over">Dyson_relaxed</irp:parameter>
<irp:irp><![CDATA[{780,38k}<1,-1|1,-2>(3,-1,D:7,F:6,T:-2,1,-100m,3,-1,D:7,F:6,T:-2,1,-60m,(3,-1,1:1,1,-60m)*)[D:0..127,F:0..63,T:0..3=0]]]></irp:irp>
<irp:documentation>This protocol is used by Dyson fan heaters. T is a toggle but its range of values may depend on the Dyson model. For example,
the AM05 cycles T through 0,1,2 leaving the value 3 unused. The Dyson2 protocol differs in having a longer lead-out between the two full frames.
It is used in the AM05 for the Power button. For signals with no ditto repeat frames to be decoded by IrpTransmogrifier, Repeat Finder must be
turned off.</irp:documentation>
</irp:protocol>
<irp:protocol name="Dyson2">
<irp:parameter name="prefer-over">Dyson_relaxed</irp:parameter>
<irp:irp><![CDATA[{780,38k}<1,-1|1,-2>(3,-1,D:7,F:6,T:-2,1,-400m,3,-1,D:7,F:6,T:-2,1,-60m,(3,-1,1:1,1,-60m)*)[D:0..127,F:0..63,T:0..3=0]]]></irp:irp>
<irp:documentation>The Dyson protocol is used by Dyson fan heaters. T is a toggle but its range of values may depend on the Dyson model. For example,
the AM05 cycles T through 0,1,2 leaving the value 3 unused. The Dyson2 protocol differs in having a longer lead-out between the two full frames.
It is used in the AM05 for the Power button. For signals with no ditto repeat frames to be decoded by IrpTransmogrifier, Repeat Finder must be
turned off.</irp:documentation>
</irp:protocol>
<irp:protocol name="Dyson_relaxed">
<irp:parameter name="decode-only">true</irp:parameter>
<irp:irp><![CDATA[{780,38k}<1,-1|1,-2>(3,-1,D:7,F:6,T:-2,1,-100m)+[D:0..127,F:0..63,T:0..3=0]]]></irp:irp>
<irp:documentation>Relaxed version of the Dyson and Dyson2 protocols, which tests only the first frame. A signal may decode as Dyson_relaxed
because (a) the signal is incomplete, or (b) the capture hardware cannot report lead-out values greater than 0xFFFF microseconds, or (c) the
signal has no ditto repeat frames and Repeat Finder is turned on for IrpTransmogrifier.</irp:documentation>
</irp:protocol>