summaryrefslogtreecommitdiff
path: root/include_all
diff options
context:
space:
mode:
authorSteven Moreland <smoreland@google.com>2019-01-14 17:45:19 -0800
committerSteven Moreland <smoreland@google.com>2023-06-02 23:01:56 +0000
commit68990e5354efd4af2ea042055bc8e818f7e467c3 (patch)
treef5b61a391b3cccedcf7adf3d667eabeef3dc0f45 /include_all
parent3556da3b4ac73bb42f837f900436ce2bcdae01a6 (diff)
downloadlibhardware-68990e5354efd4af2ea042055bc8e818f7e467c3.tar.gz
fused_location.h: vendor-only
This commit hides fused_location.h from the system. - include - it is no longer in the global include - include_all - it is no longer accessible to system things which use libhardware Bug: 37280010 Test: boot/build Change-Id: I12297f28d8d2330821f45c3a2caced026ea703ed
Diffstat (limited to 'include_all')
-rw-r--r--include_all/hardware/fused_location.h816
1 files changed, 0 insertions, 816 deletions
diff --git a/include_all/hardware/fused_location.h b/include_all/hardware/fused_location.h
deleted file mode 100644
index 550e1933..00000000
--- a/include_all/hardware/fused_location.h
+++ /dev/null
@@ -1,816 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-#ifndef ANDROID_INCLUDE_HARDWARE_FUSED_LOCATION_H
-#define ANDROID_INCLUDE_HARDWARE_FUSED_LOCATION_H
-
-#include <hardware/hardware.h>
-
-#include "gnss-base.h"
-
-/**
- * This header file defines the interface of the Fused Location Provider.
- * Fused Location Provider is designed to fuse data from various sources
- * like GPS, Wifi, Cell, Sensors, Bluetooth etc to provide a fused location to the
- * upper layers. The advantage of doing fusion in hardware is power savings.
- * The goal is to do this without waking up the AP to get additional data.
- * The software implementation of FLP will decide when to use
- * the hardware fused location. Other location features like geofencing will
- * also be implemented using fusion in hardware.
- */
-__BEGIN_DECLS
-
-#define FLP_HEADER_VERSION 1
-#define FLP_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
-#define FLP_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION_2(0, 1, FLP_HEADER_VERSION)
-
-/**
- * The id of this module
- */
-#define FUSED_LOCATION_HARDWARE_MODULE_ID "flp"
-
-/**
- * Name for the FLP location interface
- */
-#define FLP_LOCATION_INTERFACE "flp_location"
-
-/**
- * Name for the FLP location interface
- */
-#define FLP_DIAGNOSTIC_INTERFACE "flp_diagnostic"
-
-/**
- * Name for the FLP_Geofencing interface.
- */
-#define FLP_GEOFENCING_INTERFACE "flp_geofencing"
-
-/**
- * Name for the FLP_device context interface.
- */
-#define FLP_DEVICE_CONTEXT_INTERFACE "flp_device_context"
-
-/**
- * Constants to indicate the various subsystems
- * that will be used.
- */
-#define FLP_TECH_MASK_GNSS (1U<<0)
-#define FLP_TECH_MASK_WIFI (1U<<1)
-#define FLP_TECH_MASK_SENSORS (1U<<2)
-#define FLP_TECH_MASK_CELL (1U<<3)
-#define FLP_TECH_MASK_BLUETOOTH (1U<<4)
-
-/**
- * Set when your implementation can produce GNNS-derived locations,
- * for use with flp_capabilities_callback.
- *
- * GNNS is a required capability for a particular feature to be used
- * (batching or geofencing). If not supported that particular feature
- * won't be used by the upper layer.
- */
-#define CAPABILITY_GNSS (1U<<0)
-/**
- * Set when your implementation can produce WiFi-derived locations, for
- * use with flp_capabilities_callback.
- */
-#define CAPABILITY_WIFI (1U<<1)
-/**
- * Set when your implementation can produce cell-derived locations, for
- * use with flp_capabilities_callback.
- */
-#define CAPABILITY_CELL (1U<<3)
-
-/**
- * Status to return in flp_status_callback when your implementation transitions
- * from being unsuccessful in determining location to being successful.
- */
-#define FLP_STATUS_LOCATION_AVAILABLE 0
-/**
- * Status to return in flp_status_callback when your implementation transitions
- * from being successful in determining location to being unsuccessful.
- */
-#define FLP_STATUS_LOCATION_UNAVAILABLE 1
-
-/**
- * While batching, the implementation should not call the
- * flp_location_callback on every location fix. However,
- * sometimes in high power mode, the system might need
- * a location callback every single time the location
- * fix has been obtained. This flag controls that option.
- * Its the responsibility of the upper layers (caller) to switch
- * it off, if it knows that the AP might go to sleep.
- * When this bit is on amidst a batching session, batching should
- * continue while location fixes are reported in real time.
- */
-#define FLP_BATCH_CALLBACK_ON_LOCATION_FIX 0x0000002
-
-/** Flags to indicate which values are valid in a FlpLocation. */
-typedef uint16_t FlpLocationFlags;
-
-// IMPORTANT: Note that the following values must match
-// constants in the corresponding java file.
-
-/** FlpLocation has valid latitude and longitude. */
-#define FLP_LOCATION_HAS_LAT_LONG (1U<<0)
-/** FlpLocation has valid altitude. */
-#define FLP_LOCATION_HAS_ALTITUDE (1U<<1)
-/** FlpLocation has valid speed. */
-#define FLP_LOCATION_HAS_SPEED (1U<<2)
-/** FlpLocation has valid bearing. */
-#define FLP_LOCATION_HAS_BEARING (1U<<4)
-/** FlpLocation has valid accuracy. */
-#define FLP_LOCATION_HAS_ACCURACY (1U<<8)
-
-
-typedef int64_t FlpUtcTime;
-
-/** Represents a location. */
-typedef struct {
- /** set to sizeof(FlpLocation) */
- size_t size;
-
- /** Flags associated with the location object. */
- FlpLocationFlags flags;
-
- /** Represents latitude in degrees. */
- double latitude;
-
- /** Represents longitude in degrees. */
- double longitude;
-
- /**
- * Represents altitude in meters above the WGS 84 reference
- * ellipsoid. */
- double altitude;
-
- /** Represents speed in meters per second. */
- float speed;
-
- /** Represents heading in degrees. */
- float bearing;
-
- /** Represents expected accuracy in meters. */
- float accuracy;
-
- /** Timestamp for the location fix. */
- FlpUtcTime timestamp;
-
- /** Sources used, will be Bitwise OR of the FLP_TECH_MASK bits. */
- uint32_t sources_used;
-} FlpLocation;
-
-typedef enum {
- ASSOCIATE_JVM,
- DISASSOCIATE_JVM,
-} ThreadEvent;
-
-/**
- * Callback with location information.
- * Can only be called from a thread associated to JVM using set_thread_event_cb.
- * Parameters:
- * num_locations is the number of batched locations available.
- * location is the pointer to an array of pointers to location objects.
- */
-typedef void (*flp_location_callback)(int32_t num_locations, FlpLocation** location);
-
-/**
- * Callback utility for acquiring a wakelock.
- * This can be used to prevent the CPU from suspending while handling FLP events.
- */
-typedef void (*flp_acquire_wakelock)();
-
-/**
- * Callback utility for releasing the FLP wakelock.
- */
-typedef void (*flp_release_wakelock)();
-
-/**
- * Callback for associating a thread that can call into the Java framework code.
- * This must be used to initialize any threads that report events up to the framework.
- * Return value:
- * FLP_RESULT_SUCCESS on success.
- * FLP_RESULT_ERROR if the association failed in the current thread.
- */
-typedef int (*flp_set_thread_event)(ThreadEvent event);
-
-/**
- * Callback for technologies supported by this implementation.
- *
- * Parameters: capabilities is a bitmask of FLP_CAPABILITY_* values describing
- * which features your implementation supports. You should support
- * CAPABILITY_GNSS at a minimum for your implementation to be utilized. You can
- * return 0 in FlpGeofenceCallbacks to indicate you don't support geofencing,
- * or 0 in FlpCallbacks to indicate you don't support location batching.
- */
-typedef void (*flp_capabilities_callback)(int capabilities);
-
-/**
- * Callback with status information on the ability to compute location.
- * To avoid waking up the application processor you should only send
- * changes in status (you shouldn't call this method twice in a row
- * with the same status value). As a guideline you should not call this
- * more frequently then the requested batch period set with period_ns
- * in FlpBatchOptions. For example if period_ns is set to 5 minutes and
- * the status changes many times in that interval, you should only report
- * one status change every 5 minutes.
- *
- * Parameters:
- * status is one of FLP_STATUS_LOCATION_AVAILABLE
- * or FLP_STATUS_LOCATION_UNAVAILABLE.
- */
-typedef void (*flp_status_callback)(int32_t status);
-
-/** FLP callback structure. */
-typedef struct {
- /** set to sizeof(FlpCallbacks) */
- size_t size;
- flp_location_callback location_cb;
- flp_acquire_wakelock acquire_wakelock_cb;
- flp_release_wakelock release_wakelock_cb;
- flp_set_thread_event set_thread_event_cb;
- flp_capabilities_callback flp_capabilities_cb;
- flp_status_callback flp_status_cb;
-} FlpCallbacks;
-
-
-/** Options with the batching FLP APIs */
-typedef struct {
- /**
- * Maximum power in mW that the underlying implementation
- * can use for this batching call.
- * If max_power_allocation_mW is 0, only fixes that are generated
- * at no additional cost of power shall be reported.
- */
- double max_power_allocation_mW;
-
- /** Bitwise OR of the FLP_TECH_MASKS to use */
- uint32_t sources_to_use;
-
- /**
- * FLP_BATCH_WAKEUP_ON_FIFO_FULL - If set the hardware
- * will wake up the AP when the buffer is full. If not set, the
- * hardware will drop the oldest location object.
- *
- * FLP_BATCH_CALLBACK_ON_LOCATION_FIX - If set the location
- * callback will be called every time there is a location fix.
- * Its the responsibility of the upper layers (caller) to switch
- * it off, if it knows that the AP might go to sleep. When this
- * bit is on amidst a batching session, batching should continue
- * while location fixes are reported in real time.
- *
- * Other flags to be bitwised ORed in the future.
- */
- uint32_t flags;
-
- /**
- * Frequency with which location needs to be batched in nano
- * seconds.
- */
- int64_t period_ns;
-
- /**
- * The smallest displacement between reported locations in meters.
- *
- * If set to 0, then you should report locations at the requested
- * interval even if the device is stationary. If positive, you
- * can use this parameter as a hint to save power (e.g. throttling
- * location period if the user hasn't traveled close to the displacement
- * threshold). Even small positive values can be interpreted to mean
- * that you don't have to compute location when the device is stationary.
- *
- * There is no need to filter location delivery based on this parameter.
- * Locations can be delivered even if they have a displacement smaller than
- * requested. This parameter can safely be ignored at the cost of potential
- * power savings.
- */
- float smallest_displacement_meters;
-} FlpBatchOptions;
-
-#define FLP_RESULT_SUCCESS 0
-#define FLP_RESULT_ERROR -1
-#define FLP_RESULT_INSUFFICIENT_MEMORY -2
-#define FLP_RESULT_TOO_MANY_GEOFENCES -3
-#define FLP_RESULT_ID_EXISTS -4
-#define FLP_RESULT_ID_UNKNOWN -5
-#define FLP_RESULT_INVALID_GEOFENCE_TRANSITION -6
-
-/**
- * Represents the standard FLP interface.
- */
-typedef struct {
- /**
- * set to sizeof(FlpLocationInterface)
- */
- size_t size;
-
- /**
- * Opens the interface and provides the callback routines
- * to the implementation of this interface. Once called you should respond
- * by calling the flp_capabilities_callback in FlpCallbacks to
- * specify the capabilities that your implementation supports.
- */
- int (*init)(FlpCallbacks* callbacks );
-
- /**
- * Return the batch size (in number of FlpLocation objects)
- * available in the hardware. Note, different HW implementations
- * may have different sample sizes. This shall return number
- * of samples defined in the format of FlpLocation.
- * This will be used by the upper layer, to decide on the batching
- * interval and whether the AP should be woken up or not.
- */
- int (*get_batch_size)();
-
- /**
- * Start batching locations. This API is primarily used when the AP is
- * asleep and the device can batch locations in the hardware.
- * flp_location_callback is used to return the locations. When the buffer
- * is full and FLP_BATCH_WAKEUP_ON_FIFO_FULL is used, the AP is woken up.
- * When the buffer is full and FLP_BATCH_WAKEUP_ON_FIFO_FULL is not set,
- * the oldest location object is dropped. In this case the AP will not be
- * woken up. The upper layer will use get_batched_location
- * API to explicitly ask for the location.
- * If FLP_BATCH_CALLBACK_ON_LOCATION_FIX is set, the implementation
- * will call the flp_location_callback every single time there is a location
- * fix. This overrides FLP_BATCH_WAKEUP_ON_FIFO_FULL flag setting.
- * It's the responsibility of the upper layers (caller) to switch
- * it off, if it knows that the AP might go to sleep. This is useful
- * for nagivational applications when the system is in high power mode.
- * Parameters:
- * id - Id for the request.
- * options - See FlpBatchOptions struct definition.
- * Return value:
- * FLP_RESULT_SUCCESS on success, FLP_RESULT_INSUFFICIENT_MEMORY,
- * FLP_RESULT_ID_EXISTS, FLP_RESULT_ERROR on failure.
- */
- int (*start_batching)(int id, FlpBatchOptions* options);
-
- /**
- * Update FlpBatchOptions associated with a batching request.
- * When a batching operation is in progress and a batching option
- * such as FLP_BATCH_WAKEUP_ON_FIFO_FULL needs to be updated, this API
- * will be used. For instance, this can happen when the AP is awake and
- * the maps application is being used.
- * Parameters:
- * id - Id of an existing batch request.
- * new_options - Updated FlpBatchOptions
- * Return value:
- * FLP_RESULT_SUCCESS on success, FLP_RESULT_ID_UNKNOWN,
- * FLP_RESULT_ERROR on error.
- */
- int (*update_batching_options)(int id, FlpBatchOptions* new_options);
-
- /**
- * Stop batching.
- * Parameters:
- * id - Id for the request.
- * Return Value:
- * FLP_RESULT_SUCCESS on success, FLP_RESULT_ID_UNKNOWN or
- * FLP_RESULT_ERROR on failure.
- */
- int (*stop_batching)(int id);
-
- /**
- * Closes the interface. If any batch operations are in progress,
- * they should be stopped.
- */
- void (*cleanup)();
-
- /**
- * Get the fused location that was batched.
- * flp_location_callback is used to return the location. The location object
- * is dropped from the buffer only when the buffer is full. Do not remove it
- * from the buffer just because it has been returned using the callback.
- * In other words, when there is no new location object, two calls to
- * get_batched_location(1) should return the same location object.
- * Parameters:
- * last_n_locations - Number of locations to get. This can be one or many.
- * If the last_n_locations is 1, you get the latest location known to the
- * hardware.
- */
- void (*get_batched_location)(int last_n_locations);
-
- /**
- * Injects current location from another location provider
- * latitude and longitude are measured in degrees
- * expected accuracy is measured in meters
- * Parameters:
- * location - The location object being injected.
- * Return value: FLP_RESULT_SUCCESS or FLP_RESULT_ERROR.
- */
- int (*inject_location)(FlpLocation* location);
-
- /**
- * Get a pointer to extension information.
- */
- const void* (*get_extension)(const char* name);
-
- /**
- * Retrieve all batched locations currently stored and clear the buffer.
- * flp_location_callback MUST be called in response, even if there are
- * no locations to flush (in which case num_locations should be 0).
- * Subsequent calls to get_batched_location or flush_batched_locations
- * should not return any of the locations returned in this call.
- */
- void (*flush_batched_locations)();
-} FlpLocationInterface;
-
-struct flp_device_t {
- struct hw_device_t common;
-
- /**
- * Get a handle to the FLP Interface.
- */
- const FlpLocationInterface* (*get_flp_interface)(struct flp_device_t* dev);
-};
-
-/**
- * Callback for reports diagnostic data into the Java framework code.
-*/
-typedef void (*report_data)(char* data, int length);
-
-/**
- * FLP diagnostic callback structure.
- * Currently, not used - but this for future extension.
- */
-typedef struct {
- /** set to sizeof(FlpDiagnosticCallbacks) */
- size_t size;
-
- flp_set_thread_event set_thread_event_cb;
-
- /** reports diagnostic data into the Java framework code */
- report_data data_cb;
-} FlpDiagnosticCallbacks;
-
-/** Extended interface for diagnostic support. */
-typedef struct {
- /** set to sizeof(FlpDiagnosticInterface) */
- size_t size;
-
- /**
- * Opens the diagnostic interface and provides the callback routines
- * to the implemenation of this interface.
- */
- void (*init)(FlpDiagnosticCallbacks* callbacks);
-
- /**
- * Injects diagnostic data into the FLP subsystem.
- * Return 0 on success, -1 on error.
- **/
- int (*inject_data)(char* data, int length );
-} FlpDiagnosticInterface;
-
-/**
- * Context setting information.
- * All these settings shall be injected to FLP HAL at FLP init time.
- * Following that, only the changed setting need to be re-injected
- * upon changes.
- */
-
-#define FLP_DEVICE_CONTEXT_GPS_ENABLED (1U<<0)
-#define FLP_DEVICE_CONTEXT_AGPS_ENABLED (1U<<1)
-#define FLP_DEVICE_CONTEXT_NETWORK_POSITIONING_ENABLED (1U<<2)
-#define FLP_DEVICE_CONTEXT_WIFI_CONNECTIVITY_ENABLED (1U<<3)
-#define FLP_DEVICE_CONTEXT_WIFI_POSITIONING_ENABLED (1U<<4)
-#define FLP_DEVICE_CONTEXT_HW_NETWORK_POSITIONING_ENABLED (1U<<5)
-#define FLP_DEVICE_CONTEXT_AIRPLANE_MODE_ON (1U<<6)
-#define FLP_DEVICE_CONTEXT_DATA_ENABLED (1U<<7)
-#define FLP_DEVICE_CONTEXT_ROAMING_ENABLED (1U<<8)
-#define FLP_DEVICE_CONTEXT_CURRENTLY_ROAMING (1U<<9)
-#define FLP_DEVICE_CONTEXT_SENSOR_ENABLED (1U<<10)
-#define FLP_DEVICE_CONTEXT_BLUETOOTH_ENABLED (1U<<11)
-#define FLP_DEVICE_CONTEXT_CHARGER_ON (1U<<12)
-
-/** Extended interface for device context support. */
-typedef struct {
- /** set to sizeof(FlpDeviceContextInterface) */
- size_t size;
-
- /**
- * Injects debug data into the FLP subsystem.
- * Return 0 on success, -1 on error.
- **/
- int (*inject_device_context)(uint32_t enabledMask);
-} FlpDeviceContextInterface;
-
-
-/**
- * There are 3 states associated with a Geofence: Inside, Outside, Unknown.
- * There are 3 transitions: ENTERED, EXITED, UNCERTAIN.
- *
- * An example state diagram with confidence level: 95% and Unknown time limit
- * set as 30 secs is shown below. (confidence level and Unknown time limit are
- * explained latter)
- * ____________________________
- * | Unknown (30 secs) |
- * """"""""""""""""""""""""""""
- * ^ | | ^
- * UNCERTAIN| |ENTERED EXITED| |UNCERTAIN
- * | v v |
- * ________ EXITED _________
- * | Inside | -----------> | Outside |
- * | | <----------- | |
- * """""""" ENTERED """""""""
- *
- * Inside state: We are 95% confident that the user is inside the geofence.
- * Outside state: We are 95% confident that the user is outside the geofence
- * Unknown state: Rest of the time.
- *
- * The Unknown state is better explained with an example:
- *
- * __________
- * | c|
- * | ___ | _______
- * | |a| | | b |
- * | """ | """""""
- * | |
- * """"""""""
- * In the diagram above, "a" and "b" are 2 geofences and "c" is the accuracy
- * circle reported by the FLP subsystem. Now with regard to "b", the system is
- * confident that the user is outside. But with regard to "a" is not confident
- * whether it is inside or outside the geofence. If the accuracy remains the
- * same for a sufficient period of time, the UNCERTAIN transition would be
- * triggered with the state set to Unknown. If the accuracy improves later, an
- * appropriate transition should be triggered. This "sufficient period of time"
- * is defined by the parameter in the add_geofence_area API.
- * In other words, Unknown state can be interpreted as a state in which the
- * FLP subsystem isn't confident enough that the user is either inside or
- * outside the Geofence. It moves to Unknown state only after the expiry of the
- * timeout.
- *
- * The geofence callback needs to be triggered for the ENTERED and EXITED
- * transitions, when the FLP system is confident that the user has entered
- * (Inside state) or exited (Outside state) the Geofence. An implementation
- * which uses a value of 95% as the confidence is recommended. The callback
- * should be triggered only for the transitions requested by the
- * add_geofence_area call.
- *
- * Even though the diagram and explanation talks about states and transitions,
- * the callee is only interested in the transistions. The states are mentioned
- * here for illustrative purposes.
- *
- * Startup Scenario: When the device boots up, if an application adds geofences,
- * and then we get an accurate FLP location fix, it needs to trigger the
- * appropriate (ENTERED or EXITED) transition for every Geofence it knows about.
- * By default, all the Geofences will be in the Unknown state.
- *
- * When the FLP system is unavailable, flp_geofence_status_callback should be
- * called to inform the upper layers of the same. Similarly, when it becomes
- * available the callback should be called. This is a global state while the
- * UNKNOWN transition described above is per geofence.
- *
- */
-#define FLP_GEOFENCE_TRANSITION_ENTERED (1L<<0)
-#define FLP_GEOFENCE_TRANSITION_EXITED (1L<<1)
-#define FLP_GEOFENCE_TRANSITION_UNCERTAIN (1L<<2)
-
-#define FLP_GEOFENCE_MONITOR_STATUS_UNAVAILABLE (1L<<0)
-#define FLP_GEOFENCE_MONITOR_STATUS_AVAILABLE (1L<<1)
-
-/**
- * The callback associated with the geofence.
- * Parameters:
- * geofence_id - The id associated with the add_geofence_area.
- * location - The current location as determined by the FLP subsystem.
- * transition - Can be one of FLP_GEOFENCE_TRANSITION_ENTERED, FLP_GEOFENCE_TRANSITION_EXITED,
- * FLP_GEOFENCE_TRANSITION_UNCERTAIN.
- * timestamp - Timestamp when the transition was detected; -1 if not available.
- * sources_used - Bitwise OR of FLP_TECH_MASK flags indicating which
- * subsystems were used.
- *
- * The callback should only be called when the caller is interested in that
- * particular transition. For instance, if the caller is interested only in
- * ENTERED transition, then the callback should NOT be called with the EXITED
- * transition.
- *
- * IMPORTANT: If a transition is triggered resulting in this callback, the
- * subsystem will wake up the application processor, if its in suspend state.
- */
-typedef void (*flp_geofence_transition_callback) (int32_t geofence_id, FlpLocation* location,
- int32_t transition, FlpUtcTime timestamp, uint32_t sources_used);
-
-/**
- * The callback associated with the availablity of one the sources used for geofence
- * monitoring by the FLP sub-system For example, if the GPS system determines that it cannot
- * monitor geofences because of lack of reliability or unavailability of the GPS signals,
- * it will call this callback with FLP_GEOFENCE_MONITOR_STATUS_UNAVAILABLE parameter and the
- * source set to FLP_TECH_MASK_GNSS.
- *
- * Parameters:
- * status - FLP_GEOFENCE_MONITOR_STATUS_UNAVAILABLE or FLP_GEOFENCE_MONITOR_STATUS_AVAILABLE.
- * source - One of the FLP_TECH_MASKS
- * last_location - Last known location.
- */
-typedef void (*flp_geofence_monitor_status_callback) (int32_t status, uint32_t source,
- FlpLocation* last_location);
-
-/**
- * The callback associated with the add_geofence call.
- *
- * Parameter:
- * geofence_id - Id of the geofence.
- * result - FLP_RESULT_SUCCESS
- * FLP_RESULT_ERROR_TOO_MANY_GEOFENCES - geofence limit has been reached.
- * FLP_RESULT_ID_EXISTS - geofence with id already exists
- * FLP_RESULT_INVALID_GEOFENCE_TRANSITION - the monitorTransition contains an
- * invalid transition
- * FLP_RESULT_ERROR - for other errors.
- */
-typedef void (*flp_geofence_add_callback) (int32_t geofence_id, int32_t result);
-
-/**
- * The callback associated with the remove_geofence call.
- *
- * Parameter:
- * geofence_id - Id of the geofence.
- * result - FLP_RESULT_SUCCESS
- * FLP_RESULT_ID_UNKNOWN - for invalid id
- * FLP_RESULT_ERROR for others.
- */
-typedef void (*flp_geofence_remove_callback) (int32_t geofence_id, int32_t result);
-
-
-/**
- * The callback associated with the pause_geofence call.
- *
- * Parameter:
- * geofence_id - Id of the geofence.
- * result - FLP_RESULT_SUCCESS
- * FLP_RESULT__ID_UNKNOWN - for invalid id
- * FLP_RESULT_INVALID_TRANSITION -
- * when monitor_transitions is invalid
- * FLP_RESULT_ERROR for others.
- */
-typedef void (*flp_geofence_pause_callback) (int32_t geofence_id, int32_t result);
-
-/**
- * The callback associated with the resume_geofence call.
- *
- * Parameter:
- * geofence_id - Id of the geofence.
- * result - FLP_RESULT_SUCCESS
- * FLP_RESULT_ID_UNKNOWN - for invalid id
- * FLP_RESULT_ERROR for others.
- */
-typedef void (*flp_geofence_resume_callback) (int32_t geofence_id, int32_t result);
-
-typedef struct {
- /** set to sizeof(FlpGeofenceCallbacks) */
- size_t size;
- flp_geofence_transition_callback geofence_transition_callback;
- flp_geofence_monitor_status_callback geofence_status_callback;
- flp_geofence_add_callback geofence_add_callback;
- flp_geofence_remove_callback geofence_remove_callback;
- flp_geofence_pause_callback geofence_pause_callback;
- flp_geofence_resume_callback geofence_resume_callback;
- flp_set_thread_event set_thread_event_cb;
- flp_capabilities_callback flp_capabilities_cb;
-} FlpGeofenceCallbacks;
-
-
-/** Type of geofence */
-typedef enum {
- TYPE_CIRCLE = 0,
-} GeofenceType;
-
-/** Circular geofence is represented by lat / long / radius */
-typedef struct {
- double latitude;
- double longitude;
- double radius_m;
-} GeofenceCircle;
-
-/** Represents the type of geofence and data */
-typedef struct {
- GeofenceType type;
- union {
- GeofenceCircle circle;
- } geofence;
-} GeofenceData;
-
-/** Geofence Options */
-typedef struct {
- /**
- * The current state of the geofence. For example, if
- * the system already knows that the user is inside the geofence,
- * this will be set to FLP_GEOFENCE_TRANSITION_ENTERED. In most cases, it
- * will be FLP_GEOFENCE_TRANSITION_UNCERTAIN. */
- int last_transition;
-
- /**
- * Transitions to monitor. Bitwise OR of
- * FLP_GEOFENCE_TRANSITION_ENTERED, FLP_GEOFENCE_TRANSITION_EXITED and
- * FLP_GEOFENCE_TRANSITION_UNCERTAIN.
- */
- int monitor_transitions;
-
- /**
- * Defines the best-effort description
- * of how soon should the callback be called when the transition
- * associated with the Geofence is triggered. For instance, if set
- * to 1000 millseconds with FLP_GEOFENCE_TRANSITION_ENTERED, the callback
- * should be called 1000 milliseconds within entering the geofence.
- * This parameter is defined in milliseconds.
- * NOTE: This is not to be confused with the rate that the GPS is
- * polled at. It is acceptable to dynamically vary the rate of
- * sampling the GPS for power-saving reasons; thus the rate of
- * sampling may be faster or slower than this.
- */
- int notification_responsivenes_ms;
-
- /**
- * The time limit after which the UNCERTAIN transition
- * should be triggered. This paramter is defined in milliseconds.
- */
- int unknown_timer_ms;
-
- /**
- * The sources to use for monitoring geofences. Its a BITWISE-OR
- * of FLP_TECH_MASK flags.
- */
- uint32_t sources_to_use;
-} GeofenceOptions;
-
-/** Geofence struct */
-typedef struct {
- int32_t geofence_id;
- GeofenceData* data;
- GeofenceOptions* options;
-} Geofence;
-
-/** Extended interface for FLP_Geofencing support */
-typedef struct {
- /** set to sizeof(FlpGeofencingInterface) */
- size_t size;
-
- /**
- * Opens the geofence interface and provides the callback routines
- * to the implemenation of this interface. Once called you should respond
- * by calling the flp_capabilities_callback in FlpGeofenceCallbacks to
- * specify the capabilities that your implementation supports.
- */
- void (*init)( FlpGeofenceCallbacks* callbacks );
-
- /**
- * Add a list of geofences.
- * Parameters:
- * number_of_geofences - The number of geofences that needed to be added.
- * geofences - Pointer to array of pointers to Geofence structure.
- */
- void (*add_geofences) (int32_t number_of_geofences, Geofence** geofences);
-
- /**
- * Pause monitoring a particular geofence.
- * Parameters:
- * geofence_id - The id for the geofence.
- */
- void (*pause_geofence) (int32_t geofence_id);
-
- /**
- * Resume monitoring a particular geofence.
- * Parameters:
- * geofence_id - The id for the geofence.
- * monitor_transitions - Which transitions to monitor. Bitwise OR of
- * FLP_GEOFENCE_TRANSITION_ENTERED, FLP_GEOFENCE_TRANSITION_EXITED and
- * FLP_GEOFENCE_TRANSITION_UNCERTAIN.
- * This supersedes the value associated provided in the
- * add_geofence_area call.
- */
- void (*resume_geofence) (int32_t geofence_id, int monitor_transitions);
-
- /**
- * Modify a particular geofence option.
- * Parameters:
- * geofence_id - The id for the geofence.
- * options - Various options associated with the geofence. See
- * GeofenceOptions structure for details.
- */
- void (*modify_geofence_option) (int32_t geofence_id, GeofenceOptions* options);
-
- /**
- * Remove a list of geofences. After the function returns, no notifications
- * should be sent.
- * Parameter:
- * number_of_geofences - The number of geofences that needed to be added.
- * geofence_id - Pointer to array of geofence_ids to be removed.
- */
- void (*remove_geofences) (int32_t number_of_geofences, int32_t* geofence_id);
-} FlpGeofencingInterface;
-
-__END_DECLS
-
-#endif /* ANDROID_INCLUDE_HARDWARE_FLP_H */
-