1 /* 2 * Copyright (C) 2016 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 17 package com.android.car.vehiclehal.test; 18 19 import android.annotation.CheckResult; 20 import android.hardware.automotive.vehicle.V2_0.VehicleAreaConfig; 21 import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig; 22 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyAccess; 23 import android.hardware.automotive.vehicle.V2_0.VehiclePropertyChangeMode; 24 25 import java.util.Collection; 26 27 /** 28 * A builder class for {@link android.hardware.automotive.vehicle.V2_0.VehiclePropConfig} 29 */ 30 public class VehiclePropConfigBuilder { 31 32 private final VehiclePropConfig mConfig; 33 34 @CheckResult newBuilder(int propId)35 public static VehiclePropConfigBuilder newBuilder(int propId) { 36 return new VehiclePropConfigBuilder(propId); 37 } 38 VehiclePropConfigBuilder(int propId)39 private VehiclePropConfigBuilder(int propId) { 40 mConfig = new VehiclePropConfig(); 41 mConfig.prop = propId; 42 mConfig.access = VehiclePropertyAccess.READ_WRITE; 43 mConfig.changeMode = VehiclePropertyChangeMode.ON_CHANGE; 44 } 45 clone(VehiclePropConfig propConfig)46 private VehiclePropConfig clone(VehiclePropConfig propConfig) { 47 VehiclePropConfig newConfig = new VehiclePropConfig(); 48 49 newConfig.prop = propConfig.prop; 50 newConfig.access = propConfig.access; 51 newConfig.changeMode = propConfig.changeMode; 52 newConfig.supportedAreas = propConfig.supportedAreas; 53 newConfig.configFlags = propConfig.configFlags; 54 newConfig.configString = propConfig.configString; 55 newConfig.minSampleRate = propConfig.minSampleRate; 56 newConfig.maxSampleRate = propConfig.maxSampleRate; 57 newConfig.configArray.addAll(propConfig.configArray); 58 for (VehicleAreaConfig area : propConfig.areaConfigs) { 59 VehicleAreaConfig newArea = new VehicleAreaConfig(); 60 newArea.areaId = area.areaId; 61 newArea.minInt32Value = area.minInt32Value; 62 newArea.maxInt32Value = area.maxInt32Value; 63 newArea.minInt64Value = area.minInt64Value; 64 newArea.maxInt64Value = area.maxInt64Value; 65 newArea.minFloatValue = area.minFloatValue; 66 newArea.maxFloatValue = area.maxFloatValue; 67 newConfig.areaConfigs.add(newArea); 68 } 69 70 return newConfig; 71 } 72 73 @CheckResult setAccess(int access)74 public VehiclePropConfigBuilder setAccess(int access) { 75 mConfig.access = access; 76 return this; 77 } 78 79 @CheckResult setChangeMode(int changeMode)80 public VehiclePropConfigBuilder setChangeMode(int changeMode) { 81 mConfig.changeMode = changeMode; 82 return this; 83 } 84 85 @CheckResult setSupportedAreas(int supportedAreas)86 public VehiclePropConfigBuilder setSupportedAreas(int supportedAreas) { 87 mConfig.supportedAreas = supportedAreas; 88 return this; 89 } 90 91 @CheckResult setConfigFlags(int configFlags)92 public VehiclePropConfigBuilder setConfigFlags(int configFlags) { 93 mConfig.configFlags = configFlags; 94 return this; 95 } 96 97 @CheckResult setConfigString(String configString)98 public VehiclePropConfigBuilder setConfigString(String configString) { 99 mConfig.configString = configString; 100 return this; 101 } 102 103 104 @CheckResult setConfigArray(Collection<Integer> configArray)105 public VehiclePropConfigBuilder setConfigArray(Collection<Integer> configArray) { 106 mConfig.configArray.clear(); 107 mConfig.configArray.addAll(configArray); 108 return this; 109 } 110 111 @CheckResult addAreaConfig(int areaId, int minValue, int maxValue)112 public VehiclePropConfigBuilder addAreaConfig(int areaId, int minValue, int maxValue) { 113 VehicleAreaConfig area = new VehicleAreaConfig(); 114 area.areaId = areaId; 115 area.minInt32Value = minValue; 116 area.maxInt32Value = maxValue; 117 mConfig.areaConfigs.add(area); 118 return this; 119 } 120 121 @CheckResult addAreaConfig(int areaId, float minValue, float maxValue)122 public VehiclePropConfigBuilder addAreaConfig(int areaId, float minValue, float maxValue) { 123 VehicleAreaConfig area = new VehicleAreaConfig(); 124 area.areaId = areaId; 125 area.minFloatValue = minValue; 126 area.maxFloatValue = maxValue; 127 mConfig.areaConfigs.add(area); 128 return this; 129 } 130 build()131 public VehiclePropConfig build() { 132 return clone(mConfig); 133 } 134 } 135