usb: device: limit interface bits in setup message to 8
In setup messages addressing classes, USB standard defines that wIndex
constains interface number encoded in bits 0..7. Bits 8..15
are reserved and normally set to 0. However, in Audio Class they contain
entity number. Hence the need to filter 8 bits for getting interface
number.
Signed-off-by: Bartosz Sokolski <bartosz.sokolski@nordicsemi.no>
diff --git a/subsys/usb/usb_device.c b/subsys/usb/usb_device.c
index 602947e..2688d53 100644
--- a/subsys/usb/usb_device.c
+++ b/subsys/usb/usb_device.c
@@ -1412,7 +1412,7 @@
if ((iface->class_handler) &&
(if_descr->bInterfaceNumber ==
- sys_le16_to_cpu(pSetup->wIndex))) {
+ (sys_le16_to_cpu(pSetup->wIndex) & 0xFF))) {
return iface->class_handler(pSetup, len, data);
}
}