Home | History | Annotate | Download | only in controllers
      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