1fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean/* 2fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * Copyright (C) 2017 The Android Open Source Project 3fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * 4fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * Licensed under the Apache License, Version 2.0 (the "License"); 5fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * you may not use this file except in compliance with the License. 6fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * You may obtain a copy of the License at 7fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * 8fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * http://www.apache.org/licenses/LICENSE-2.0 9fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * 10fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * Unless required by applicable law or agreed to in writing, software 11fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * distributed under the License is distributed on an "AS IS" BASIS, 12fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * See the License for the specific language governing permissions and 14fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * limitations under the License. 15fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 16fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanpackage com.android.server.usb.descriptors; 17fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 18fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanimport com.android.server.usb.descriptors.report.ReportCanvas; 19fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 20fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean/** 21fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * @hide 22fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * An audio class-specific Format II interface. 23fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * see Frmts20.pdf section 2.3.2.6 Type II Format Type Descriptor 24fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 25fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanpublic final class Usb20ASFormatII extends UsbASFormat { 26fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private static final String TAG = "Usb20ASFormatII"; 27fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 28fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean // Frmts20.pdf Table 2-3: Type II Format Type Descriptor 29fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private int mMaxBitRate; // 4:2 Indicates the maximum number of bits per 30fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean // second this interface can handle in kbits/s. 31fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private int mSlotsPerFrame; // 6:2 Indicates the number of PCM audio slots 32fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean // contained in one encoded audio frame. 33fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 34fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean /** 35fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * TBD 36fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 37fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public Usb20ASFormatII(int length, byte type, byte subtype, byte formatType, byte subclass) { 38fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean super(length, type, subtype, formatType, subclass); 39fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 40fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 41fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean /** 42fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * TBD 43fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 44fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public int getmaxBitRate() { 45fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean return mMaxBitRate; 46fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 47fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 48fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean /** 49fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * TBD 50fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 51fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public int getSlotsPerFrame() { 52fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean return mSlotsPerFrame; 53fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 54fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 55fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean @Override 56fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public int parseRawDescriptors(ByteStream stream) { 57fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean mMaxBitRate = stream.unpackUsbShort(); 58fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean mSlotsPerFrame = stream.unpackUsbShort(); 59fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 60fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean return mLength; 61fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 62fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 63fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean @Override 64fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public void report(ReportCanvas canvas) { 65fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean super.report(canvas); 66fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 67fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean canvas.openList(); 68fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean canvas.writeListItem("Max Bit Rate: " + getmaxBitRate()); 69fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean canvas.writeListItem("slots Per Frame: " + getSlotsPerFrame()); 70fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean canvas.closeList(); 71fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 72fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean} 73