Home | History | Annotate | Download | only in descriptors
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.server.usb.descriptors;
     17 
     18 // import com.android.server.usb.descriptors.report.ReportCanvas;
     19 
     20 /**
     21  * @hide
     22  * A USB Interface Association Descriptor.
     23  * found this one here: http://www.usb.org/developers/docs/whitepapers/iadclasscode_r10.pdf
     24  * also: https://msdn.microsoft.com/en-us/library/windows/hardware/ff540054(v=vs.85).aspx
     25  */
     26 public final class UsbInterfaceAssoc extends UsbDescriptor {
     27     private static final String TAG = "UsbInterfaceAssoc";
     28 
     29     private byte mFirstInterface;
     30     private byte mInterfaceCount;
     31     private byte mFunctionClass;
     32     private byte mFunctionSubClass;
     33     private byte mFunctionProtocol;
     34     private byte mFunction;
     35 
     36     public UsbInterfaceAssoc(int length, byte type) {
     37         super(length, type);
     38     }
     39 
     40     public byte getFirstInterface() {
     41         return mFirstInterface;
     42     }
     43 
     44     public byte getInterfaceCount() {
     45         return mInterfaceCount;
     46     }
     47 
     48     public byte getFunctionClass() {
     49         return mFunctionClass;
     50     }
     51 
     52     public byte getFunctionSubClass() {
     53         return mFunctionSubClass;
     54     }
     55 
     56     public byte getFunctionProtocol() {
     57         return mFunctionProtocol;
     58     }
     59 
     60     public byte getFunction() {
     61         return mFunction;
     62     }
     63 
     64     @Override
     65     public int parseRawDescriptors(ByteStream stream) {
     66         mFirstInterface = stream.getByte();
     67         mInterfaceCount = stream.getByte();
     68         mFunctionClass = stream.getByte();
     69         mFunctionSubClass = stream.getByte();
     70         mFunctionProtocol = stream.getByte();
     71         mFunction = stream.getByte();
     72 
     73         return mLength;
     74     }
     75 
     76     // TODO - Report fields
     77 //    @Override
     78 //    public void report(ReportCanvas canvas) {
     79 //        super.report(canvas);
     80 //
     81 //    }
     82 }
     83