blob: 36139d6c6900ea3d4ec4e739c3aa3e94163aa80f [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;
import com.android.server.usb.descriptors.report.ReportCanvas;
import com.android.server.usb.descriptors.report.UsbStrings;
/**
* @hide
*/
public abstract class UsbACTerminal extends UsbACInterface {
private static final String TAG = "UsbACTerminal";
// Note that these fields are the same for both the
// audio class-specific Output Terminal Interface.(audio10.pdf section 4.3.2.2)
// and audio class-specific Input Terminal interface.(audio10.pdf section 4.3.2.1)
// so we may as well unify the parsing here.
protected byte mTerminalID; // 3:1 ID of this Output Terminal. (0x02)
protected int mTerminalType; // 4:2 USB Streaming. (0x0101)
protected byte mAssocTerminal; // 6:1 Unused (0x00)
public UsbACTerminal(int length, byte type, byte subtype, int subclass) {
super(length, type, subtype, subclass);
}
public byte getTerminalID() {
return mTerminalID;
}
public int getTerminalType() {
return mTerminalType;
}
public byte getAssocTerminal() {
return mAssocTerminal;
}
@Override
public int parseRawDescriptors(ByteStream stream) {
mTerminalID = stream.getByte();
mTerminalType = stream.unpackUsbShort();
mAssocTerminal = stream.getByte();
return mLength;
}
@Override
public void report(ReportCanvas canvas) {
super.report(canvas);
canvas.openList();
int terminalType = getTerminalType();
canvas.writeListItem("Type: " + ReportCanvas.getHexString(terminalType) + ": "
+ UsbStrings.getTerminalName(terminalType));
canvas.writeListItem("ID: " + ReportCanvas.getHexString(getTerminalID()));
canvas.closeList();
}
}