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.tree; 17fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 18fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanimport com.android.server.usb.descriptors.UsbDeviceDescriptor; 19fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanimport com.android.server.usb.descriptors.report.ReportCanvas; 20fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 21fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanimport java.util.ArrayList; 22fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 23fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean/** 24fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * @hide 25fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * A class to contain THE device descriptor at the root of the tree. 26fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 27fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLeanpublic final class UsbDescriptorsDeviceNode extends UsbDescriptorsTreeNode { 28fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private static final String TAG = "UsbDescriptorsDeviceNode"; 29fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 30fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private final UsbDeviceDescriptor mDeviceDescriptor; 31fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 32fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean private final ArrayList<UsbDescriptorsConfigNode> mConfigNodes = new ArrayList<>(); 33fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 34fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean /** 35fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * Constructor. 36fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * @param deviceDescriptor The Device Descriptor object wrapped by this tree node. 37fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 38fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public UsbDescriptorsDeviceNode(UsbDeviceDescriptor deviceDescriptor) { 39fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean mDeviceDescriptor = deviceDescriptor; 40fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 41fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 42fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean /** 43fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean * Adds a Configuration node to the assocated device node. 44fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean */ 45fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public void addConfigDescriptorNode(UsbDescriptorsConfigNode configNode) { 46fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean mConfigNodes.add(configNode); 47fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 48fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean 49fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean @Override 50fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean public void report(ReportCanvas canvas) { 51fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean mDeviceDescriptor.report(canvas); 52fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean for (UsbDescriptorsConfigNode node : mConfigNodes) { 53fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean node.report(canvas); 54fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 55fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean } 56fd7cb85feff517f3cc94384102933aa4485e1fc5Paul McLean} 57