blob: 490779b7aca2dc144fe6b63f9d10ecaeceb8999b [file] [log] [blame]
keunyounga3b28d82015-08-25 13:05:15 -07001/*
2 * Copyright (C) 2015 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.hal;
17
Keun-young Parke54ac272016-02-16 19:02:18 -080018import android.car.CarInfoManager;
Keun-young Park67456352016-10-03 13:45:19 -070019import android.os.Bundle;
keunyounga3b28d82015-08-25 13:05:15 -070020import android.util.Log;
21
22import com.android.car.CarLog;
Keun-young Park67456352016-10-03 13:45:19 -070023import com.android.car.vehiclenetwork.VehicleNetwork;
keunyoungfe30ba02015-09-17 17:56:35 -070024import com.android.car.vehiclenetwork.VehicleNetworkConsts;
25import com.android.car.vehiclenetwork.VehicleNetworkProto.VehiclePropConfig;
26import com.android.car.vehiclenetwork.VehicleNetworkProto.VehiclePropValue;
keunyounga3b28d82015-08-25 13:05:15 -070027
28import java.io.PrintWriter;
29import java.util.HashMap;
30import java.util.LinkedList;
31import java.util.List;
32
33public class InfoHalService extends HalServiceBase {
34
35 private final VehicleHal mHal;
Keun-young Park67456352016-10-03 13:45:19 -070036 private Bundle mBasicInfo = new Bundle();
keunyounga3b28d82015-08-25 13:05:15 -070037
38 public InfoHalService(VehicleHal hal) {
39 mHal = hal;
40 }
41
42 @Override
43 public void init() {
44 //nothing to do
45 }
46
47 @Override
48 public synchronized void release() {
Keun-young Park67456352016-10-03 13:45:19 -070049 mBasicInfo = new Bundle();
keunyounga3b28d82015-08-25 13:05:15 -070050 }
51
52 @Override
keunyoungfe30ba02015-09-17 17:56:35 -070053 public synchronized List<VehiclePropConfig> takeSupportedProperties(
54 List<VehiclePropConfig> allProperties) {
Keun-young Park67456352016-10-03 13:45:19 -070055 VehicleNetwork vn = mHal.getVehicleNetwork();
keunyoungfe30ba02015-09-17 17:56:35 -070056 List<VehiclePropConfig> supported = new LinkedList<VehiclePropConfig>();
57 for (VehiclePropConfig p: allProperties) {
Keun-young Park67456352016-10-03 13:45:19 -070058 switch (p.getProp()) {
59 case VehicleNetworkConsts.VEHICLE_PROPERTY_INFO_MAKE:
60 mBasicInfo.putString(CarInfoManager.BASIC_INFO_KEY_MANUFACTURER,
61 vn.getStringProperty(p.getProp()));
62 break;
63 case VehicleNetworkConsts.VEHICLE_PROPERTY_INFO_MODEL:
64 mBasicInfo.putString(CarInfoManager.BASIC_INFO_KEY_MODEL,
65 vn.getStringProperty(p.getProp()));
66 break;
67 case VehicleNetworkConsts.VEHICLE_PROPERTY_INFO_MODEL_YEAR:
68 mBasicInfo.putString(CarInfoManager.BASIC_INFO_KEY_MODEL_YEAR,
69 vn.getStringProperty(p.getProp()));
70 break;
71 default: // not supported
72 break;
keunyounga3b28d82015-08-25 13:05:15 -070073 }
74 }
75 return supported;
76 }
77
78 @Override
keunyoungfe30ba02015-09-17 17:56:35 -070079 public void handleHalEvents(List<VehiclePropValue> values) {
80 for (VehiclePropValue v : values) {
81 logUnexpectedEvent(v.getProp());
82 }
keunyounga3b28d82015-08-25 13:05:15 -070083 }
84
85 @Override
86 public void dump(PrintWriter writer) {
87 writer.println("*InfoHal*");
Keun-young Park67456352016-10-03 13:45:19 -070088 writer.println("**BasicInfo:" + mBasicInfo);
keunyounga3b28d82015-08-25 13:05:15 -070089 }
90
Keun-young Park67456352016-10-03 13:45:19 -070091 public synchronized Bundle getBasicInfo() {
92 return mBasicInfo;
keunyounga3b28d82015-08-25 13:05:15 -070093 }
94
95 private void logUnexpectedEvent(int property) {
96 Log.w(CarLog.TAG_INFO, "unexpected HAL event for property 0x" +
97 Integer.toHexString(property));
98 }
keunyounga3b28d82015-08-25 13:05:15 -070099}