1e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park/*
2e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Copyright (C) 2015 The Android Open Source Project
3e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park *
4e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Licensed under the Apache License, Version 2.0 (the "License");
5e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * you may not use this file except in compliance with the License.
6e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * You may obtain a copy of the License at
7e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park *
8e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park *      http://www.apache.org/licenses/LICENSE-2.0
9e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park *
10e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * Unless required by applicable law or agreed to in writing, software
11e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * distributed under the License is distributed on an "AS IS" BASIS,
12e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * See the License for the specific language governing permissions and
14e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park * limitations under the License.
15e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */
16e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park
17e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkpackage android.support.car;
18e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park
1907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Parkimport android.support.annotation.IntDef;
2007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Parkimport android.support.annotation.Nullable;
216745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Parkimport java.lang.annotation.Retention;
226745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Parkimport java.lang.annotation.RetentionPolicy;
236745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park
24e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park/**
2507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park * Utility to retrieve various static information from car.
26e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park */
27e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Parkpublic abstract class CarInfoManager implements CarManagerBase {
28e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park
2907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /** Location of the driver is unknown. */
3007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public static final int DRIVER_SIDE_UNKNOWN = 0;
3107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /** Location of the driver: left. */
3207ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public static final int DRIVER_SIDE_LEFT   = 1;
3307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /** Location of the driver: right. */
3407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public static final int DRIVER_SIDE_RIGHT  = 2;
3507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /** Location of the driver: center. */
3607ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public static final int DRIVER_SIDE_CENTER = 3;
3707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
3807ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /** @hide */
3907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    @IntDef({
4007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park        DRIVER_SIDE_UNKNOWN,
4107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park        DRIVER_SIDE_LEFT,
4207ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park        DRIVER_SIDE_RIGHT,
4307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park        DRIVER_SIDE_CENTER
4407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    })
4507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    @Retention(RetentionPolicy.SOURCE)
4607ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public @interface DriverSide {}
4707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
48e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park    /**
4907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return manufacturer of the car.
5007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
51e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park     */
5207ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getManufacturer() throws CarNotConnectedException;
5307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
54e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park    /**
5507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return model name of the car. This information may not necessarily allow distinguishing
566745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park     * different car models as the same name may be used for different cars depending on
5707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * manufacturers.
5807ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
5907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     */
6007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getModel() throws CarNotConnectedException;
6107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
6207ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /**
6307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return model year of the car in AC.
6407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
65e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park     */
6607ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getModelYear() throws CarNotConnectedException;
6707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
68e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park    /**
6907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return unique identifier for the car. This is not VIN, and id is persistent until user
7007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * resets it.
7107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
72e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park     */
7307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getVehicleId() throws CarNotConnectedException;
7407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park
75e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park    /**
7607ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return manufacturer of the head unit.
7707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
78e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park     */
7907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getHeadunitManufacturer() throws CarNotConnectedException;
80e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park
8107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /**
8207ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return model of the headunit.
8307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
8407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     */
8507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getHeadunitModel() throws CarNotConnectedException;
866745635909d050c57f5a08bfc28580feb0f2cfe0Keun-young Park
8707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /**
8807ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return S/W build of the headunit.
8907ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
9007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     */
9107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getHeadunitSoftwareBuild() throws CarNotConnectedException;
92b13dbe470108846d1c04494c5c0d2bf3cd9b8054Jason Tholstrup
9307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    /**
9407ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return S/W version of the headunit.
9507ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return null if information is not available.
9607ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     */
9707ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @Nullable String getHeadunitSoftwareVersion() throws CarNotConnectedException;
98e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park
99e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park    /**
10007ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * Return driver side of the car.
10107ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park     * @return {@link #DRIVER_SIDE_UNKNOWN} if information is not available.
102e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park     */
10307ddbbd70e518e271f941f92df1b0e5501af0ad1Keun-young Park    public abstract @DriverSide int getDriverPosition() throws CarNotConnectedException;
104e54ac276796c6535558f8444d882adecd19ce2bdKeun-young Park}
105