Define the ISensorsCallback
The ISensorsCallback will be used to push notifications into the
sensors framework, such as when dynamic sensors are connected.
Bug: 111070257
Test: Compiles
Change-Id: I681e6de341a80016983a3ab7fa45284ee9104918
diff --git a/sensors/2.0/Android.bp b/sensors/2.0/Android.bp
index f614834..3b948a9 100644
--- a/sensors/2.0/Android.bp
+++ b/sensors/2.0/Android.bp
@@ -9,6 +9,7 @@
srcs: [
"types.hal",
"ISensors.hal",
+ "ISensorsCallback.hal",
],
interfaces: [
"android.hardware.sensors@1.0",
diff --git a/sensors/2.0/ISensors.hal b/sensors/2.0/ISensors.hal
index 24454b4..2a57251 100644
--- a/sensors/2.0/ISensors.hal
+++ b/sensors/2.0/ISensors.hal
@@ -22,6 +22,7 @@
import @1.0::Result;
import @1.0::SensorInfo;
import @1.0::SharedMemInfo;
+import @2.0::ISensorsCallback;
interface ISensors {
/**
@@ -59,8 +60,11 @@
activate(int32_t sensorHandle, bool enabled) generates (Result result);
/**
- * Initialize the Fast Message Queues (FMQ) that are used to send data
- * between the framework and the HAL.
+ * Initialize the Sensors HAL's Fast Message Queues (FMQ) and callback.
+ *
+ * The Fast Message Queues (FMQ) that are used to send data between the
+ * framework and the HAL. The callback is used by the HAL to notify the
+ * framework of asynchronous events, such as a dynamic sensor connection.
*
* The Event FMQ is used to transport sensor events from the HAL to the
* framework. The Event FMQ is created using the eventQueueDescriptor.
@@ -81,6 +85,9 @@
* unprocessed WAKE_UP events and release its wake_lock if the current
* count of unprocessed WAKE_UP events is zero.
*
+ * The ISensorsCallback is used by the HAL to notify the framework of
+ * asynchronous events, such as a dynamic sensor connection.
+ *
* The name of any wake_lock acquired by the Sensors HAL for WAKE_UP events
* must begin with "SensorsHAL_WAKEUP".
*
@@ -90,14 +97,14 @@
* released.
*
* If either the Event FMQ or the Wake Lock FMQ is already initialized when
- * initializeMessageQueues is invoked, then both existing FMQs must be
- * discarded and the new descriptors must be used to create new FMQs within
- * the HAL. The number of outstanding WAKE_UP events should also be reset to
- * zero, and any outstanding wake_locks held as a result of WAKE_UP events
- * should be released.
+ * initialize is invoked, then both existing FMQs must be discarded and the
+ * new descriptors must be used to create new FMQs within the HAL. The
+ * number of outstanding WAKE_UP events should also be reset to zero, and
+ * any outstanding wake_locks held as a result of WAKE_UP events should be
+ * released.
*
- * initializeMessageQueues must be thread safe and prevent concurrent calls
- * to initializeMessageQueues from simultaneously modifying state.
+ * initialize must be thread safe and prevent concurrent calls
+ * to initialize from simultaneously modifying state.
*
* @param eventQueueDescriptor Fast Message Queue descriptor that is used to
* create the Event FMQ which is where sensor events are written. The
@@ -107,14 +114,18 @@
* create the Wake Lock FMQ which is where wake_lock events are read
* from. The descriptor is obtained from the framework's FMQ that is
* used to write wake_lock events.
+ * @param sensorsCallback sensors callback that receives asynchronous data
+ * from the Sensors HAL.
* @return result OK on success; BAD_VALUE if descriptor is invalid (such
* as null)
*/
@entry
@callflow(next = {"getSensorsList"})
- initializeMessageQueues(fmq_sync<Event> eventQueueDescriptor,
- fmq_sync<uint32_t> wakeLockDescriptor)
- generates (Result result);
+ initialize(fmq_sync<Event> eventQueueDescriptor,
+ fmq_sync<uint32_t> wakeLockDescriptor,
+ ISensorsCallback sensorsCallback)
+ generates
+ (Result result);
/**
* Sets a sensor’s parameters, including sampling frequency and maximum
diff --git a/sensors/2.0/ISensorsCallback.hal b/sensors/2.0/ISensorsCallback.hal
new file mode 100644
index 0000000..e0bd98f
--- /dev/null
+++ b/sensors/2.0/ISensorsCallback.hal
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 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.sensors@2.0;
+
+import @1.0::SensorInfo;
+
+interface ISensorsCallback {
+ /**
+ * Notify the framework that new dynamic sensors have been connected.
+ *
+ * If a dynamic sensor was previously connected and has not been
+ * disconnected, then that sensor must not be included in sensorInfos.
+ *
+ * @param sensorInfos vector of SensorInfo for each dynamic sensor that
+ * was connected.
+ */
+ oneway onDynamicSensorsConnected(vec<SensorInfo> sensorInfos);
+
+ /**
+ * Notify the framework that previously connected dynamic sensors have been
+ * disconnected.
+ *
+ * If a dynamic sensor was previously disconnected and has not been
+ * reconnected, then that sensor must not be included in sensorHandles.
+ *
+ * The HAL must ensure that all sensor events from departing dynamic
+ * sensors have been written to the Event FMQ before calling
+ * onDynamicSensorsDisconnected.
+ *
+ * @param sensorHandles vector of sensor handles for each dynamic sensors
+ * that was disconnected.
+ */
+ oneway onDynamicSensorsDisconnected(vec<int32_t> sensorHandles);
+};