Implements HidlSensorHalWrapper

Bug: 195593357
Test: manually
Change-Id: Id3116859a054635b21690676aa841e32451f2407
diff --git a/services/sensorservice/ISensorHalWrapper.h b/services/sensorservice/ISensorHalWrapper.h
index c9e089e..7a51685 100644
--- a/services/sensorservice/ISensorHalWrapper.h
+++ b/services/sensorservice/ISensorHalWrapper.h
@@ -30,26 +30,45 @@
  */
 class ISensorHalWrapper {
 public:
-    class ICallback : public ISensorsCallback {
-
-        void onDynamicSensorsConnected(
+    class SensorDeviceCallback {
+    public:
+        virtual void onDynamicSensorsConnected(
                 const std::vector<sensor_t> &dynamicSensorsAdded) = 0;
 
-        void onDynamicSensorsDisconnected(
+        virtual void onDynamicSensorsDisconnected(
                 const std::vector<int32_t> &dynamicSensorHandlesRemoved) = 0;
+
+        virtual ~SensorDeviceCallback(){};
     };
 
+    enum HalConnectionStatus {
+        CONNECTED,         // Successfully connected to the HAL
+        DOES_NOT_EXIST,    // Could not find the HAL
+        FAILED_TO_CONNECT, // Found the HAL but failed to connect/initialize
+        UNKNOWN,
+    };
+
+    virtual ~ISensorHalWrapper(){};
+
     /**
      * Connects to the underlying sensors HAL. This should also be used for any reconnections
      * due to HAL resets.
      */
-    virtual bool connect(ICallback *callback) = 0;
+    virtual bool connect(SensorDeviceCallback *callback) = 0;
+
+    virtual void prepareForReconnect() = 0;
+
+    virtual bool supportsPolling() = 0;
+
+    virtual bool supportsMessageQueues() = 0;
 
     /**
      * Polls for available sensor events. This could be using the traditional sensors
      * polling or from a FMQ.
      */
-    virtual ssize_t poll(sensors_event_t* buffer, size_t count) = 0;
+    virtual ssize_t poll(sensors_event_t *buffer, size_t count) = 0;
+
+    virtual ssize_t pollFmq(sensors_event_t *buffer, size_t maxNumEventsToRead) = 0;
 
     /**
      * The below functions directly mirrors the sensors HAL definitions.
@@ -70,11 +89,20 @@
     virtual status_t registerDirectChannel(const sensors_direct_mem_t *memory,
                                            int32_t *channelHandle) = 0;
 
-    virtual void unregisterDirectChannel(int32_t channelHandle) = 0;
+    virtual status_t unregisterDirectChannel(int32_t channelHandle) = 0;
 
     virtual status_t configureDirectChannel(int32_t sensorHandle, int32_t channelHandle,
                                             const struct sensors_direct_cfg_t *config) = 0;
-}
+
+    virtual void onDynamicSensorsConnected(const std::vector<sensor_t> &dynamicSensorsAdded) = 0;
+
+    virtual void onDynamicSensorsDisconnected(
+            const std::vector<int32_t> &dynamicSensorHandlesRemoved) = 0;
+
+    virtual void writeWakeLockHandled(uint32_t count) = 0;
+
+    std::atomic_bool mReconnecting = false;
+};
 
 } // namespace android