blob: 856e1fc90e3a2972668f22c188a95969dab23f26 [file] [log] [blame]
Chao Yanf2c109c2018-05-11 12:16:14 -07001/*
2 * Copyright (C) 2018 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 */
16package com.android.car.vehiclehal.test;
17
18import static org.junit.Assert.assertEquals;
19
20import android.hardware.automotive.vehicle.V2_0.IVehicle;
21import android.hardware.automotive.vehicle.V2_0.StatusCode;
22import android.hardware.automotive.vehicle.V2_0.VehiclePropValue;
23import android.os.RemoteException;
24
25import com.android.car.vehiclehal.VehiclePropValueBuilder;
26
27import java.time.Duration;
28
29class LinearVhalEventGenerator implements VhalEventGenerator {
30
31 private final IVehicle mVehicle;
32
33 private int mProp;
34 private Duration mInterval;
35 private float mInitialValue;
36 private float mDispersion;
37 private float mIncrement;
38
39 LinearVhalEventGenerator(IVehicle vehicle) {
40 mVehicle = vehicle;
41 reset();
42 }
43
44 LinearVhalEventGenerator reset() {
45 mProp = 0;
46 mInterval = Duration.ofSeconds(1);
47 mInitialValue = 1000;
48 mDispersion = 0;
49 mInitialValue = 0;
50 return this;
51 }
52
53 LinearVhalEventGenerator setIntervalMs(long intervalMs) {
54 mInterval = Duration.ofMillis(intervalMs);
55 return this;
56 }
57
58 LinearVhalEventGenerator setInitialValue(float initialValue) {
59 mInitialValue = initialValue;
60 return this;
61 }
62
63 LinearVhalEventGenerator setDispersion(float dispersion) {
64 mDispersion = dispersion;
65 return this;
66 }
67
68 LinearVhalEventGenerator setIncrement(float increment) {
69 mIncrement = increment;
70 return this;
71 }
72
73 LinearVhalEventGenerator setProp(int prop) {
74 mProp = prop;
75 return this;
76 }
77
78 @Override
79 public void start() throws RemoteException {
80 VehiclePropValue request =
81 VehiclePropValueBuilder.newBuilder(GENERATE_FAKE_DATA_CONTROLLING_PROPERTY)
82 .addIntValue(CMD_START_LINEAR, mProp)
83 .setInt64Value(mInterval.toNanos())
84 .addFloatValue(mInitialValue, mDispersion, mIncrement)
85 .build();
86 assertEquals(StatusCode.OK, mVehicle.set(request));
87 }
88
89 @Override
90 public void stop() throws RemoteException {
91 VehiclePropValue request =
92 VehiclePropValueBuilder.newBuilder(GENERATE_FAKE_DATA_CONTROLLING_PROPERTY)
93 .addIntValue(CMD_STOP_LINEAR, mProp)
94 .build();
95 assertEquals(StatusCode.OK, mVehicle.set(request));
96 }
97}