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 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