fix(bkgpslog):Fix malformed xml by saving 1 file per buffer round
[EVA-2020-02.git] / exec / bkgpslog
index 1b71175c8b59ad3546029d2a1c1bf859c50c4cb2..d5e8d590dd0de6ca93a2d8d49151f94452418263 100755 (executable)
@@ -128,7 +128,7 @@ echoerr() {
 } # Define stderr message function.
 showUsage() {
     echoerr "USAGE:"
 } # Define stderr message function.
 showUsage() {
     echoerr "USAGE:"
-    echoerr "    bkgpslog.sh [ options ]"
+    echoerr "    bkgpslog [ options ]"
     echoerr
     echoerr "OPTIONS:"
     echoerr "    -h, --help"
     echoerr
     echoerr "OPTIONS:"
     echoerr "    -h, --help"
@@ -176,7 +176,7 @@ processArguments() {
            --h | --help) showUsage; exit 1;; # Display usage.
            --version) showVersion; exit 1;; # Show version
            --v | --verbose) OPTION_VERBOSE="true"; vbm "DEBUG:Verbose mode enabled.";; # Enable verbose mode.
            --h | --help) showUsage; exit 1;; # Display usage.
            --version) showVersion; exit 1;; # Show version
            --v | --verbose) OPTION_VERBOSE="true"; vbm "DEBUG:Verbose mode enabled.";; # Enable verbose mode.
-           --o | --output) if [ -d "$2" ]; then DIROUT="$2"; fi ;; # Define output directory.
+           --o | --output) if [ -d "$2" ]; then DIROUT="$2"; vbm "DEBUG:DIROUT:$DIROUT"; shift; fi ;; # Define output directory.
            *) echoerr "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options.
        esac
        shift
            *) echoerr "ERROR: Unrecognized argument."; exit 1;; # Handle unrecognized options.
        esac
        shift
@@ -228,24 +228,36 @@ dateTimeShort(){
 main() {
     processArguments "$@" # Process arguments.
     if checkapp gpspipe && checkdir "$DIROUT"; then
 main() {
     processArguments "$@" # Process arguments.
     if checkapp gpspipe && checkdir "$DIROUT"; then
-       # Determine output file paths
-       FILEOUT_NMEA="$(dateTimeShort)".."$SCRIPT_HOSTNAME"_location.nmea ;
-       #FILEOUT_GPX="" ;
-       #FILEOUT_KML="" ;
+
 
        # Determine script lifespan (note: exit if <= 0 since 'timeout' runs forever if provided "0s".
        #if ! scriptTTL="$(timeUntilMidnight)"; then yell "ERROR: timeUntilMidnight exit code $?"; exit 1; fi 
 
        # Determine script lifespan (note: exit if <= 0 since 'timeout' runs forever if provided "0s".
        #if ! scriptTTL="$(timeUntilMidnight)"; then yell "ERROR: timeUntilMidnight exit code $?"; exit 1; fi 
-       scriptTTL="60"; #DEBUG DEBUG DEBUG DEBUG        
+       scriptTTL="3600"; # DEBUG DEBUG DEBUG DEBUG
         
        # Determine buffer lifespan
         
        # Determine buffer lifespan
-       bufferTTL="15";
+       bufferTTL="60";
 
 
-       # Record gps data until life ends
+       # Record gps data until script lifespan ends
        declare debugCounter; debugCounter="0"
        while [[ "$SECONDS" -lt "$scriptTTL" ]]; do
            ((debugCounter++))
        declare debugCounter; debugCounter="0"
        while [[ "$SECONDS" -lt "$scriptTTL" ]]; do
            ((debugCounter++))
-           timeout "$bufferTTL""s" gpspipe -r 1>> "$DIROUT"/"$FILEOUT_NMEA""$debugCounter"
-           echo "do stuff" 1>&2;
+           # Fill buffer
+           buffer="$(timeout "$bufferTTL""s" gpspipe -r)"; # Record gpspipe nmea data to buffer for bufferTTL seconds
+           # Process buffer
+           buffer_GPX="$(echo "$buffer" | gpsbabel -i nmea -f - -o gpx -F - )"; # Convert buffer to GPX format
+           buffer_KML="$(echo "$buffer" | gpsbabel -i nmea -f - -o kml -F - )"; # Convert buffer to KML format
+           # Determine output file paths
+           FILEOUT_BASENAME="$(dateTimeShort)".."$SCRIPT_HOSTNAME"_location ;
+           FILEOUT_NMEA="$FILEOUT_BASENAME".nmea ;
+           FILEOUT_GPX="$FILEOUT_BASENAME".gpx ;
+           FILEOUT_KML="$FILEOUT_BASENAME".kml ;
+           # Save processed buffer data
+           echo "$buffer" >> "$DIROUT"/"$FILEOUT_NMEA" # Save NMEA format
+           echo "$buffer_GPX" >> "$DIROUT"/"$FILEOUT_GPX" # Save GPX format
+           echo "$buffer_KML" >> "$DIROUT"/"$FILEOUT_KML" # Save KML format
+           vbm "DEBUG:Completed buffer session $debugCounter ." 1>&2;
+           # Reset buffer
+           unset buffer
        done
     fi
 } # Main function.
        done
     fi
 } # Main function.