Messages from Lirc have to be longer than 21 chars, why?
Commit Message
On 06.03.2011 16:56, Steffen Barszus wrote:
> On Sun, 06 Mar 2011 17:33:39 +0200
> Ville Skyttä <ville.skytta@iki.fi> wrote:
>
>> On 03/06/2011 04:49 PM, Klaus Schmidinger wrote:
>>
>>> I guess what we need first is a specification of the strings
>>> LIRC provides. Then we can adapt the VDR code accordingly.
>>> I quickly searched the web, but couldn't find that information.
>>>
>>> Anybody?
>>
>> Maybe it has been discussed before, but I wonder why VDR has a LIRC
>> implementation of its own instead of using liblirc_client?
>>
>> http://www.lirc.org/html/technical.html#library
>
> You need a lircrc file for that to use, i think that is just adding
> another layer. Instead of learning the keys, you would need
> to create what is in remote.conf in the .lircrc and have fixed keywords
> in VDR. At least this is my understanding, correct me if i'm wrong.
>
> The format is described there as well.
>
> XBMC seems for instance just to read a line
>
> while (fgets(m_buf, sizeof(m_buf), m_file) != NULL)
> ...
> char scanCode[128];
> char buttonName[128];
> char repeatStr[4];
> char deviceName[128];
> sscanf(m_buf, "%s %s %s %s", &scanCode[0], &repeatStr[0],
> &buttonName[0], &deviceName[0]);
>
> https://github.com/xbmc/xbmc/blob/master/xbmc/input/linux/LIRC.cpp
>
> which seems to work well ...
I've changed the code in VDR's lirc.c this way now:
Klaus
@@ -86,7 +86,8 @@
}
}
- if (ready && ret > 21) {
+ if (ready && ret > 0) {
+ buf[ret - 1] = 0;
int count;
char KeyName[LIRC_KEY_BUF];
if (sscanf(buf, "%*x %x %29s", &count, KeyName) != 2) { // '29' in '%29s' is LIRC_KEY_BUF-1!