2007-02-21 14:50:36

by Ortwin Glück

[permalink] [raw]
Subject: [Bluez-devel] boot vs. report protocol

Hi,

In net/bluetooth/core.c there is:

if (session->input) {
hidp_send_ctrl_message(session,
HIDP_TRANS_SET_PROTOCOL | HIDP_PROTO_BOOT, NULL, 0);
session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);

session->leds = 0xff;
hidp_input_event(session->input, EV_LED, 0, 0);
}


which effectively sets the boot protocol for all input devices. To
support some scroll wheel mice they need to be put into report mode, though:

if (session->input) {
hidp_send_ctrl_message(session,
HIDP_TRANS_SET_PROTOCOL | HIDP_PROTO_REPORT, NULL, 0);

session->leds = 0xff;
hidp_input_event(session->input, EV_LED, 0, 0);
}

I assume that's safe. Solaris for instance, initializes all devices in
report mode by default. It never even tries boot protocol.

Maybe it would make sense to have a userspace interface to switch the
mode from within hidd.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel


2007-02-21 15:08:05

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [Bluez-devel] boot vs. report protocol

Hi Ortwin,

> In net/bluetooth/core.c there is:
>
> if (session->input) {
> hidp_send_ctrl_message(session,
> HIDP_TRANS_SET_PROTOCOL | HIDP_PROTO_BOOT, NULL, 0);
> session->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);
>
> session->leds = 0xff;
> hidp_input_event(session->input, EV_LED, 0, 0);
> }
>
>
> which effectively sets the boot protocol for all input devices. To
> support some scroll wheel mice they need to be put into report mode, though:
>
> if (session->input) {
> hidp_send_ctrl_message(session,
> HIDP_TRANS_SET_PROTOCOL | HIDP_PROTO_REPORT, NULL, 0);
>
> session->leds = 0xff;
> hidp_input_event(session->input, EV_LED, 0, 0);
> }
>
> I assume that's safe. Solaris for instance, initializes all devices in
> report mode by default. It never even tries boot protocol.

you assumption is wrong. The flags variable doesn't change anything. You
might wanna try 2.6.20-mh1 which is the first one that includes the
official report mode support.

Regards

Marcel



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bluez-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bluez-devel