11af4b0280af406cfc7eb46810f6b76e57b983e11destradaa/*
21af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Copyright (C) 2013, The Android Open Source Project
31af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
41af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Licensed under the Apache License, Version 2.0 (the "License");
51af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * you may not use this file except in compliance with the License.
61af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * You may obtain a copy of the License at
71af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
81af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *     http://www.apache.org/license/LICENSE-2.0
91af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
101af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Unless required by applicable law or agreed to in writing, software
111af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * distributed under the License is distributed on an "AS IS" BASIS,
121af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * See the License for the specific language governing permissions and
141af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * limitations under the License.
151af4b0280af406cfc7eb46810f6b76e57b983e11destradaa */
161af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
171af4b0280af406cfc7eb46810f6b76e57b983e11destradaapackage android.hardware.location;
181af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
191af4b0280af406cfc7eb46810f6b76e57b983e11destradaaimport android.hardware.location.IFusedLocationHardwareSink;
201af4b0280af406cfc7eb46810f6b76e57b983e11destradaaimport android.location.FusedBatchOptions;
211af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
221af4b0280af406cfc7eb46810f6b76e57b983e11destradaa/**
231af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * Fused Location hardware interface.
241af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * This interface is the basic set of supported functionality by Fused Hardware
251af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * modules that offer Location batching capabilities.
261af4b0280af406cfc7eb46810f6b76e57b983e11destradaa *
271af4b0280af406cfc7eb46810f6b76e57b983e11destradaa * @hide
281af4b0280af406cfc7eb46810f6b76e57b983e11destradaa */
291af4b0280af406cfc7eb46810f6b76e57b983e11destradaainterface IFusedLocationHardware {
301af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
311af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Registers a sink with the Location Hardware object.
321af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
331af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param eventSink     The sink to register.
341af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
351af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void registerSink(in IFusedLocationHardwareSink eventSink);
361af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
371af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
381af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Unregisters a sink with the Location Hardware object.
391af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
401af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param eventSink     The sink to unregister.
411af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
421af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void unregisterSink(in IFusedLocationHardwareSink eventSink);
431af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
441af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
451af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Provides access to the batch size available in Hardware.
461af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
471af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @return The batch size the hardware supports.
481af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
491af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    int getSupportedBatchSize();
501af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
511af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
521af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Requests the Hardware to start batching locations.
531af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
541af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param id            An Id associated with the request.
551af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param batchOptions  The options required for batching.
561af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
571af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @throws RuntimeException if the request Id exists.
581af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
591af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void startBatching(in int id, in FusedBatchOptions batchOptions);
601af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
611af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
621af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Requests the Hardware to stop batching for the given Id.
631af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
641af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param id    The request that needs to be stopped.
651af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @throws RuntimeException if the request Id is unknown.
661af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
671af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void stopBatching(in int id);
681af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
691af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
701af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Updates a batching operation in progress.
711af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
721af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param id                The Id of the operation to update.
731af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param batchOptions     The options to apply to the given operation.
741af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
751af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @throws RuntimeException if the Id of the request is unknown.
761af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
771af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void updateBatchingOptions(in int id, in FusedBatchOptions batchOptions);
781af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
791af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
801af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Requests the most recent locations available in Hardware.
811af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * This operation does not dequeue the locations, so still other batching
821af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * events will continue working.
831af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
841af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param batchSizeRequested    The number of locations requested.
851af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
861af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void requestBatchOfLocations(in int batchSizeRequested);
871af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
881af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
891af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Flags if the Hardware supports injection of diagnostic data.
901af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
911af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @return True if data injection is supported, false otherwise.
921af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
931af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    boolean supportsDiagnosticDataInjection();
941af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
951af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
961af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Injects diagnostic data into the Hardware subsystem.
971af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
981af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param data  The data to inject.
991af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @throws RuntimeException if injection is not supported.
1001af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
1011af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void injectDiagnosticData(in String data);
1021af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1031af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
1041af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Flags if the Hardware supports injection of device context information.
1051af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
1061af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @return True if device context injection is supported, false otherwise.
1071af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
1081af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    boolean supportsDeviceContextInjection();
1091af4b0280af406cfc7eb46810f6b76e57b983e11destradaa
1101af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    /**
1111af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * Injects device context information into the Hardware subsystem.
1121af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     *
1131af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @param deviceEnabledContext  The context to inject.
1141af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     * @throws RuntimeException if injection is not supported.
1151af4b0280af406cfc7eb46810f6b76e57b983e11destradaa     */
1161af4b0280af406cfc7eb46810f6b76e57b983e11destradaa    void injectDeviceContext(in int deviceEnabledContext);
1171af4b0280af406cfc7eb46810f6b76e57b983e11destradaa}
118