Dave, thanx for all the hard work. Much appreciated!
3FG wrote:So I've uploaded yet another version of DecodeIR, which seems to work for all device numbers, and all even subdevices, and I believe actually for all subdevices.
I am sorry to say, but I still get 3432 erroneous decodes, A number of signals (first is 2.5. 42) decodes to Nokia12, and nothing more. The good news is that this is the only form of error; previously there were no decodes at all. DecodeIR probably decides that since Nokia12 0 0 fits, it cannot be anything else, and stops trying.
Perhaps people are wondering why I haven't tested Humax more completely. The only real signals we have all work fine. Testing with IrpMaster or IrMaster basically works quite poorly on my computer.
Using an intermediate layer like Java JNI is of course not quite ideal for testing a C++ library and just that. A while ago, I published a main routine that can be used for e.g. testing the library, even surpassing the dynamical loading.
Almost all signals that have a even subdevice or function number don't decode. Yet the Pronto Hex is fine, and decodes correctly if pasted into IRScope. This isn't the only IR protocol where something like this happens-- for Bose, OBCs greater than 127 don't decode in IrMaster but do in IRScope.
I think Bose is a completely different issue. We discussed this matter in a PM a few weeks ago: First of all, RMIR behaves identical to IrMaster, so it is rather something with JNI as with IrMaster. Secondly, the decoding of Bose for F%128 == 1 in DecodeIR is extremely non-robust, just changing the first "0013" in the CCF to 0012 and it decodes. Or changing the IRP to {...}<1,-1|0.99,-3>, and, again it decodes. This sensitivity is IMHO a DecodeIR-issue, not an IrMaster or RMIR issue.
The oddity is that for Humax 4 Phase, if I attach the C++ debugger to the IrMaster process, then it decodes the even subs and OBCs. This is true even if no breakpoints are set or if IrMaster is using the release version of the dll. I can check the durations passed to the dll using the debugger, and these agree between IRScope and IrMaster. But on the other hand, with the debugger running, everything decodes fine, so it is not surprising that the durations are OK.
I strongly suspect that this is the bug described earlier, that makes it necessary to call (Java-) decode() also after it has returned false. That bug faced so that the decodes were failing for every second call, which can easliy be confused with "even argument".
For your convenience, I have uploaded my
developement version of IrMaster+IrpMaster as "prerelease". Note the debugoption for DecodeIR, enabled by setting the debug variable to 2048. Options -> DEbug -> 2048: DecodeIR from GUI.
Another thing to try, using 2.44v* and the old IrpMaster 0.2.1 / IrMaster 0.3.0 is to press the decode button TWICE.
Edit (2012-11-25): Prerelease version deleted, since the final version has been released.