Snap for 10367700 from 796474c73c20d012093dbcf54bad360ddda9e30e to udc-release

Change-Id: I8cc6360b10bef0e47fc1addaccaadea6807f5291
diff --git a/gnss/GnssMeasurementInterface.cpp b/gnss/GnssMeasurementInterface.cpp
index c280ceb..dcb91e9 100644
--- a/gnss/GnssMeasurementInterface.cpp
+++ b/gnss/GnssMeasurementInterface.cpp
@@ -42,7 +42,8 @@
     data.measurements.resize(nMeasurements);
 }
 
-GnssMeasurement makeGnssMeasurement(const int svid,
+GnssMeasurement makeGnssMeasurement(const bool enableCorrVecOutputs,
+                                    const int svid,
                                     const int state,
                                     const int64_t receivedSvTimeInNs,
                                     const int64_t receivedSvTimeUncertaintyInNs,
@@ -76,24 +77,28 @@
     m.accumulatedDeltaRangeUncertaintyM = accumulatedDeltaRangeUncertaintyM;
     m.multipathIndicator = static_cast<GnssMultipathIndicator>(multipathIndicator);
 
+    if (enableCorrVecOutputs) {
+        const CorrelationVector correlationVector1 = {
+                .frequencyOffsetMps = 10,
+                .samplingWidthM = 30,
+                .samplingStartM = 0,
+                .magnitude = {0, 5000, 10000, 5000, 0, 0, 3000, 0}};
+
+        const CorrelationVector correlationVector2 = {
+                .frequencyOffsetMps = 20,
+                .samplingWidthM = 30,
+                .samplingStartM = -10,
+                .magnitude = {0, 3000, 5000, 3000, 0, 0, 1000, 0}};
+
+        m.correlationVectors = {correlationVector1, correlationVector2};
+        m.flags = GnssMeasurement::HAS_CORRELATION_VECTOR;
+    }
+
     return m;
 }
 
 }  // namsepace
 
-GnssMeasurementInterface::GnssMeasurementInterface() {
-    mGnssData.resize(1);
-
-    initGnssData(mGnssData[0], 139287, 116834000000, -1189181444165780000, 5.26068202130163, 7);
-    mGnssData[0].measurements[0] = makeGnssMeasurement(22,  47, 3927349114,      29, 29.9917297363281,  245.509362821673,  0.148940800975766, 1,  6620.74237064615,  0.00271145859733223, 0, 1);
-    mGnssData[0].measurements[1] = makeGnssMeasurement(23,  47, 3920005435,      14, 36.063377380371,  -731.947951627658, 0.0769754027959242, 1,  -23229.096048105,  0.00142954161856323, 0, 1);
-    mGnssData[0].measurements[2] = makeGnssMeasurement(25,  47, 3923720994,      56, 24.5171585083007, -329.789995021822,  0.277918601850871, 1, -15511.1976492851,  0.00509250536561012, 0, 1);
-    mGnssData[0].measurements[3] = makeGnssMeasurement(31,  47, 3925772934,      11, 37.9193840026855,  -380.23772244582, 0.0602980729893803, 1, -11325.9094456612,  0.00115450704470276, 0, 1);
-    mGnssData[0].measurements[4] = makeGnssMeasurement(32,  47, 3919018415,      21, 32.8980560302734,  581.800347848025,  0.109060249597082, 1,  15707.8963147985,  0.00205808319151401, 0, 1);
-    mGnssData[0].measurements[5] = makeGnssMeasurement(10, 227, 69142929947304, 127, 23.432445526123,    259.17838762857,   0.31591691295607, 4,  8152.78081298147, 3.40282346638528E+38, 0, 3);
-    mGnssData[0].measurements[6] = makeGnssMeasurement(2,  227, 69142935176327,  41, 33.180908203125,  -53.8773853795901,  0.104984458760586, 1, -1708.08166640048,  0.00196184404194355, 0, 3);
-}
-
 GnssMeasurementInterface::~GnssMeasurementInterface() {
     closeImpl();
 }
@@ -143,14 +148,21 @@
         return ndk::ScopedAStatus::fromExceptionCode(FAILURE(IGnss::ERROR_INVALID_ARGUMENT));
     }
 
-    if (enableCorrVecOutputs) {
-        return ndk::ScopedAStatus::fromExceptionCode(FAILURE(IGnss::ERROR_INVALID_ARGUMENT));
-    }
-
     if (intervalMs <= 0) {
         return ndk::ScopedAStatus::fromExceptionCode(FAILURE(IGnss::ERROR_INVALID_ARGUMENT));
     }
 
+    mGnssData.resize(1);
+
+    initGnssData(mGnssData[0], 139287, 116834000000, -1189181444165780000, 5.26068202130163, 7);
+    mGnssData[0].measurements[0] = makeGnssMeasurement(enableCorrVecOutputs, 22,  47, 3927349114,      29, 29.9917297363281,  245.509362821673,  0.148940800975766, 1,  6620.74237064615,  0.00271145859733223, 0, 1);
+    mGnssData[0].measurements[1] = makeGnssMeasurement(enableCorrVecOutputs, 23,  47, 3920005435,      14, 36.063377380371,  -731.947951627658, 0.0769754027959242, 1,  -23229.096048105,  0.00142954161856323, 0, 1);
+    mGnssData[0].measurements[2] = makeGnssMeasurement(enableCorrVecOutputs, 25,  47, 3923720994,      56, 24.5171585083007, -329.789995021822,  0.277918601850871, 1, -15511.1976492851,  0.00509250536561012, 0, 1);
+    mGnssData[0].measurements[3] = makeGnssMeasurement(enableCorrVecOutputs, 31,  47, 3925772934,      11, 37.9193840026855,  -380.23772244582, 0.0602980729893803, 1, -11325.9094456612,  0.00115450704470276, 0, 1);
+    mGnssData[0].measurements[4] = makeGnssMeasurement(enableCorrVecOutputs, 32,  47, 3919018415,      21, 32.8980560302734,  581.800347848025,  0.109060249597082, 1,  15707.8963147985,  0.00205808319151401, 0, 1);
+    mGnssData[0].measurements[5] = makeGnssMeasurement(enableCorrVecOutputs, 10, 227, 69142929947304, 127, 23.432445526123,    259.17838762857,   0.31591691295607, 4,  8152.78081298147, 3.40282346638528E+38, 0, 3);
+    mGnssData[0].measurements[6] = makeGnssMeasurement(enableCorrVecOutputs, 2,  227, 69142935176327,  41, 33.180908203125,  -53.8773853795901,  0.104984458760586, 1, -1708.08166640048,  0.00196184404194355, 0, 3);
+
     const Clock::duration interval = std::chrono::milliseconds(intervalMs);
 
     closeImpl();
diff --git a/gnss/GnssMeasurementInterface.h b/gnss/GnssMeasurementInterface.h
index 4bdd206..7e9aff2 100644
--- a/gnss/GnssMeasurementInterface.h
+++ b/gnss/GnssMeasurementInterface.h
@@ -27,7 +27,7 @@
 namespace implementation {
 
 struct GnssMeasurementInterface : public BnGnssMeasurementInterface {
-    GnssMeasurementInterface();
+    GnssMeasurementInterface() = default;
     ~GnssMeasurementInterface();
 
     ndk::ScopedAStatus setCallback(const std::shared_ptr<IGnssMeasurementCallback>& callback,