class MLocation extends Measurement implements Comparable<MLocation> {

    @NonNull
    @Override
    public String toRow() {
        // millis,nano,sensor,pressure,lat,lon,hMSL,velN,velE,numSV,gX,gY,gZ,rotX,rotY,rotZ,acc
        final StringBuilder sb = new StringBuilder();
        sb.append(millis);
        sb.append(",,gps,,");
        sb.append(Numbers.format6.format(latitude));
        sb.append(',');
        sb.append(Numbers.format6.format(longitude));
        sb.append(',');
        sb.append(Numbers.format3.format(altitude_gps));
        sb.append(',');
        if (Numbers.isReal(vN)) {
            sb.append(Numbers.format2.format(vN));
        }
        sb.append(',');
        if (Numbers.isReal(vE)) {
            sb.append(Numbers.format2.format(vE));
        }
        sb.append(',');
        if (satellitesUsed != -1) {
            sb.append(satellitesUsed);
        }
        return sb.toString();
    }

    public  MLocation(long millis, double latitude, double longitude, double altitude_gps,
                     double climb, // Usually taken from altimeter
                     double vN, double vE,
                     float hAcc, float pdop, float hdop, float vdop,
                     int satellitesUsed, int satellitesInView);
    public  MLocation();

}