143c04a7c87404d078db60e09d2da0061d72357c2Steve Paik/*
243c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * Copyright (C) 2016 The Android Open Source Project
343c04a7c87404d078db60e09d2da0061d72357c2Steve Paik *
443c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * Licensed under the Apache License, Version 2.0 (the "License");
543c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * you may not use this file except in compliance with the License.
643c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * You may obtain a copy of the License at
743c04a7c87404d078db60e09d2da0061d72357c2Steve Paik *
843c04a7c87404d078db60e09d2da0061d72357c2Steve Paik *      http://www.apache.org/licenses/LICENSE-2.0
943c04a7c87404d078db60e09d2da0061d72357c2Steve Paik *
1043c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * Unless required by applicable law or agreed to in writing, software
1143c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * distributed under the License is distributed on an "AS IS" BASIS,
1243c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1343c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * See the License for the specific language governing permissions and
1443c04a7c87404d078db60e09d2da0061d72357c2Steve Paik * limitations under the License.
1543c04a7c87404d078db60e09d2da0061d72357c2Steve Paik */
1643c04a7c87404d078db60e09d2da0061d72357c2Steve Paikpackage com.android.car.hal;
1743c04a7c87404d078db60e09d2da0061d72357c2Steve Paik
18af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Parkimport android.car.hardware.cabin.CarCabinManager;
19cfe93105f637c2822da113308f113ed418d0b319Pavel Maltsevimport android.hardware.automotive.vehicle.V2_0.VehicleProperty;
2043c04a7c87404d078db60e09d2da0061d72357c2Steve Paik
2143c04a7c87404d078db60e09d2da0061d72357c2Steve Paikpublic class CabinHalService extends PropertyHalServiceBase {
221b1247b5648975dd41ee73c25425825abb256234Vitalii Tomkiv    private static final boolean DBG = false;
2343c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    private static final String TAG = "CAR.CABIN.HAL";
2443c04a7c87404d078db60e09d2da0061d72357c2Steve Paik
251e5a88bcaea73af4a140616b4e9ed5fcfa60d990Pavel Maltsev    private final ManagerToHalPropIdMap mMgrHalPropIdMap = ManagerToHalPropIdMap.create(
26af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_DOOR_POS,
270d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.DOOR_POS,
28634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
29af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_DOOR_MOVE,
300d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.DOOR_MOVE,
31634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
32af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_DOOR_LOCK,
330d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.DOOR_LOCK,
34634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
35af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_Z_POS,
360d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_Z_POS,
37634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
38af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_Z_MOVE,
390d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_Z_MOVE,
40634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
41af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_Y_POS,
420d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_Y_POS,
43634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
44af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_Y_MOVE,
450d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_Y_MOVE,
46634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
47af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_LOCK,
480d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_LOCK,
49634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
50af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_MIRROR_FOLD,
510d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.MIRROR_FOLD,
52634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
53af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_MEMORY_SELECT,
540d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_MEMORY_SELECT,
55634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
56af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_MEMORY_SET,
570d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_MEMORY_SET,
58634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
59af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BELT_BUCKLED,
600d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BELT_BUCKLED,
61634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
62af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BELT_HEIGHT_POS,
630d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BELT_HEIGHT_POS,
64634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
65af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BELT_HEIGHT_MOVE,
660d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BELT_HEIGHT_MOVE,
67634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
68af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_FORE_AFT_POS,
690d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_FORE_AFT_POS,
70634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
71af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_FORE_AFT_MOVE,
720d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_FORE_AFT_MOVE,
73634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
74af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BACKREST_ANGLE_1_POS,
750d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BACKREST_ANGLE_1_POS,
76634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
77af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BACKREST_ANGLE_1_MOVE,
780d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BACKREST_ANGLE_1_MOVE,
79634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
80af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BACKREST_ANGLE_2_POS,
810d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BACKREST_ANGLE_2_POS,
82634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
83af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_BACKREST_ANGLE_2_MOVE,
840d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_BACKREST_ANGLE_2_MOVE,
85634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
86af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEIGHT_POS,
870d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEIGHT_POS,
88634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
89af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEIGHT_MOVE,
900d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEIGHT_MOVE,
91634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
92af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_DEPTH_POS,
930d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_DEPTH_POS,
94634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
95af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_DEPTH_MOVE,
960d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_DEPTH_MOVE,
97634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
98af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_TILT_POS,
990d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_TILT_POS,
100634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
101af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_TILT_MOVE,
1020d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_TILT_MOVE,
103634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
104af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_LUMBAR_FORE_AFT_POS,
1050d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_LUMBAR_FORE_AFT_POS,
106634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
107af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_LUMBAR_FORE_AFT_MOVE,
1080d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_LUMBAR_FORE_AFT_MOVE,
109634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
110af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_LUMBAR_SIDE_SUPPORT_POS,
1110d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_LUMBAR_SIDE_SUPPORT_POS,
112634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
113af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_LUMBAR_SIDE_SUPPORT_MOVE,
1140d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_LUMBAR_SIDE_SUPPORT_MOVE,
115634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
116af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_HEIGHT_POS,
1170d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_HEIGHT_POS,
118634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
119af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_HEIGHT_MOVE,
1200d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_HEIGHT_MOVE,
121634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
122af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_ANGLE_POS,
1230d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_ANGLE_POS,
124634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
125af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_ANGLE_MOVE,
1260d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_ANGLE_MOVE,
127634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
128af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_FORE_AFT_POS,
1290d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_FORE_AFT_POS,
130634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
131af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_SEAT_HEADREST_FORE_AFT_MOVE,
1320d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.SEAT_HEADREST_FORE_AFT_MOVE,
133634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
134af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_WINDOW_POS,
1350d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.WINDOW_POS,
136634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
137af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_WINDOW_MOVE,
1380d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.WINDOW_MOVE,
139634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
140af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_WINDOW_VENT_POS,
1410d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.WINDOW_VENT_POS,
142634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
143af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_WINDOW_VENT_MOVE,
1440d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.WINDOW_VENT_MOVE,
145634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
146af2cc99a2e8eea38a75b20b952ea5c0e7ebb4b1bKeun-young Park            CarCabinManager.ID_WINDOW_LOCK,
1470d07c76bbc788fba8c77d8e932330ab22ec6ba27Pavel Maltsev            VehicleProperty.WINDOW_LOCK
1481e5a88bcaea73af4a140616b4e9ed5fcfa60d990Pavel Maltsev    );
149634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev
15043c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    public CabinHalService(VehicleHal vehicleHal) {
15143c04a7c87404d078db60e09d2da0061d72357c2Steve Paik        super(vehicleHal, TAG, DBG);
15243c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    }
15343c04a7c87404d078db60e09d2da0061d72357c2Steve Paik
15443c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    // Convert the Cabin public API property ID to HAL property ID
15543c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    @Override
15643c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    protected int managerToHalPropId(int propId) {
157634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev        return mMgrHalPropIdMap.getHalPropId(propId);
15843c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    }
15943c04a7c87404d078db60e09d2da0061d72357c2Steve Paik
16043c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    // Convert he HAL specific property ID to Cabin public API
16143c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    @Override
16243c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    protected int halToManagerPropId(int halPropId) {
163634e1ff49c62c32c8227ec5092743de3caca790cPavel Maltsev        return mMgrHalPropIdMap.getManagerPropId(halPropId);
16443c04a7c87404d078db60e09d2da0061d72357c2Steve Paik    }
16543c04a7c87404d078db60e09d2da0061d72357c2Steve Paik}
166