blob: 9effbd046dcd5fc3fff9ce58e03ac9243caf0933 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.car.vehiclehal;
import android.annotation.CheckResult;
import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
import android.os.SystemClock;
/** A builder class for {@link android.hardware.automotive.vehicle.V2_0.VehiclePropValue} */
public class VehiclePropValueBuilder {
private final VehiclePropValue mPropValue;
public static VehiclePropValueBuilder newBuilder(int propId) {
return new VehiclePropValueBuilder(propId);
}
public static VehiclePropValueBuilder newBuilder(VehiclePropValue propValue) {
return new VehiclePropValueBuilder(propValue);
}
private VehiclePropValueBuilder(int propId) {
mPropValue = new VehiclePropValue();
mPropValue.prop = propId;
}
private VehiclePropValueBuilder(VehiclePropValue propValue) {
mPropValue = clone(propValue);
}
private VehiclePropValue clone(VehiclePropValue propValue) {
VehiclePropValue newValue = new VehiclePropValue();
newValue.prop = propValue.prop;
newValue.areaId = propValue.areaId;
newValue.timestamp = propValue.timestamp;
newValue.value.stringValue = propValue.value.stringValue;
newValue.value.int32Values.addAll(propValue.value.int32Values);
newValue.value.floatValues.addAll(propValue.value.floatValues);
newValue.value.int64Values.addAll(propValue.value.int64Values);
newValue.value.bytes.addAll(propValue.value.bytes);
return newValue;
}
@CheckResult
public VehiclePropValueBuilder setAreaId(int areaId) {
mPropValue.areaId = areaId;
return this;
}
@CheckResult
public VehiclePropValueBuilder setTimestamp(long timestamp) {
mPropValue.timestamp = timestamp;
return this;
}
@CheckResult
public VehiclePropValueBuilder setTimestamp() {
mPropValue.timestamp = SystemClock.elapsedRealtimeNanos();
return this;
}
@CheckResult
public VehiclePropValueBuilder addIntValue(int... values) {
for (int val : values) {
mPropValue.value.int32Values.add(val);
}
return this;
}
@CheckResult
public VehiclePropValueBuilder addFloatValue(float... values) {
for (float val : values) {
mPropValue.value.floatValues.add(val);
}
return this;
}
@CheckResult
public VehiclePropValueBuilder addByteValue(byte... values) {
for (byte val : values) {
mPropValue.value.bytes.add(val);
}
return this;
}
@CheckResult
public VehiclePropValueBuilder setInt64Value(long... values) {
for (long val : values) {
mPropValue.value.int64Values.add(val);
}
return this;
}
@CheckResult
public VehiclePropValueBuilder setBooleanValue(boolean value) {
mPropValue.value.int32Values.clear();
mPropValue.value.int32Values.add(value ? 1 : 0);
return this;
}
@CheckResult
public VehiclePropValueBuilder setStringValue(String val) {
mPropValue.value.stringValue = val;
return this;
}
public VehiclePropValue build() {
return clone(mPropValue);
}
}