     longitude = getDoubleNumber(&GPGGAstr[tmp]);
     sprintf(buff_tmp, "\tlatitude = %10.4f, longitude = %10.4f", latitude, longitude);
     Serial.println(buff_tmp); 
+    //// the legacy geospatial format for MongoDB v2.4 and before
+    //sprintf(str_GPS_location,"[ %5.6f , %5.6f ]", latitude/100, longitude/100);
+    //// follow GeoJSON format
+    sprintf(str_GPS_location,"{ type:\"Point\",  coordinates: [%5.6f , %5.6f ] }", latitude/100, longitude/100);
+
+    tmp = getComma(6, GPGGAstr);
+    num = getIntNumber(&GPGGAstr[tmp]);    
+    sprintf(buff_tmp, "\tGPS fix quality = %d", num);
+    sprintf(str_GPS_quality,"%d",num);
     
     tmp = getComma(7, GPGGAstr);
     num = getIntNumber(&GPGGAstr[tmp]);    
     sprintf(buff_tmp, "\tsatellites number = %d", num);
+    sprintf(str_GPS_satellite,"%d",num);
+
+    tmp = getComma(9, GPGGAstr);
+    num = getIntNumber(&GPGGAstr[tmp]);    
+    sprintf(buff_tmp, "\taltitude above mean sea level = %d meters", num);
+    sprintf(str_GPS_altitude,"%d",num);
+
     if(num>0 || GPS_SIGNAL_NOCHECK ) {
       gps_ready=1;
     }else{

        msg_tmp.concat((char*)GPS_FIX_INFOR);
         
      }
      //msg_tmp.concat("|gpgga=");
      //msg_tmp.concat((char*)info.GPGGA);
      //msg_tmp.concat("|gpgsa=");
      //msg_tmp.concat((char*)info.GPGSA);

double ground_speed;
#define GPS_SIGNAL_NOCHECK 1   // 0: log or send only when GPS have signal, 1: always log and send even when GPS have no signal
#define GPS_FIX_INFOR "$GPGGA,064205.096,0,N,0,E,0,0,,207.8,M,15.0,M,,*4F\r" // If the device don't have GPS, setup the FIX GPS information here. The checksum don't need to be correct  
/// new variables starting from v0.7.0
char str_GPS_location[60];
char str_GPS_quality[5];
char str_GPS_satellite[5];
char str_GPS_altitude[10];


//----- WIFI -----
//System default wifi setting: SSID=LASS, PASS=LASS123456, WIFI_AUTH=LWIFI_WPA
