Skip to contentSkip to conversation

boot vs. report protocol

Bluez-devel Ortwin Glück 2 participants 2 messages Feb 21, 2007 Bluetooth drivers

lore
Share & tools
lore
#0 lore raw

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

maintainer
#1 lore raw

Hi Ortwin,

Quoted 23 lines

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);
	}
Quoted 2 lines

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