xref: /haiku/src/add-ons/kernel/bus_managers/usb/Interface.cpp (revision 853e6be8ca7117d62f497d539aa044adc2fdf573)
18be9a75cSMichael Lotz /*
202ce23a1SMichael Lotz  * Copyright 2006, Haiku Inc. All rights reserved.
38be9a75cSMichael Lotz  * Distributed under the terms of the MIT License.
48be9a75cSMichael Lotz  *
58be9a75cSMichael Lotz  * Authors:
68be9a75cSMichael Lotz  *		Michael Lotz <mmlr@mlotz.ch>
78be9a75cSMichael Lotz  */
88be9a75cSMichael Lotz 
9*853e6be8SMichael Lotz #include "usb_private.h"
108be9a75cSMichael Lotz 
118be9a75cSMichael Lotz 
Interface(Object * parent,uint8 interfaceIndex)1290b9fb4fSMichael Lotz Interface::Interface(Object *parent, uint8 interfaceIndex)
1390b9fb4fSMichael Lotz 	:	Object(parent),
1490b9fb4fSMichael Lotz 		fInterfaceIndex(interfaceIndex)
158be9a75cSMichael Lotz {
16f14fe767SMichael Lotz 	TRACE("creating interface\n");
178be9a75cSMichael Lotz }
188be9a75cSMichael Lotz 
198be9a75cSMichael Lotz 
208be9a75cSMichael Lotz status_t
SetFeature(uint16 selector)218be9a75cSMichael Lotz Interface::SetFeature(uint16 selector)
228be9a75cSMichael Lotz {
23f14fe767SMichael Lotz 	TRACE("set feature %u\n", selector);
248fedfdfcSMichael Lotz 	return ((Device *)Parent())->DefaultPipe()->SendRequest(
258be9a75cSMichael Lotz 		USB_REQTYPE_STANDARD | USB_REQTYPE_INTERFACE_OUT,
268be9a75cSMichael Lotz 		USB_REQUEST_SET_FEATURE,
278be9a75cSMichael Lotz 		selector,
2890b9fb4fSMichael Lotz 		fInterfaceIndex,
298be9a75cSMichael Lotz 		0,
308be9a75cSMichael Lotz 		NULL,
318be9a75cSMichael Lotz 		0,
328be9a75cSMichael Lotz 		NULL);
338be9a75cSMichael Lotz }
348be9a75cSMichael Lotz 
358be9a75cSMichael Lotz 
368be9a75cSMichael Lotz status_t
ClearFeature(uint16 selector)378be9a75cSMichael Lotz Interface::ClearFeature(uint16 selector)
388be9a75cSMichael Lotz {
39f14fe767SMichael Lotz 	TRACE("clear feature %u\n", selector);
408fedfdfcSMichael Lotz 	return ((Device *)Parent())->DefaultPipe()->SendRequest(
418be9a75cSMichael Lotz 		USB_REQTYPE_STANDARD | USB_REQTYPE_INTERFACE_OUT,
428be9a75cSMichael Lotz 		USB_REQUEST_CLEAR_FEATURE,
438be9a75cSMichael Lotz 		selector,
4490b9fb4fSMichael Lotz 		fInterfaceIndex,
458be9a75cSMichael Lotz 		0,
468be9a75cSMichael Lotz 		NULL,
478be9a75cSMichael Lotz 		0,
488be9a75cSMichael Lotz 		NULL);
498be9a75cSMichael Lotz }
508be9a75cSMichael Lotz 
518be9a75cSMichael Lotz 
528be9a75cSMichael Lotz status_t
GetStatus(uint16 * status)538be9a75cSMichael Lotz Interface::GetStatus(uint16 *status)
548be9a75cSMichael Lotz {
55f14fe767SMichael Lotz 	TRACE("get status\n");
568fedfdfcSMichael Lotz 	return ((Device *)Parent())->DefaultPipe()->SendRequest(
578be9a75cSMichael Lotz 		USB_REQTYPE_STANDARD | USB_REQTYPE_INTERFACE_IN,
588be9a75cSMichael Lotz 		USB_REQUEST_GET_STATUS,
5990b9fb4fSMichael Lotz 		fInterfaceIndex,
608be9a75cSMichael Lotz 		0,
618be9a75cSMichael Lotz 		2,
628be9a75cSMichael Lotz 		(void *)status,
638be9a75cSMichael Lotz 		2,
648be9a75cSMichael Lotz 		NULL);
658be9a75cSMichael Lotz }
66