Correct NMEA DTM implementation

1. reference datum is always W84
2. local datum can be configured by DATUM_TYPE in gps.conf

Bug: 191696434
Test: Check NMEA sentence
CRs-Fixed: 2939812
Change-Id: Ic44c508336385fae00704b5d77db5452d7d9ca88
diff --git a/utils/loc_nmea.cpp b/utils/loc_nmea.cpp
index 6b5e60e..3cd31cd 100644
--- a/utils/loc_nmea.cpp
+++ b/utils/loc_nmea.cpp
@@ -940,7 +940,7 @@
     int lengthRemaining = bufSize;
     int length = 0;
     int datum_type;
-    char ref_datum[4] = {0};
+    char ref_datum[4] = {'W', '8', '4', '\0'};
     char local_datum[4] = {0};
     double lla_offset[3] = {0};
     char latHem, longHem;
@@ -951,21 +951,15 @@
     datum_type = loc_get_datum_type();
     switch (datum_type) {
         case LOC_GNSS_DATUM_WGS84:
-            ref_datum[0] = 'W';
-            ref_datum[1] = '8';
-            ref_datum[2] = '4';
-            local_datum[0] = 'P';
-            local_datum[1] = '9';
-            local_datum[2] = '0';
-            break;
-        case LOC_GNSS_DATUM_PZ90:
-            ref_datum[0] = 'P';
-            ref_datum[1] = '9';
-            ref_datum[2] = '0';
             local_datum[0] = 'W';
             local_datum[1] = '8';
             local_datum[2] = '4';
             break;
+        case LOC_GNSS_DATUM_PZ90:
+            local_datum[0] = 'P';
+            local_datum[1] = '9';
+            local_datum[2] = '0';
+            break;
         default:
             break;
     }
@@ -985,7 +979,7 @@
         lla_offset[1] -= 360.0;
     }
     lla_offset[2] = local_lla.alt - ref_lla.alt;
-    if (lla_offset[0] > 0.0) {
+    if (lla_offset[0] >= 0.0) {
         latHem = 'N';
     } else {
         latHem = 'S';
@@ -1565,23 +1559,21 @@
         convert_WGS84_to_PZ90(ecef_w84, ecef_p90);
         convert_Ecef_to_Lla(ecef_p90, lla_p90);
 
+        ref_lla.lat = location.gpsLocation.latitude;
+        ref_lla.lon = location.gpsLocation.longitude;
+        ref_lla.alt = location.gpsLocation.altitude;
+
         switch (datum_type) {
             case LOC_GNSS_DATUM_WGS84:
-                ref_lla.lat = location.gpsLocation.latitude;
-                ref_lla.lon = location.gpsLocation.longitude;
-                ref_lla.alt = location.gpsLocation.altitude;
-                local_lla.lat = lla_p90.lat / M_PI * 180.0;
-                local_lla.lon = lla_p90.lon / M_PI * 180.0;
-                local_lla.alt = lla_p90.alt;
-                break;
-            case LOC_GNSS_DATUM_PZ90:
-                ref_lla.lat = lla_p90.lat / M_PI * 180.0;
-                ref_lla.lon = lla_p90.lon / M_PI * 180.0;
-                ref_lla.alt = lla_p90.alt;
                 local_lla.lat = location.gpsLocation.latitude;
                 local_lla.lon = location.gpsLocation.longitude;
                 local_lla.alt = location.gpsLocation.altitude;
                 break;
+            case LOC_GNSS_DATUM_PZ90:
+                local_lla.lat = lla_p90.lat / M_PI * 180.0;
+                local_lla.lon = lla_p90.lon / M_PI * 180.0;
+                local_lla.alt = lla_p90.alt;
+                break;
             default:
                 break;
         }