MultiHal 2.0 - activate, batch, flush methods of HalProxy

These three methods of HalProxy simply call the apropriate ISensors
methods of the subhal pointed to by sensorHandle.

Test: Loaded onto device and observed no crashing.
Bug: 136511617
Change-Id: If90652554ea18c22b24aead0074ab9847eae0a4f
diff --git a/sensors/2.0/multihal/HalProxy.cpp b/sensors/2.0/multihal/HalProxy.cpp
index 964f589..dcdccac 100644
--- a/sensors/2.0/multihal/HalProxy.cpp
+++ b/sensors/2.0/multihal/HalProxy.cpp
@@ -123,9 +123,9 @@
     return Result::INVALID_OPERATION;
 }
 
-Return<Result> HalProxy::activate(int32_t /* sensorHandle */, bool /* enabled */) {
-    // TODO: Proxy API call to appropriate sub-HAL.
-    return Result::INVALID_OPERATION;
+Return<Result> HalProxy::activate(int32_t sensorHandle, bool enabled) {
+    return getSubHalForSensorHandle(sensorHandle)
+            ->activate(zeroOutFirstByte(sensorHandle), enabled);
 }
 
 Return<Result> HalProxy::initialize(
@@ -163,15 +163,14 @@
     return result;
 }
 
-Return<Result> HalProxy::batch(int32_t /* sensorHandle */, int64_t /* samplingPeriodNs */,
-                               int64_t /* maxReportLatencyNs */) {
-    // TODO: Proxy API call to appropriate sub-HAL.
-    return Result::INVALID_OPERATION;
+Return<Result> HalProxy::batch(int32_t sensorHandle, int64_t samplingPeriodNs,
+                               int64_t maxReportLatencyNs) {
+    return getSubHalForSensorHandle(sensorHandle)
+            ->batch(zeroOutFirstByte(sensorHandle), samplingPeriodNs, maxReportLatencyNs);
 }
 
-Return<Result> HalProxy::flush(int32_t /* sensorHandle */) {
-    // TODO: Proxy API call to appropriate sub-HAL.
-    return Result::INVALID_OPERATION;
+Return<Result> HalProxy::flush(int32_t sensorHandle) {
+    return getSubHalForSensorHandle(sensorHandle)->flush(zeroOutFirstByte(sensorHandle));
 }
 
 Return<Result> HalProxy::injectSensorData(const Event& /* event */) {