Re: RC6 decoding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2011-09-23 at 20:43 -0300, Mauro Carvalho Chehab wrote:
> Em 19-09-2011 08:12, Lawrence Rust escreveu:
> > The current decoder for the RC6 IR protocol supports mode 0 (16 bit) and
> > mode 6A.  In mode 6A the decoder supports either 32-bit data (for
> > Microsoft's MCE RC) or 24 bit.
> > 
> > I would like to support a Sky/Sky+ standard RC which transmits RC6-6-20
> > i.e. 20 bit data.  The transmitted frame format is identical to the 24
> > bit form so I'm curious as to what remotes transmit 24 bit data or was
> > this an error and it should be 20?
> > 
> > RC6-6-20 is explained here:
> > http://www.guiott.com/wrc/RC6-6.html
> > 
> > If 24-bit mode is in use, is there a way to select between 20 and 24 bit
> > operation?
> 
> You'll need to figure out a way to detect between them. It is probably not
> hard to detect, and add support for both at the decider.
> Maybe you can find something useful here:
> 	http://www.sbprojects.com/knowledge/ir/rc6.php

Lawrence:

Some RC-6 explanations with more detail could be found here:
 
http://slycontrol.ru/scr/kb/rc6.htm (dead; not in the Wayback machine :( )
http://www.picbasic.nl/info_rc6_uk.htm

You might also find this thread of interest for some history:
http://www.spinics.net/lists/linux-input/msg07983.html

The take away is that the data length is, in theory, OEM dependent for
RC-6 Mode 6A, limited to a max of 24 bits (3 bytes) after a short
customer code and 128 bits (16 bytes) after a long customer code.

In that previous thread, I suggested it might be better to look for the
signal free time of 6 RC6_UNITs to declare the end of reception, instead
of a bit count.  Maybe that is a way to deal with the current problem.

Regards,
Andy

> > 
> > I made the following simple mod to ir-rc6-decoder.c and my Sky/Sky+ RCs
> > decode correctly (with a custom keytable):
> > 
> > --- a/drivers/media/rc/ir-rc6-decoder.c	2011-05-19 06:06:34.000000000 +0200
> > +++ b/drivers/media/rc/ir-rc6-decoder.c	2011-09-19 13:02:35.000000000 +0200
> > @@ -17,14 +17,14 @@
> >  /*
> >   * This decoder currently supports:
> >   * RC6-0-16	(standard toggle bit in header)
> > - * RC6-6A-24	(no toggle bit)
> > + * RC6-6A-20	(no toggle bit)
> >   * RC6-6A-32	(MCE version with toggle bit in body)
> >   */
> >  
> >  #define RC6_UNIT		444444	/* us */
> >  #define RC6_HEADER_NBITS	4	/* not including toggle bit */
> >  #define RC6_0_NBITS		16
> > -#define RC6_6A_SMALL_NBITS	24
> > +#define RC6_6A_SMALL_NBITS	20
> >  #define RC6_6A_LARGE_NBITS	32
> >  #define RC6_PREFIX_PULSE	(6 * RC6_UNIT)
> >  #define RC6_PREFIX_SPACE	(2 * RC6_UNIT)
> > @@ -231,7 +231,7 @@ again:
> >  				scancode = data->body & ~RC6_6A_MCE_TOGGLE_MASK;
> >  			} else {
> >  				toggle = 0;
> > -				scancode = data->body & 0xffffff;
> > +				scancode = data->body;
> >  			}
> >  
> >  			IR_dprintk(1, "RC6(6A) scancode 0x%08x (toggle: %u)\n",
> > 
> > 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux