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?
JP1.3 extenders pause values
Moderator: Moderators
-
unclemiltie
- Expert
- Posts: 1819
- Joined: Wed Jan 21, 2004 12:50 pm
- Location: Pittsburgh, PA
JP1.3 extenders pause values
this JP1 stuff is a sickness!
Re: JP1.3 extenders pause values
There's a section in the RDF Specification Version 4 document that says: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?
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...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.
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 ??
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).rdfCode: Select all
PauseParams=Pause,2/1,10Just 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
-
unclemiltie
- Expert
- Posts: 1819
- Joined: Wed Jan 21, 2004 12:50 pm
- Location: Pittsburgh, PA
Well, I see you already "fixed" it!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
I'm glad it turned out not to be too difficult.
-
unclemiltie
- Expert
- Posts: 1819
- Joined: Wed Jan 21, 2004 12:50 pm
- Location: Pittsburgh, PA