I misinterpreted the description of the Sony DSP protocol in protocols.ini where it says
If your learned signal decode displays 3 repeats of Sony15 36,96, then 3 Sony8 entries followed by one more Sony15 entry, then you need to use this Sony DSP protocol.
It says nothing further about the parameters of the final Sony15 signal so I presumed it implied that these again were 36,96. I have now tested RMIR v2.09 build 4 against real Sony DSP signals from the S3C80 executor in protocols.ini and found this to be wrong. I have looked at the disassembly of the executor and found that if F is the 8-bit OBC of the Sony DSP signal then the final Sony15 signal has device code 22+(F<128) and OBC (F&0x7F)^17.
Although Sony15 has a 7-bit F and an 8-bit D, the Sony DSP executor creates the Sony15 part of the Sony DSP signal from an 8-bit F and 7-bit D. The complete IRP for Sony DSP is also most easily expressed in this form, as
Code: Select all
{40k,600}<1,-1|2,-1>((4,-1,96:8,18:7,^45m)3,(4,-1,195:8,^45m),(4,-1,81:8,^45m),(4,-1,F:8,^45m),
(4,-1,(F^145):8,11:7,^45m))[F:0..255]
However, further testing showed that the UEI learning algorithm seems to have a problem with this signal. The 11:7 at the end has its lsb binary form as 1101000 but remotes fail to learn the final 0. So to make RMIR recognize Sony DSP learned signals, I have added a SonyDSP_relaxed protocol that has 11:6 and omits the leadout ^45m, which is irrelevant as the overall signal does not repeat. This gives the following two entries in the IrpProtocols.xml file for RMIR:
Code: Select all
<irp:protocol c-name="SonyDSP" name="SonyDSP">
<irp:parameter name="prefer-over">SonyDSP_relaxed</irp:parameter>
<irp:parameter name="prefer-over">Sony15</irp:parameter>
<irp:parameter name="uei-executor">01FF:JP1DSP[;F]</irp:parameter>
<irp:irp><![CDATA[{40k,600}<1,-1|2,-1>((4,-1,96:8,18:7,^45m)3,(4,-1,195:8,^45m),(4,-1,81:8,^45m),(4,-1,F:8,^45m),
(4,-1,(F^145):8,11:7,^45m))[F:0..255]]]></irp:irp>
<irp:documentation/>
</irp:protocol>
<irp:protocol c-name="SonyDSP_relaxed" name="SonyDSP_relaxed">
<irp:parameter name="prefer-over">Sony15</irp:parameter>
<irp:parameter name="decode-only">true</irp:parameter>
<irp:parameter name="uei-executor" type="xml">
<rm:deployment executor="01FF:JP1DSP[;F]">
<rm:protocolName>SonyDSP</rm:protocolName>
<rm:commentItem>Final data bit missing</rm:commentItem>
</rm:deployment>
</irp:parameter>
<irp:irp><![CDATA[{40k,600}<1,-1|2,-1>((4,-1,96:8,18:7,^45m)3,(4,-1,195:8,^45m),(4,-1,81:8,^45m),(4,-1,F:8,^45m),
(4,-1,(F^145):8,11:6))[F:0..255]]]></irp:irp>
<irp:documentation/>
</irp:protocol>
I'm posting this both for information and to see if you think this is a reasonable approach.