mathdon wrote:Certain remotes, the URC-7780/81 being examples, use a Type 2 macro coding in which the high nibble is 3, not 8.
I (unintentionally) ignored the 'Type 2' macros in that comment. I actually knew about them from inspection of the 'IR.exe' source code, but have been focusing on 'Type 1' macros, which is what all of my remotes seem to use, I believe. Sorry for introducing the inaccuracy/confusion.
mathdon wrote:Bill, how were you looking at the value of the low nibble of that 2nd byte?
Well, initially, I was mostly using RMIR with occasional checks with 'IR.exe'. When I started seeing problems with unexpected data alterations in RMIR, I started using 'IR.exe' more often as sort of a "sanity check". But in my most recent testing, I'm now relying on a utility of my own that I
know is not "fooling" me in any way -- it just dumps the raw flash memory, using the library code to read a flash page. In fact, use of my own utility is how I discovered that 'IR.exe' was re-ordering the macro 'type' bytes (byte #2) without actually re-ordering the other macro data, as described earlier in the thread. It's with that utility (confirmed with both 'IR.exe' and RMIR) that I've been seeing these low nybble values with the LSB set (e.g. 0x81, 0xA1, etc). FWIW, I've seen such values for a while now, even before I started digging into how macro data is actually formatted in flash memory.
mathdon wrote:For remotes with AdvCodeBindFormat=LONG, such as the RS15-135, IR.exe sets it always to $F.
At first I thought that something funny was going on, because I'm not seeing that here. But then I read your edit and things are clearer.
mathdon wrote:$AF say is the 2nd macro of a multimacro but $AC is internal special protocol 2 for device with code $C
OK, but how can the flash memory be unambiguously interpreted then, if the high nybble of the 2nd byte of a sequence in the 'advanced codes' section can be the same value and mean 2 different things entirely. I'm clearly missing something. It may have to do with my absolute ignorance of special protocols. What does byte #1 (the 'bound key' specification in a macro) mean to a special protocol sequence? Wait, I think I answered my own question below....
mathdon wrote:Edit: Oops, that sounds self-contradictory. The low nibble will be set to $F if IR.exe has parsed it as a macro, which it will do if there are no internal special protocols defined in the RDF. If there are such SPs then it will parse the flash as an internal SP and so write it accordingly, preserving the low nibble.
OK, that makes what you wrote pre-edit make a lot more sense in my case, because I'm definitely
not seeing 0x8F (or any byte with the low nybble set to 0xF) in that 2nd byte of any macros.
EDIT: Recent testing with my RCA RCRP05B remote shows that this is the only one of 3 remote types that I own which actually sets the low nybble (the device code of the device associated with the macro) to 0xF. My RS 15-135 inexplicably sets it to the device code, even though the macro is Device-Independent, and the URC-10820/URC-8820 set it to 0x0 (i.e. the byte is 0x80) always.
But I'm confused. If I believe the Grovestine document mentioned earlier, then Special Protocols are implemented as
keymoves. Doesn't that take them completely out of the discussion about
macros? That is, (I think) I can already detect a (Type 1) macro unambiguously from a keymove (by masking byte #2 with 0x80 and expecting the bit to be set for a macro), so if I'm dealing with macros, how can a Special Protocol enter into the picture? Sorry if I'm being obtuse, here -- I just don't understand.
gfb107 wrote:RMIR doesn't fully support FAVkey, but is coded to recognize $30 as FAVKey.
This could be my ignorance rearing its ugly head again, but I thought the "Fav" key was the same as a multi-macro. I really need to read and test all of this some more to be sure, I guess. I
really wish all this stuff was better documented (i.e. not just in various snippets from the forum). The Grovestine document seems like a great start, if only it were updated for modern times.
Bill