blob: 409e605c3c2f898fd0a3c722954b77203b0b046e [file] [log] [blame]
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.usb.descriptors;
/**
* @hide
* An audio class-specific Audio Control Endpoint.
* audio10.pdf section 4.4.2.1
*/
public class UsbACAudioControlEndpoint extends UsbACEndpoint {
private static final String TAG = "UsbACAudioControlEndpoint";
private byte mAddress; // 2:1 The address of the endpoint on the USB device.
// D7: Direction. 1 = IN endpoint
// D6..4: Reserved, reset to zero
// D3..0: The endpoint number.
private byte mAttribs; // 3:1 (see ATTRIBSMASK_* below
private int mMaxPacketSize; // 4:2 Maximum packet size this endpoint is capable of sending
// or receiving when this configuration is selected.
private byte mInterval; // 6:1
static final byte ADDRESSMASK_DIRECTION = (byte) 0x80;
static final byte ADDRESSMASK_ENDPOINT = 0x0F;
static final byte ATTRIBSMASK_SYNC = 0x0C;
static final byte ATTRIBMASK_TRANS = 0x03;
public UsbACAudioControlEndpoint(int length, byte type, int subclass) {
super(length, type, subclass);
}
public byte getAddress() {
return mAddress;
}
public byte getAttribs() {
return mAttribs;
}
public int getMaxPacketSize() {
return mMaxPacketSize;
}
public byte getInterval() {
return mInterval;
}
@Override
public int parseRawDescriptors(ByteStream stream) {
super.parseRawDescriptors(stream);
mAddress = stream.getByte();
mAttribs = stream.getByte();
mMaxPacketSize = stream.unpackUsbShort();
mInterval = stream.getByte();
return mLength;
}
}