From: Leonid F. <lf...@il...> - 2003-05-14 07:59:49
|
Loren M Lang wrote: >I downloaded the latest cvs of lirc to see if I >could get my creative infra remote working. After >I set up everything, I was disappointed to just >see it seg fault after the first client connected. >After running it through a debugger, I narrowed it >down to the function is_my_device(). I noticed >that after the call to ioctl() that fd had a >garbled value in it so I took a look at Buff. >Later in the function I saw this: > > if ( strncmp(Buff+8,"CREATIVE",8) > 0 ) { > >This imply's that Buff must be at least 16 bytes >long, but Buff is declared with: > > unsigned char Buff[SCSI_SEN_CMD_LEN]; > >A grep for SCSI_SEN_CMD_LEN revealed that it only >equals 6! Two lines used to setup the structure >for the ioctl() are: > > io_hdr.dxfer_len = MAX_SCSI_REPLY_LEN; > io_hdr.dxferp = Buff; > >This lead me to believe that Buff should be >declared as: > > unsigned char Buff[MAX_SCSI_REPLY_LEN]; > Yes, you right ! It must be copy-paste mistake. Patch is attached > >I did this in both is_my_device() and >test_device_command(), though only is_my_device() >appeared to be having any problems. >Whether or not that's correct, it's at least an >improvement since MAX_SCSI_REPLY_LEN is 96, the >stack frame isn't being overwritten and causing >lircd to seg fault when is_my_device() returns. > >Now my problem is that the driver only seems to >report every 20 presses or so. When I hold >down a key that repeats like 1, my cdrom light >flashes like crazy, but I only get a responce at >about 1.5 second intervals. Non-repeat keys >take even longer to test. Running this through >the debugger, test_device_command() was returning >0 constantly like it wasn't seeing them and only >occasionally returning the code. I never saw it >return any errors. > Device is polled every 40ms. This is just any "small enough value", that is used in windoze version of driver. I think that the problem is that hardware doesn't lock the code - polling command must come in the same moment that code is received. Windows program I have suffering from same thing > >My creative extigy remote also seems to work with >the cdrom, the light flashes when I press a button >and test_device_command() seems to consistently >return the same code for a specific button, >though it has the same problems with not always >showing up like the original remote has so the >delay must be caused by something else. I tried >using irrecord to create a config file, but I >can't seem to get it past the gap test, I'm >assuming the problem is related to the missed keys. > Actually I didn't patch irrecord since I supposed that cdrom will not read anything other that it's original remote (I haven't another remote anyway to test it). However I'm receiving reports that this is not true, so may be I'll patch irrecord too. > >This will be my third remote for my computer if I >can get this working a little better, it would be >nice if I could use lircd to open all three at once, >anyone have any ideas? > > > -- Rise and conquer, let the infidels burn |