Page 1 of 2
URC 8910 and Long Key Press Special Protocol
Posted: Tue Jun 22, 2004 5:47 pm
by raalph
Can someone tell me where to find the Long/Double Key Press device and protocol upgrade for a URC 8910?
I downloaded 8910ex1_1.zip from Yahoo JP1 group, and it includes a file LongDoubleKeyPress.txt that says to cut/paste the device and protocol from the bottom of the file, but the URC 8910 is not listed.
I think what I'm really looking for is a LKP protocol for the 8910 that works without an extender.
Re: URC 8910 and Long Key Press Special Protocol
Posted: Wed Jun 23, 2004 6:13 am
by Nils_Ekberg
raalph wrote:Can someone tell me where to find the Long/Double Key Press device and protocol upgrade for a URC 8910?
I downloaded 8910ex1_1.zip from Yahoo JP1 group, and it includes a file LongDoubleKeyPress.txt that says to cut/paste the device and protocol from the bottom of the file, but the URC 8910 is not listed.
I think what I'm really looking for is a LKP protocol for the 8910 that works without an extender.
The L/DKP is automatically loaded with the 8910 extender. It is the MISC 1106 device upgrade. I don't think there is a standalone version in the files section but you can try this. Paste the "Upgrade code" all 3 lines into the device section and the "Upgrade protocol" from Upgrade thru End into the protocol section of IR. It should work.
Code: Select all
Upgrade code 0 = CC 52 (MISC 1006)
F9 00 01
End
Upgrade protocol 0 = 01 F9 (S3C8+)
00 00 01 00 00 F0 2D E4 2D 4A 56 4A 0F F6 07 91
56 03 07 38 3A 26 C3 03 90 2D E6 83 01 7B 11 F6
3E AD FB 18 76 87 20 6B F6 8B 15 F6 3E AD 7B 10
B0 87 E6 F1 FF 6F 90 87 7B F1 6B F9 38 03 B0 03
A4 03 C3 2B 0D 87 43 2D A6 95 9A 3B 05 82 95 C4
3A EE AF
End
Posted: Wed Jun 23, 2004 11:25 am
by e34m5
I just tried it in non extended. IR accepted it and I was able to create a KeyMove for it.
I don't know if it will actually work in the remote itself...but I imagine it should
Posted: Wed Jun 23, 2004 7:40 pm
by raalph
Nils, I appreciate the help. I tried it, but I couldn't get it to work.
To get things to the simplest form, I started with a new IR file (using CPT0CPT0 RDF), added device upgrade MISC 1106 and protocol $01F9 by cutting and pasting from your post, and then added the following keymove:
Bound Device: TV
Bound Key: L3
Device Type: MISC
Setup Code: 1106
Hex Cmd: $91 $15 $16
My goal was to have a short key press issue a "1" signal, and a long press issue a "2".
The LED lights up like it's transmitting something, but the TV doesn't respond.
I'd appreciate any other suggestions.
Posted: Thu Jun 24, 2004 6:00 am
by e34m5
In the commands all you have done is send a "1" and a "2", but you did not set the device first.
Remember that each side of an LKP is like a macro. First set the device then send the command.
Assuming the device is TV then the commands would be:
$12 $01 $15 $01 $16
Posted: Thu Jun 24, 2004 8:03 am
by raalph
Thanks, Paul.
I'll try this tonight
But I'm curious... I would have thought that since the TV device is already the active device when I press L3, I wouldn't have to explicity specify TV again. In a normal macro, the remote just sends the commands as if you pressed the key, so if TV is the active device, a "1" in a macro sends a 1 to the TV. (I just used 1 and 2 for simplicity so 1 or 2 would show up on the screen as if I was about to change channel.)
Does a LKP macro work differently?
Posted: Thu Jun 24, 2004 8:55 am
by johann83
An LKP macro should work the same as other macros, just as you describe. I'm not entirely sure that the LKP protocol will work without the extender. I can't find it now, but I seem to remember there being some reason that you needed an extender to use LKP. Is there some reason that you don't want to use the extender? It seems to me that it might just be easier to install the extender and go from there.
Regards,
Matt
Posted: Thu Jun 24, 2004 9:13 am
by jon_armstrong
I highly recommend the use of extenders, but I would suggest getting all the basics down first. Raalph, if you can't make it work without an extender, for the time being, you can have On with the power button and Off with shift-power.
FWIW, the way I use discrete power and input commands is in Macro's and I generally use phantom buttons. I leave the power buttons as toggles.
Posted: Thu Jun 24, 2004 9:24 am
by raalph
I guess the biggest reason is that going with an Extender seemed a little intimidating, and (for now) the only feature I'm missing is LKP.
Posted: Thu Jun 24, 2004 1:25 pm
by e34m5
raalph wrote:Thanks, Paul.
I'll try this tonight
But I'm curious... I would have thought that since the TV device is already the active device when I press L3, I wouldn't have to explicity specify TV again. In a normal macro, the remote just sends the commands as if you pressed the key, so if TV is the active device, a "1" in a macro sends a 1 to the TV. (I just used 1 and 2 for simplicity so 1 or 2 would show up on the screen as if I was about to change channel.)
Does a LKP macro work differently?
Even in a regular macro you first have to state the device in question. In a normal situation you press the device key and then the function key in question. So a macro has to do the same thing. Whether in an LKP or macro.
Posted: Thu Jun 24, 2004 7:35 pm
by raalph
Paul,
I tried $92 $01 $15 $01 $16 but I get the same result.
I did notice that when you press the L3 button, the LED remains lit until you release the button, or until the timer expires. If the duration nibble is 4, the LED remains lit for about half a second; if 9, it remains lit for about a second; F for about 2 secs. To me, that says the protocol is doing something, but it's not working right.
Posted: Thu Jun 24, 2004 10:29 pm
by raalph
I looked at the source code for protocol $01F9 in Extender 1. I'm purely guessing that the issue is in the code that I think gets executed to push either the SKP macro or LKP macro into a pending keys queue:
Code: Select all
L1F9_5: LD W3, R03 ;Length of SHORT/SINGLE press side
CLR R03
L1F9_3: CP RC3, R03 ;Selected side empty?
JRLE L1F9_4 ;Yes
LD W4, R2D[W3] ;Get a key code
CP R_Mac, AR_MacBuf ;Buffer full?
JRULE L1F9_4 ;Yes
PUSHUD @R_Mac, RC4 ;Insert KeyCode into pending keys
DJNZ W3, L1F9_3
L1F9_4: RET
My guess is that this queue all gets handled somewhere else in Extender 1, and an unextended remote doesn't handle it.
I looked at the code for a LDKP protocol for a 15-2116 that is advertised to work without an extender from
Yahoo. It doesn't look like it would be too hard to convert for an 8910. I actually tried this myself, without success I should add - but I obviously don't know what I'm doing. I substituted the addresses in the 2116 code with values from 8910 Extender1 (like StartT0 and ScanKeyPad), but I don't know what values are in the registers when this code gets executed, nor if the way a 2116 handles macro strings is anything like a 8910.
Is there documentation that explains how a protocol works or anything that would help me out with this endeavor (other than a labotomy)?
Posted: Fri Jun 25, 2004 6:35 am
by Nils_Ekberg
I see the problem. R_Mac is at a different location in the extender than it is in an unextended remote. Therefore, everything else is working but the key code is being placed in the wrong macro buffer and the remote is not receiving it. I will get a look at it later.
Posted: Fri Jun 25, 2004 7:00 am
by johnsfine
Nils_Ekberg wrote:I see the problem. R_Mac is at a different location in the extender than it is in an unextended remote. Therefore, everything else is working but the key code is being placed in the wrong macro buffer and the remote is not receiving it. I will get a look at it later.
I don't think it's that simple.
The whole mechanism of macro handling is different with/without the extender.
With the extender, the remote is always using the macro buffer whether it is executing a macro or not. So a special protocol can just adjust the contents of the macro buffer and doesn't need to initiate macro processing.
Without the extender, you need to start macro processing as well as puting the contents into the buffer.
With the extender, the macro contents always end at the end of the macro buffer and new contents are "pushed" before old contents, adjusting the pointer to the beginning of content.
Without the extender, macro contents are normally loaded at the beginning of the buffer. There is no mechanism for new contents to go before old contents (macro nesting is not supported) and the process of loading new content is responsible for adjusting BOTH the beggining of content and end of content pointers.
Posted: Fri Jun 25, 2004 9:17 am
by raalph
The way the 2116 non-extended version handles the macros seems completely different.
Code: Select all
;If short key press
UseM1: ; Short or single press
LD R7B, R04 ; Call Macro from Second byte
JP Macro
;if long key press
UseM2: ; Long or double press
LD R7B, R05 ; Call macro from Third byte
Macro:
POP RC0
POP RC1
POP RC2
POP RC3
POP RC4
LDW RCA, KmmLoad
PUSH RCB
PUSH RCA
PUSH RC4
PUSH RC3
PUSH RC2
JP @RC0
Something I just realized, it is expecting macros in the command string, rather than keystrokes as the extender version expects.
When I tested this I didn't assign a macro to the keys that are in the command string. I just used [control byte] $15 16, but no macro was assigned to 1 or 2.
Am I on the right track here? Should the code above work in a 8910?