Merge "Clear notification count to handle different flows" into oc-dev
diff --git a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
index c8e44d3..c350e31 100644
--- a/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
+++ b/camera/provider/2.4/vts/functional/VtsHalCameraProviderV2_4TargetTest.cpp
@@ -1680,7 +1680,8 @@
                     ASSERT_EQ(Status::OK, status);
                     const camera_metadata_t* metadata = (camera_metadata_t*) chars.data();
                     size_t expectedSize = chars.size();
-                    ASSERT_EQ(0, validate_camera_metadata_structure(metadata, &expectedSize));
+                    int result = validate_camera_metadata_structure(metadata, &expectedSize);
+                    ASSERT_TRUE(result == 0 || result == CAMERA_METADATA_VALIDATION_SHIFTED);
                     size_t entryCount = get_camera_metadata_entry_count(metadata);
                     // TODO: we can do better than 0 here. Need to check how many required
                     // characteristics keys we've defined.
@@ -1997,8 +1998,9 @@
                             const camera_metadata_t* metadata =
                                 (camera_metadata_t*) req.data();
                             size_t expectedSize = req.size();
-                            ASSERT_EQ(0, validate_camera_metadata_structure(
-                                    metadata, &expectedSize));
+                            int result = validate_camera_metadata_structure(
+                                    metadata, &expectedSize);
+                            ASSERT_TRUE(result == 0 || result == CAMERA_METADATA_VALIDATION_SHIFTED);
                             size_t entryCount = get_camera_metadata_entry_count(metadata);
                             // TODO: we can do better than 0 here. Need to check how many required
                             // request keys we've defined for each template
diff --git a/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
index 094e8a1..e67f94f 100644
--- a/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
+++ b/nfc/1.0/vts/functional/VtsHalNfcV1_0TargetTest.cpp
@@ -46,8 +46,6 @@
     { 0x20, 0x01, 0x00 }
 #define INVALID_COMMAND \
   { 0x20, 0x00, 0x00 }
-#define FAULTY_DATA_PACKET \
-  { 0x00, 0x00, 0xFF }
 
 #define LOOP_BACK_HEADER_SIZE 3
 #define SYNTAX_ERROR 5
@@ -271,8 +269,8 @@
 
 /*
  * WriteInvalidAndThenValidCommand:
- * Sends an Faulty Data Packet
- * Waits for CORE_INTERFACE_ERROR_NTF
+ * Sends an Invalid command
+ * Waits for response
  * Checks SYNTAX_ERROR status
  * Repeat for 100 times appending 0xFF each time to the packet
  * Send CORE_CONN_CREATE_CMD for loop-back mode
@@ -303,7 +301,7 @@
     EXPECT_EQ((int)NfcStatus::OK, res.args->last_data_[3]);
 
     // Send an Error Data Packet
-    cmd = FAULTY_DATA_PACKET;
+    cmd = INVALID_COMMAND;
     data = cmd;
     size_t size = data.size();
 
@@ -311,13 +309,10 @@
         data.resize(++size);
         data[size - 1] = 0xFF;
         EXPECT_EQ(data.size(), nfc_->write(data));
-        // Wait for CORE_INTERFACE_ERROR_NTF
+        // Wait for response with SYNTAX_ERROR
         res = nfc_cb_->WaitForCallback(kCallbackNameSendData);
         EXPECT_TRUE(res.no_timeout);
-        EXPECT_EQ(5ul, res.args->last_data_.size());
-        EXPECT_EQ(0x60, res.args->last_data_[0]);
-        EXPECT_EQ(0x08, res.args->last_data_[1]);
-        EXPECT_EQ(0x02, res.args->last_data_[2]);
+        EXPECT_EQ(4ul, res.args->last_data_.size());
         EXPECT_EQ(SYNTAX_ERROR, res.args->last_data_[3]);
   }
 
diff --git a/sensors/1.0/default/convert.cpp b/sensors/1.0/default/convert.cpp
index 3d859ec..047374f 100644
--- a/sensors/1.0/default/convert.cpp
+++ b/sensors/1.0/default/convert.cpp
@@ -67,9 +67,11 @@
     typedef ::android::hardware::sensors::V1_0::SensorType SensorType;
     typedef ::android::hardware::sensors::V1_0::MetaDataEventType MetaDataEventType;
 
-    dst->sensorHandle = src.sensor;
-    dst->sensorType = (SensorType)src.type;
-    dst->timestamp = src.timestamp;
+    *dst = {
+        .sensorHandle = src.sensor,
+        .sensorType = (SensorType)src.type,
+        .timestamp = src.timestamp
+    };
 
     switch (dst->sensorType) {
         case SensorType::META_DATA:
@@ -206,13 +208,13 @@
 }
 
 void convertToSensorEvent(const Event &src, sensors_event_t *dst) {
-  dst->version = sizeof(sensors_event_t);
-  dst->sensor = src.sensorHandle;
-  dst->type = (int32_t)src.sensorType;
-  dst->reserved0 = 0;
-  dst->timestamp = src.timestamp;
-  dst->flags = 0;
-  dst->reserved1[0] = dst->reserved1[1] = dst->reserved1[2] = 0;
+  *dst = {
+      .version = sizeof(sensors_event_t),
+      .sensor = src.sensorHandle,
+      .type = (int32_t)src.sensorType,
+      .reserved0 = 0,
+      .timestamp = src.timestamp
+  };
 
   switch (src.sensorType) {
       case SensorType::META_DATA:
diff --git a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
index 06a9d7e..2cf4ef9 100644
--- a/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
+++ b/sensors/1.0/vts/functional/VtsHalSensorsV1_0TargetTest.cpp
@@ -697,6 +697,7 @@
 SensorFlagBits SensorsHidlTest::expectedReportModeForType(SensorType type) {
   switch (type) {
     case SensorType::ACCELEROMETER:
+    case SensorType::ACCELEROMETER_UNCALIBRATED:
     case SensorType::GYROSCOPE:
     case SensorType::MAGNETIC_FIELD:
     case SensorType::ORIENTATION:
@@ -719,7 +720,6 @@
     case SensorType::AMBIENT_TEMPERATURE:
     case SensorType::HEART_RATE:
     case SensorType::DEVICE_ORIENTATION:
-    case SensorType::MOTION_DETECT:
     case SensorType::STEP_COUNTER:
     case SensorType::LOW_LATENCY_OFFBODY_DETECT:
       return SensorFlagBits::ON_CHANGE_MODE;
@@ -728,6 +728,8 @@
     case SensorType::WAKE_GESTURE:
     case SensorType::GLANCE_GESTURE:
     case SensorType::PICK_UP_GESTURE:
+    case SensorType::MOTION_DETECT:
+    case SensorType::STATIONARY_DETECT:
       return SensorFlagBits::ONE_SHOT_MODE;
 
     case SensorType::STEP_DETECTOR: