e2603e3d52
Implemented: - defined VehicleHal - object pool for VehiclePropValue objects - batching of vehicle HAL events - subscription management Test: unit tests provided Bug: b/31971746 Change-Id: Idd2d0aee7b32a975c3db54812be235e13f52905a
100 lines
3.5 KiB
Text
100 lines
3.5 KiB
Text
/*
|
|
* Copyright (C) 2016 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.hardware.vehicle@2.0;
|
|
|
|
import IVehicleCallback;
|
|
|
|
interface IVehicle {
|
|
/**
|
|
* Returns a list of all property configurations supported by this vehicle
|
|
* HAL.
|
|
*/
|
|
getAllPropConfigs() generates (vec<VehiclePropConfig> propConfigs);
|
|
|
|
/*
|
|
* Returns a list of property configurations for given properties.
|
|
*/
|
|
getPropConfigs(vec<VehicleProperty> props)
|
|
generates (vec<VehiclePropConfig> propConfigs);
|
|
|
|
/**
|
|
* Get a vehicle property value.
|
|
*
|
|
* For VehiclePropertyChangeMode::STATIC properties, this method must always
|
|
* return the same value always.
|
|
* For VehiclePropertyChangeMode::ON_CHANGE properties, it must return the
|
|
* latest available value.
|
|
*
|
|
* If there is no data available yet, which can happen during initial stage,
|
|
* this call must return immediately with an error code of
|
|
* StatusCode::TRY_AGAIN.
|
|
*/
|
|
get(VehicleProperty propId, int32_t areaId)
|
|
generates (StatusCode status, VehiclePropValue propValue);
|
|
|
|
/**
|
|
* Set a vehicle property value.
|
|
*
|
|
* Timestamp of data must be ignored for set operation.
|
|
*
|
|
* Setting some properties require having initial state available. If initial
|
|
* data is not available yet this call must return StatusCode::TRY_AGAIN.
|
|
* For a property with separate power control this call must return
|
|
* StatusCode::NOT_AVAILABLE error if property is not powered on.
|
|
*/
|
|
set(VehiclePropValue propValue) generates (StatusCode status);
|
|
|
|
/**
|
|
* Subscribes to property events.
|
|
*
|
|
* Clients must be able to subscribe to multiple properties at a time
|
|
* depending on data provided in options argument.
|
|
*
|
|
* @param listener This client must be called on appropriate event.
|
|
* @param options List of options to subscribe. SubscribeOption contains
|
|
* information such as property Id, area Id, sample rate, etc.
|
|
*/
|
|
subscribe(IVehicleCallback callback, vec<SubscribeOptions> options)
|
|
generates (StatusCode status);
|
|
|
|
/**
|
|
* Unsubscribes from property events.
|
|
*
|
|
* If this client wasn't subscribed to the given property, this method
|
|
* must return StatusCode::INVALID_ARGUMENT.
|
|
*/
|
|
unsubscribe(IVehicleCallback callback, VehicleProperty propId)
|
|
generates (StatusCode status);
|
|
|
|
/**
|
|
* Print out debugging state for the vehicle hal.
|
|
*
|
|
* The text must be in ASCII encoding only.
|
|
*
|
|
* Performance requirements:
|
|
*
|
|
* The HAL must return from this call in less than 10ms. This call must avoid
|
|
* deadlocks, as it may be called at any point of operation. Any synchronization
|
|
* primitives used (such as mutex locks or semaphores) must be acquired
|
|
* with a timeout.
|
|
*
|
|
* TODO(pavelm): we cannot use handle here due to Java compatibility, it's
|
|
* better to pass file descriptor and write debug data directly in vehicle HAL
|
|
* rather than passing back a string.
|
|
*/
|
|
debugDump() generates (string s);
|
|
};
|