Hal layer for gnss replay

Test: Added following kernel cmdline and tested on local CF
gnss_cmdline.serdev=serial8250/serial0/serial0-0
gnss_cmdline.type=0
serdev_ttyport.pdev_tty_port=ttyS1

Change-Id: I3766c31672aa91341403105759b2fd997e7f8879
diff --git a/gnss/2.1/default/Gnss.h b/gnss/2.1/default/Gnss.h
index bd5e6e8..9af0d46 100644
--- a/gnss/2.1/default/Gnss.h
+++ b/gnss/2.1/default/Gnss.h
@@ -24,6 +24,7 @@
 #include <thread>
 #include "GnssAntennaInfo.h"
 #include "GnssConfiguration.h"
+#include "NmeaFixInfo.h"
 
 namespace android {
 namespace hardware {
@@ -31,9 +32,14 @@
 namespace V2_1 {
 
 using GnssSvInfo = IGnssCallback::GnssSvInfo;
+using ::android::hardware::gnss::common::NmeaFixInfo;
 
 namespace implementation {
 
+constexpr int INPUT_BUFFER_SIZE = 128;
+constexpr char CMD_GET_LOCATION[] = "CMD_GET_LOCATION";
+constexpr char GNSS_PATH[] = "/dev/gnss0";
+
 struct Gnss : public IGnss {
     Gnss();
     ~Gnss();
@@ -95,6 +101,7 @@
     Return<sp<V2_1::IGnssAntennaInfo>> getExtensionGnssAntennaInfo() override;
 
   private:
+    std::unique_ptr<V2_0::GnssLocation> getLocationFromHW();
     void reportLocation(const V2_0::GnssLocation&) const;
     void reportLocation(const V1_0::GnssLocation&) const;
     void reportSvStatus(const hidl_vec<GnssSvInfo>&) const;
@@ -106,7 +113,10 @@
     std::atomic<long> mMinIntervalMs;
     sp<GnssConfiguration> mGnssConfiguration;
     std::atomic<bool> mIsActive;
+    std::atomic<bool> mHardwareModeOn;
+    std::atomic<int> mGnssFd;
     std::thread mThread;
+
     mutable std::mutex mMutex;
     hidl_vec<GnssSvInfo> filterBlacklistedSatellitesV2_1(hidl_vec<GnssSvInfo> gnssSvInfoList);
 };