16648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik/*
26648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * Copyright (C) 2015 The Android Open Source Project
36648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik *
46648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * Licensed under the Apache License, Version 2.0 (the "License");
56648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * you may not use this file except in compliance with the License.
66648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * You may obtain a copy of the License at
76648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik *
86648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik *      http://www.apache.org/licenses/LICENSE-2.0
96648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik *
106648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * Unless required by applicable law or agreed to in writing, software
116648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * distributed under the License is distributed on an "AS IS" BASIS,
126648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * See the License for the specific language governing permissions and
146648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik * limitations under the License.
156648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik */
166648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paikpackage com.android.car.hal;
176648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik
18af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Parkimport android.car.hardware.hvac.CarHvacManager;
1999e1a7555a9521c33203b68c5ab5bd1c039ee712Pavel Maltsevimport android.hardware.automotive.vehicle.V2_0.VehicleProperty;
206648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik
21461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paikpublic class HvacHalService extends PropertyHalServiceBase {
221b1247b5648975dd41ee73c25425825abb256234Vitalii Tomkiv    private static final boolean DBG = false;
23461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik    private static final String TAG = "HvacHalService";
246648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik
251e5a88bcaea73af4a140616b4e9ed5fcfa60d990Pavel Maltsev    private final ManagerToHalPropIdMap mMgrHalPropIdMap = ManagerToHalPropIdMap.create(
26595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_MIRROR_DEFROSTER_ON, VehicleProperty.HVAC_SIDE_MIRROR_HEAT,
27634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
28595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_STEERING_WHEEL_TEMP, VehicleProperty.HVAC_STEERING_WHEEL_TEMP,
29634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
30595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_OUTSIDE_AIR_TEMP, VehicleProperty.ENV_OUTSIDE_TEMPERATURE,
31634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
32595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_TEMPERATURE_UNITS, VehicleProperty.HVAC_TEMPERATURE_UNITS,
33634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
34595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_TEMP_SETPOINT, VehicleProperty.HVAC_TEMPERATURE_SET,
35634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
36595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_TEMP_ACTUAL, VehicleProperty.HVAC_TEMPERATURE_CURRENT,
37634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
38595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_FAN_SPEED_SETPOINT, VehicleProperty.HVAC_FAN_SPEED,
39634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
40595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_FAN_SPEED_RPM, VehicleProperty.HVAC_ACTUAL_FAN_SPEED_RPM,
41634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
42595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_FAN_POSITION_AVAILABLE,
43595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            VehicleProperty.HVAC_FAN_DIRECTION_AVAILABLE,
44634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
45595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_FAN_POSITION, VehicleProperty.HVAC_FAN_DIRECTION,
46634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
47595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_SEAT_TEMP, VehicleProperty.HVAC_SEAT_TEMPERATURE,
48634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
49595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_AC_ON, VehicleProperty.HVAC_AC_ON,
50634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
51595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_AUTOMATIC_MODE_ON, VehicleProperty.HVAC_AUTO_ON,
52634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
53595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_AIR_RECIRCULATION_ON,VehicleProperty.HVAC_RECIRC_ON,
54634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
55595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_MAX_AC_ON, VehicleProperty.HVAC_MAX_AC_ON,
56634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
57595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_DUAL_ZONE_ON, VehicleProperty.HVAC_DUAL_ON,
58634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
59595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_MAX_DEFROST_ON, VehicleProperty.HVAC_MAX_DEFROST_ON,
60634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
61595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_HVAC_POWER_ON, VehicleProperty.HVAC_POWER_ON,
62634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
63595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_ZONED_HVAC_AUTO_RECIRC_ON, VehicleProperty.HVAC_AUTO_RECIRC_ON,
64595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik
65595fc670d86ee96d4451e2eac20220379ded3f3cSteve Paik            CarHvacManager.ID_WINDOW_DEFROSTER_ON, VehicleProperty.HVAC_DEFROSTER
661e5a88bcaea73af4a140616b4e9ed5fcfa60d990Pavel Maltsev    );
67634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
686648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    public HvacHalService(VehicleHal vehicleHal) {
69461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik        super(vehicleHal, TAG, DBG);
706648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    }
716648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik
726648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    // Convert the HVAC public API property ID to HAL property ID
73461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik    @Override
74461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik    protected int managerToHalPropId(int hvacPropId) {
75634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev        return mMgrHalPropIdMap.getHalPropId(hvacPropId);
766648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    }
776648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik
786648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    // Convert he HAL specific property ID to HVAC public API
79461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik    @Override
80461ecc6c9bd22f782e8c64a6693bd8ec6d61593eSteve Paik    protected int halToManagerPropId(int halPropId) {
81634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev        return mMgrHalPropIdMap.getManagerPropId(halPropId);
826648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik    }
836648198ce8f3129886038d9c80b63b96b8a0ee3eSteve Paik}
84