1 /*
2  * Copyright (c) 2016, 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  */
16 package com.android.car.hvac.controllers;
17 
18 import com.android.car.hvac.HvacController;
19 import com.android.car.hvac.ui.SeatWarmerButton;
20 
21 /**
22  * A controller to handle changes in the heated seat levels.
23  */
24 public class SeatWarmerController {
25     private final SeatWarmerButton mPassengerSeatButton;
26     private final SeatWarmerButton mDriverSeatButton;
27 
28     private final HvacController mHvacController;
29 
SeatWarmerController(SeatWarmerButton passengerSeatButton, SeatWarmerButton driverSeatButton, HvacController hvacController)30     public SeatWarmerController(SeatWarmerButton passengerSeatButton,
31             SeatWarmerButton driverSeatButton, HvacController hvacController) {
32         mDriverSeatButton = driverSeatButton;
33         mPassengerSeatButton = passengerSeatButton;
34 
35         mHvacController = hvacController;
36         mHvacController.registerCallback(mCallback);
37 
38         mPassengerSeatButton.setSeatWarmerClickListener(mPassengerSeatListener);
39         mDriverSeatButton.setSeatWarmerClickListener(mDriverSeatListener);
40     }
41 
42     private final HvacController.Callback mCallback = new HvacController.Callback() {
43         @Override
44         public void onPassengerSeatWarmerChange(int level) {
45             // If the value of the heating is less than HEAT_OFF, it means the seats are
46             // being cooled, show heated seat button as off.
47             if (level < SeatWarmerButton.HEAT_OFF) {
48                 mPassengerSeatButton.setHeatLevel(SeatWarmerButton.HEAT_OFF);
49             } else {
50                 mPassengerSeatButton.setHeatLevel(level);
51             }
52         }
53 
54         @Override
55         public void onDriverSeatWarmerChange(int level) {
56             // If the value of the heating is less than HEAT_OFF, it means the seats are
57             // being cooled, show heated seat button as off.
58             if (level < SeatWarmerButton.HEAT_OFF) {
59                 mDriverSeatButton.setHeatLevel(SeatWarmerButton.HEAT_OFF);
60             } else {
61                 mDriverSeatButton.setHeatLevel(level);
62             }
63         }
64     };
65 
66     private final SeatWarmerButton.SeatWarmerButtonClickListener mPassengerSeatListener
67             = new SeatWarmerButton.SeatWarmerButtonClickListener() {
68         @Override
69         public void onSeatWarmerButtonClicked(@SeatWarmerButton.HeatingLevel int level) {
70             mHvacController.setPassengerSeatWarmerLevel(level);
71         }
72     };
73 
74     private final SeatWarmerButton.SeatWarmerButtonClickListener mDriverSeatListener
75             = new SeatWarmerButton.SeatWarmerButtonClickListener() {
76         @Override
77         public void onSeatWarmerButtonClicked(@SeatWarmerButton.HeatingLevel int level) {
78             mHvacController.setDriverSeatWarmerLevel(level);
79         }
80     };
81 }
82