This is what I was missing...thanks Rob...it does what I thought it was doing so it should not be hard to replicate.The Robman wrote:for bi-phase, you need to enter a rounding time that is equal to one unit, so in this case you should enter 450Vyrolan wrote:But the Bi-Phase dropdown in IR doesn't seem to have any effect on it...
RMIR: Advanced Handling of Learned Signals
Moderator: Moderators
New jar at https://www.hifi-remote.com/forums/dload ... e_id=11268.The Robman wrote: Give it a whirl, though I'd be curious to see how an automated approach would deal with the double wide pair that's in the RC6 (Replay) signal, but if you think it would work, I'd certainly like to see it.
Here's Rewind signal you mentioned earlier...automatically analyzed including the double pair:

One difference is that I am assuming the final +450 is part of a ( +450, -450 ) pair, and so I'm taking the -450 from the lead-out...in your quick write-up, you just assumed it was the "on" of a lead-out... How do we know which is correct?
Note: I haven't integrated this into the Timing Summary yet, so they will still show raw timings there.
Last edited by Vyrolan on Thu Aug 30, 2012 10:00 am, edited 1 time in total.
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
Good point, I just counted the bits in my decode and it's 23 which is not a round number, so you're right that the last bit got combined with the leadout. As far as an automated solution goes, it's hard to say because I expect that we'll see both types, ie. some signals that just end with a leadout (like the ones above) and others that end with a leadout pair.Vyrolan wrote:One difference is that I am assuming the final +450 is part of a ( +450, -450 ) pair, and so I'm taking the -450 from the lead-out...in your quick write-up, you just assumed it was the "on" of a lead-out... How do we know which is correct?
Whatever you come up with, I think it would be a good idea to still give the user the ability to override it, just in case the automatic solution is wrong.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
I plan to give 4 options in the drop down: "Auto Detect" will apply the automated solution and "Off (Show Raw)" will turn it off entirely and just show raw timing. Then there will be "Force Odd" and "Force Even" to replicate the behavior of IR (I'm not sure if we'll actually need that or no).The Robman wrote:Whatever you come up with, I think it would be a good idea to still give the user the ability to override it, just in case the automatic solution is wrong.
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
Sounds good, and yes, I think we still need some manual controls just in case the auto-decode gets it wrong. I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.Vyrolan wrote:I plan to give 4 options in the drop down: "Auto Detect" will apply the automated solution and "Off (Show Raw)" will turn it off entirely and just show raw timing. Then there will be "Force Odd" and "Force Even" to replicate the behavior of IR (I'm not sure if we'll actually need that or no).
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.
Furthermore, it would be nice to have a line break after each leadout time. For example, looking at the UPC file, the TV/3 button displays as...
4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000 +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500
Extra: +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
So, removing the "Extra" break and adding a new "More" break between the two repeats, we would get this...
4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
More: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
Furthermore, it would be nice to have a line break after each leadout time. For example, looking at the UPC file, the TV/3 button displays as...
4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000 +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500
Extra: +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
So, removing the "Extra" break and adding a new "More" break between the two repeats, we would get this...
4 TV 3 3 38461 Once: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
More: +4500 -4500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -4500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -500 +500 -500 +500 -500 +500 -1500 +500 -500 +500 -1500 +500 -1500 +500 -1500 +500 -55000
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Can you give an example of what you mean? Looking through IR's code I think I may know what you're wanting to control, but some specific examples of what a signal should like with different values for the minimum would be helpful.The Robman wrote:I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.
I can do that...and many many thanks for giving examples to illustrate.The Robman wrote:When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.
Furthermore, it would be nice to have a line break after each leadout time.
I've consolidated all of my jars in the Diagnostics Area to this one. It contains all of my changes, and that now includes the formatting changes you requested for the Timing Summary. It breaks to a new "More:" row whenever it sees an Off time equal to the final Off time.Vyrolan wrote:I can do that...and many many thanks for giving examples to illustrate.The Robman wrote:When there is just a "sent once" string and an "extra" string, could we have them combined on the Timing Summary sheet as there's no reason for them to be broken apart and I have to manually combine them when I do a manual decode.
Furthermore, it would be nice to have a line break after each leadout time.
For the Once + Extra when there is no repeat, the decoding in RMIR already does that...it doesn't break them up between "sent when pressed" and "sent when release", so I'm glad you don't want them that way anyway. =)
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
Sorry, I don't have an example. I decode hundreds of signals for people and I don't remember which one caused this problem. Let me see if I can edit one of the bi-phase learns in the FromRob.ir file to re-create it.Vyrolan wrote:Can you give an example of what you mean? Looking through IR's code I think I may know what you're wanting to control, but some specific examples of what a signal should like with different values for the minimum would be helpful.The Robman wrote:I would also like to be able to control the minimum time that the decode routine recognizes as the leadout time because I have seen examples where it's smaller than the minimum time imlpemented in IR.exe.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Even just a trivial made-up example would probably be sufficient. I just want to make sure I'm properly understanding the effect of this configurable minimum.The Robman wrote: Sorry, I don't have an example. I decode hundreds of signals for people and I don't remember which one caused this problem. Let me see if I can edit one of the bi-phase learns in the FromRob.ir file to re-create it.
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
ok, this should demonstrate what I was getting at. The following is a modified version of the P&P/REW code from FromRob.ir where I have converted it from a repeating code, to a "sent once" code with 2 repeats present:
0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0F61 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261
when you decode this using 450/ODD you get the following:
+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -109350; +2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100;
Now reduce the leadout time from 0F61 to 0261 as follows:
0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261
this decodes as follows:
+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100; +2700 -450; -450 +450; -450 +450; -450 +450; -450 -450; +450 -450; -450 +450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 +450; -450 -450; +450 +450; -17100
As you can see from the highlighted times, the decoder didn't realize that the -17100 was a leadout time, so the +2700 that follows wasn't reated as a leadin time and therefore, the -450 that follows was included as part of the pair and the rest of the pairs are all thrown off by 1 and are therefore useless.
When I had this example before, I had to manually edit all of the leadout times to something bigger in order to force the correct decode of the 2nd part of the string.
0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0F61 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261
when you decode this using 450/ODD you get the following:
+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -109350; +2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100;
Now reduce the leadout time from 0F61 to 0261 as follows:
0000 0073 0034 0000 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261 0060 0020 0010 0010 0010 0010 0010 0020 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0020 0020 0010 0010 0010 0010 0010 0010 0020 0010 0010 0020 0020 0261
this decodes as follows:
+2700; -450 -450; +450 -450; +450 -450; +450 -450; -450 +450; -450 -450; +450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; -450 +450; -450 +450; -450 +450; -450 +450; +450 -450; +450 -450; -450 +450; +450 -17100; +2700 -450; -450 +450; -450 +450; -450 +450; -450 -450; +450 -450; -450 +450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 -450; +450 -450; +450 -450; +450 -450; +450 +450; -450 +450; -450 -450; +450 +450; -17100
As you can see from the highlighted times, the decoder didn't realize that the -17100 was a leadout time, so the +2700 that follows wasn't reated as a leadin time and therefore, the -450 that follows was included as part of the pair and the rest of the pairs are all thrown off by 1 and are therefore useless.
When I had this example before, I had to manually edit all of the leadout times to something bigger in order to force the correct decode of the 2nd part of the string.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
I've refactored some of my additions (eliminate duplicate code, cleanup oddities, remove unnecessary code, optimize a bit)...it's probably nothing you'd notice as a user (except maybe slightly faster).
I've also lowered the granularity for the biphase auto analysis. It detects the smallest rounding that allows the signal to be recognized as biphase, and that process now goes in smaller increments. In the P&P/REW signal in FromRob.ir that was previous discussed, it now recognizes that a rounding of 20 is sufficient, and so the biphase unit becomes 440 instead of the previous 450. I assume this is "better" since less rounding probably keeps it closer to the original signal and therefore less likely to confuse the device (esp for long signals).

Latest jar still found here.
I've also lowered the granularity for the biphase auto analysis. It detects the smallest rounding that allows the signal to be recognized as biphase, and that process now goes in smaller increments. In the P&P/REW signal in FromRob.ir that was previous discussed, it now recognizes that a rounding of 20 is sufficient, and so the biphase unit becomes 440 instead of the previous 450. I assume this is "better" since less rounding probably keeps it closer to the original signal and therefore less likely to confuse the device (esp for long signals).

Latest jar still found here.
-
The Robman
- Site Owner
- Posts: 22042
- Joined: Fri Aug 01, 2003 9:37 am
- Location: Chicago, IL
- Contact:
OK, I gave it a try and the bi-phase logic did not recognize that either of the edited signals that I posted earlier were bi-phase.
I couldn't find a way to edit the learned signal and upgrade the pronto hex using RMIR, so I updated the IR file instead and then opened it using RMIR.
The file below contains 3 copies of the signal from the P&P/REW button in the FromRob.ir file. The first is the vanilla signal from the original file with no changes. The second is where I have converted it to a "sent once" string with 2 repeats and the normal leadout time. The third is the same as the second, except that I've reduced the leadout time as described above so that it's small enough to fool the bi-phase logic in IR.exe
https://www.hifi-remote.com/forums/dload ... e_id=11283
I couldn't find a way to edit the learned signal and upgrade the pronto hex using RMIR, so I updated the IR file instead and then opened it using RMIR.
The file below contains 3 copies of the signal from the P&P/REW button in the FromRob.ir file. The first is the vanilla signal from the original file with no changes. The second is where I have converted it to a "sent once" string with 2 repeats and the normal leadout time. The third is the same as the second, except that I've reduced the leadout time as described above so that it's small enough to fool the bi-phase logic in IR.exe
https://www.hifi-remote.com/forums/dload ... e_id=11283
Last edited by The Robman on Thu Aug 30, 2012 5:01 pm, edited 1 time in total.
Rob
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
www.hifi-remote.com
Please don't PM me with remote questions, post them in the forums so all the experts can help!
Can the leadin be just a ( + ) like that...or does it have to be a ( + - )? When you have the first Off time, how do we know if it is part of the leadin or part of the first pair? My logic is to assume it is all leadin and try to decode...if I fail, I assume part of it must be part of the first pair, so I try to decode that...The Robman wrote:ok, this should demonstrate what I was getting at. The following is a modified version of the P&P/REW code from FromRob.ir where I have converted it from a repeating code, to a "sent once" code with 2 repeats present:
<snip />
when you decode this using 450/ODD you get the following:
+2700; -450 -450; ...; +450 -109350; +2700; -450 -450; ...; +450 -17100;
Now reduce the leadout time from 0F61 to 0261 as follows:
<snip />
this decodes as follows:
+2700; -450 -450; ...; +450 -17100; +2700 -450; -450 +450; ...; +450 +450; -17100
As you can see from the highlighted times, the decoder didn't realize that the -17100 was a leadout time, so the +2700 that follows wasn't reated as a leadin time and therefore, the -450 that follows was included as part of the pair and the rest of the pairs are all thrown off by 1 and are therefore useless.
Is there a way to know which way is right? Consider these examples:
Code: Select all
Raw Data = +500 -200 +100 -100 +100 -100 +100 -1000
Possible Decode #1:
Leadin = +500 -200
Leadout = +100 -1000
+500 -200; +100 -100; +100 -100; +100 -1000
Result = LI 11 LO
Possible Decode #2:
Leadin = +500 -100
Leadout = -1000
+500 -100; -100 +100; -100 +100; -100 +100; -1000
Result = LI 000 LO
Possible Decode #3:
Leadin = +500 -100
Leadout = -900
+500 -200; +100 -100; +100 -100; +100 -100; -900
Result = LI 111 LO
Code: Select all
Raw Data = +500 -200 +100 -100 +200 -100 +100 -1000
Possible Decode #1:
Leadin = +500 -200
Leadout =
+500 -200; +100 -100; +200; error decoding
Result = error
Possible Decode #2:
Leadin = +500 -100
Leadout = -1000
+500 -100; -100 +100; -100 +100; +100 -100; +100 -1000
Result = LI 001 LO
Possible Decode #3:
Leadin = +500 -100
Leadout = -900
+500 -100; -100 +100; -100 +100; +100 -100; +100 -100; -900
Result = LI 0011 LO