On Sep 1, 2009, at 12:47 PM, Neil Sutton wrote:



On Tue, Sep 1, 2009 at 12:33 PM, Charles Lepple <[email protected]> wrote:

I would assume that if the argument to Convert.ToByte() is an integer less than 255, then the C equivalent would be that same integer. I think you would only use 0x35 if you were passing a string "5" to Convert.ToByte(). Someone who actually knows .NET can feel free to correct me, though.

I think you're right Charles, I went back to the working example from LVR and stepped through everything. If I send Hex 0x05 to the device using an Output report it works under windows.. so my data needs to be a single byte of 0x05.
Also if I echo back the result of Convert.ToByte(5) it is indeed 5..

Could you advise on how the output usage path is calculated from my lsusb -vv output ? (http://pastebin.com/m48287552) I am going to try and get things working using output reports instead of interrupt_write because I know this works under Windows, but even after reading the example text I don't know how to calculate the PATH_IN / PATH_OUT values.
I think if I can get those right then my problems will be solved.

Your original code pastebin expired, but I think you were close.

            Item(Global): Usage Page, data= [ 0xa0 0xff ] 65440
            Item(Local ): Usage, data= [ 0x01 ] 1
            Item(Main  ): Collection, data= [ 0x01 ] 1
            Item(Local ): Usage, data= [ 0x03 ] 3
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0x00 0xff ] 65280
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x01 ] 1
[...]
            Item(Main  ): Output, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x05 ] 5

The "usage page" part is the upper 16 bits of each entry in the "path". If there are no other Usage Pages listed, then that part (0xffa0) doesn't change.

The bold items above are what you need.

I think the path should be "0xffa00001, 0xffa00003, 0xffa00005". I forget if the HID parser drops the very first usage (since it is outside a collection).
_______________________________________________
libhid-discuss mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/libhid-discuss
http://libhid.alioth.debian.org/

Reply via email to