Ok, first some theory: That a particular IR signal has several decodes is a fact of life. Just like "table" can denote a piece of furniture just as well as a two dimensional array, or that the same tone can be called C-sharp or D-flat (equal tempered tuning assumed). Andy's signal decodes (with stand-alone IrpTransmogrifier wilth --all) as
Code: Select all
$ irptransmogrifier decode --all Freq=39024[+204 -916 +204 -1724 +204 -760 +204 -2818 +204 -1306 +204 -1306 +204 -1176 +204 -2688 +204 -13842 +204 -916 +204 -1854 +204 -760 +204 -760 +204 -1046 +204 -1462 +204 -760 +204 -760 +204 -80624][+204 -916 +204 -1724 +204 -760 +204 -2818 +204 -1306 +204 -1306 +204 -1176 +204 -2688 +204 -13842 +204 -916 +204 -760 +204 -1854 +204 -760 +204 -1046 +204 -1462 +204 -760 +204 -760 +204 -80624][+204 -916 +204 -1724 +204 -760 +204 -2818 +204 -1306 +204 -1306 +204 -1176 +204 -2688 +204 -13842 +204 -916 +204 -760 +204 -1854 +204 -80624]
XMP: {D=62,F=9472,S=16}
XMP-1: {D=62,F=37,S=16}
XMPff: {D=62,F=9472,S=16}
XMPff-1: {D=62,F=37,S=16}
that is, four different decodes. So the question is: which one of these do we select? In science, the "principle of the most powerful unfalsified model" is most often used, and I claim is also the natural choice for us. "Most powerful" means the model that prohibits most. Here, an inspection of the IRP forms reveals that XMPff-1 is clearly the most powerful model.
The configuration file IrpProtocols.xml for IrpTransmogrifier contains an attribute "prefer-over" which expresses a relation on the set of decodes, that declares that a particular decode should be preferred over another. This in general (there are some exceptions) boils down to that it constitutes a more powerful model than another.
Graham and myself (with some feedback from Rob) have put down a lot of effect in "tuning" the prefer-overs. But, as this thread shows, it is not perfect, and probably will never be. I personally think that RM should have a possibility for the user to "Highlander-ize" ("there can only be one...") the multiple decodes.
Also DecodeIR contains an elaborate system to prefer one decode over another. The login for this is instead hard coded in the C++-code- To change, the C++-code has to be changed and the library compiled anew.
Back to Andy's problem. Without the --all option, instead the decodes XMP-1 and XMPff-1 are returned, and this is exactly the original problem. What is needed is an element
<irp:parameter name="prefer-over">XMP-1</irp:parameter>
within the element <irp:protocol name="XMPff-1">. Instead of editing this file, RM also contains a "patch file" for the protocols.
Here is such a file. Just replace the present rmProtocols.xml with this version, and the decode will be unique. This should solve Andy's problem.