Page 1 of 1

JP1.3 extenders pause values

Posted: Wed Mar 02, 2011 9:42 pm
by unclemiltie
I've been working on timing the delay values for the pause protocol in the 3179 and 3147 extenders because of some of the new code and have been looking at how IR sets things up.

The extender codes in a value of 100ms for each $01 in hex passed to the pause protocol (the high byte, the low byte is ignored)

But what is interesting that when IR puts in a value of $64 (100, which should be 10 seconds) IR describes this as 6.5 seconds.

I don't know how IR determines these values. Does anyone know if this is a setting in the RDF or some thing that has to be fixed in IR?

Re: JP1.3 extenders pause values

Posted: Mon Mar 07, 2011 11:13 pm
by jimdunn
unclemiltie wrote:I don't know how IR determines these values. Does anyone know if this is a setting in the RDF or some thing that has to be fixed in IR?
There's a section in the RDF Specification Version 4 document that says:
PauseParams
Specifies how a pause duration is calculated and formatted for Pause special protocols defined in the [SpecialProtocols] section.
The PauseParams entry is in the form:
PauseParams=UserName, DataBytes, Multiplier
where: UserName is the name specified in the [SpecialProtocols] section. DataBytes specifies the format of the data as discussed below. Multiplier is the conversion factor from seconds to data value.
The possible entries for DataBytes are: 1 — one data byte 2/1 — two data bytes, only the first is used 2/2 — two data bytes, only the second is used 2/B — two data bytes, big-endian (high byte first) 2/L — two data bytes, little-endian (low byte first)
When DataBytes is set to 2/1 or 2/2 the byte not used by the protocol is set so that the second byte is always the (hex) EFC of the first byte, regardless of which of them is the actual data value.
Multiplier is expressed as a real number (including decimal point if needed). This value is a conversion factor, and will be multiplied by the number of seconds entered by the user, and rounded to the nearest integer value. This result then formatted per the DataBytes entry.
PauseParams entries are optional, but if present then all three parameters are required. There can be multiple PauseParams entries provided they have different values for UserName. If an entry with a UserName is not assigned in the [SpecialProtocols] section then the entry is ignored.
If a UserName assigned in the [SpecialProtocols] section does not have a corresponding PauseParams entry, the parameters used by the stand-alone Pause special protocol (as supported by RM and KM) will be assumed. This default is equivalent to:
PauseParams=(name),2/1,10.66 (S3C8 remotes only) or PauseParams=(name),2/1,16 (all other remotes, including S3C8+)

As an example, assuming both are properly defined in the [SpecialProtocols] section, the [General] section could contain the entries:
PauseParams=PauseA,2/1,10.66 PauseParams=PauseB,2/B,1000
The first entry applies to the stand-alone RM/KM Pause special protocol, while the second is for a Pause special protocol included in an extender. To be activated, all the required elements of a Pause protocol as defined in the [SpecialProtocols] section must be present in the remote. Once activated, the user may choose to use it. So, in this example, it would be possible that one or both Pause protocols are activated. Regardless of which one the user chooses, the matching PauseParams entry will determine how the timing values are calculated and formatted.
Please refer to the [SpecialProtocols] section of this document for further examples and a more detailed discussion of how to use the PauseParams entry.
So from that, I'd expect it to default to the RM pause parameters as given, if you haven't included a PauseParams entry in your rdf, I think...

But, for your test case, 6.5 second x default multiplier of 16 = 104 ($68) - maybe IR is rounding its conversion somewhere to get your result ?? :? (100/16=6.25 rounded up to 6.5 ?)
The description does say "rounded to the nearest integer value" in the process, so maybe I'm just doing the conversion math in the "wrong order" to match your result exactly.

edited to add:
It seems to work OK in my Extended Atlas 1055, using

Code: Select all

3A333A33 (Atlas 5 Day URC-1055_11055 JP1.3 3033  extender V2.10).rdf
That has:

Code: Select all

PauseParams=Pause,2/1,10
in the rdf - which gives a multiplier of 10, as seems needed here..., and a pause of 10 seconds does indeed give ($64) in IR as the first byte, with that line in the rdf.

Just to confirm the test - I just took that PauseParams= line out of my Atlas RDF, and it then behaves as though the multiplier is 16, as you describe:
without the entry, 6.25 seconds gives: $64 ; 6.50 seconds gives: $68 ; 10.0 seconds gives: $A0

Posted: Tue Mar 08, 2011 3:42 pm
by unclemiltie
Aha!

On further examination, the Atlas, Comcast, 15-100 and 15-13x do have the appropriate pauseParams in the RDF's.

The RCA RCRP05b and the Insignia (not released) don't.

V1.01 of the RCA and the Insignia release will fix this

Posted: Tue Mar 08, 2011 10:18 pm
by jimdunn
unclemiltie wrote:Aha!
On further examination, the Atlas, Comcast, 15-100 and 15-13x do have the appropriate pauseParams in the RDF's.
The RCA RCRP05b and the Insignia (not released) don't.
V1.01 of the RCA and the Insignia release will fix this
Well, I see you already "fixed" it! 8-)
I'm glad it turned out not to be too difficult.
 

Posted: Tue Mar 08, 2011 10:24 pm
by unclemiltie
What can I say, I aim to please....


This extender writing is becoming habit forming.