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  * An audio class-specific Midi Streaming Interface.
23  * see midi10.pdf section 6.1.2.1
24  */
25 public final class UsbMSMidiHeader extends UsbACInterface {
26     private static final String TAG = "UsbMSMidiHeader";
27 
28     private int mMidiStreamingClass;  // MSC Specification Release (BCD).
29 
UsbMSMidiHeader(int length, byte type, byte subtype, int subclass)30     public UsbMSMidiHeader(int length, byte type, byte subtype, int subclass) {
31         super(length, type, subtype, subclass);
32     }
33 
getMidiStreamingClass()34     public int getMidiStreamingClass() {
35         return mMidiStreamingClass;
36     }
37 
38     @Override
parseRawDescriptors(ByteStream stream)39     public int parseRawDescriptors(ByteStream stream) {
40         mMidiStreamingClass = stream.unpackUsbShort();
41         stream.advance(mLength - stream.getReadCount());
42         return mLength;
43     }
44 
45     @Override
report(ReportCanvas canvas)46     public void report(ReportCanvas canvas) {
47         super.report(canvas);
48 
49         canvas.writeHeader(3, "MS Midi Header: " + ReportCanvas.getHexString(getType())
50                 + " SubType: " + ReportCanvas.getHexString(getSubclass())
51                 + " Length: " + getLength()
52                 + " MidiStreamingClass :" + getMidiStreamingClass());
53     }
54 }
55