chore(bkgpslog):Add minor comment
[EVA-2020-02.git] / exec / bkgpslog
index 9e23f015762268736bd5cd11901bce028c213eba..f82396f6a52f56c3e204d7fecde7e5f90ffcd183 100755 (executable)
@@ -14,7 +14,7 @@ DIR_TMP_DEFAULT="/dev/shm"; # Default parent of working directory
 SCRIPT_TIME_START=$(date +%Y%m%dT%H%M%S.%N);
 PATH="$HOME/.local/bin:$PATH";   # Add "$(systemd-path user-binaries)" path in case apps saved there
 SCRIPT_HOSTNAME=$(hostname);     # Save hostname of system running this script.
-SCRIPT_VERSION="0.4.4-alpha";          # Define version of script.
+SCRIPT_VERSION="0.5.1";          # Define version of script.
 SCRIPT_NAME="bkgpslog";          # Define basename of script file.
 SCRIPT_URL="https://gitlab.com/baltakatei/ninfacyzga-01"; # Define wesite hosting this script.
 AGE_VERSION="1.0.0-beta2";       # Define version of age (encryption program)
@@ -950,8 +950,8 @@ magicBufferSleepPID() {
 
     ### PID Control factors
     K_P=1; # Gain for compensating buffer round lag
-    T_I="$((4*BUFFER_TTL_NS))"; # Consider this number of past nanoseconds to eliminate error
-    T_D="$((1*BUFFER_TTL_NS))"; # Predict value this number of nanoseconds into the future
+    T_I="$(((4)*BUFFER_TTL_NS/(1)))"; # Consider this number of past nanoseconds to eliminate error
+    T_D="$(((1)*BUFFER_TTL_NS/(1)))"; # Predict value this number of nanoseconds into the future
     
     # Calculate Error, errNS, in nanoseconds
     ## Get current time
@@ -976,12 +976,18 @@ magicBufferSleepPID() {
     # for value in "${errorHistory[@]}"; do
     #  errReset=$(( errReset + ( value*BUFFER_TTL_NS ) ));
     # done;
-    errReset="$(( (errReset + (errNS*BUFFER_TTL_NS)) ))" && vbm "errReset:$errReset";
+    vbm "errReset(orig):$errReset"
+    errReset="$(( (errReset + (errNS*BUFFER_TTL_NS)) ))" && vbm "errReset(post):$errReset";
 #    errResetx10e3="$(( ( errResetx10e3 + ( errNSx10e3 * BUFFER_TTL_NS ) )*10**3 ))" && vbm "errResetx10e3:$errResetx10e3";
 
     # Calculate errRate in nanoseconds per nanosecond
     errRate="$(( errNS / BUFFER_TTL_NS ))" && vbm "errRate:$errRate";
 #    errRatex10e3="$(( ( errNSx10e3 ) / BUFFER_TTL_NS ))" && vbm "errRatex10e3:$errRatex10e3";
+
+    # Debug
+    vbm "errNS       :$errNS";
+    vbm "errResetTerm:$((errReset/T_I))";
+    vbm "errRateTerm :$((errRate*T_D))";
     
     # Calculate PID control signal
     ## ADJ = K_P * (errNS + errReset/T_I + errRate*T_D)
@@ -999,11 +1005,13 @@ magicBufferSleepPID() {
        yell "WARNING:Buffer lag adjustment yielded negative seconds.";
     fi;
     ## Calculate nanosecond remainder
-    BUFFER_TTL_ADJ_FLOATFRAC="$((BUFFER_TTL_NS - (BUFFER_TTL_ADJ_INT*(10**9)) ))" && vbm "BUFFER_TTL_ADJ_FLOATFRAC:$BUFFER_TTL_ADJ_FLOATFRAC";
+    ### Remove integer
+    BUFFER_TTL_ADJ_FLOATFRAC="$((BUFFER_TTL_ADJ_NS - (BUFFER_TTL_ADJ_INT*(10**9)) ))" && vbm "BUFFER_TTL_ADJ_FLOATFRAC:$BUFFER_TTL_ADJ_FLOATFRAC";
+    ### Calc absolute value of fraction (by removing '-' if present; see https://stackoverflow.com/a/47240327
+    BUFFER_TTL_ADJ_FLOATFRAC="${BUFFER_TTL_ADJ_FLOATFRAC#-}" && vbm "BUFFER_TTL_ADJ_FLOATFRAC:$BUFFER_TTL_ADJ_FLOATFRAC";
     ## Form float BUFFER_TTL_ADJ_FLOAT
     BUFFER_TTL_ADJ_FLOAT="$BUFFER_TTL_ADJ_INT"."$BUFFER_TTL_ADJ_FLOATFRAC" && vbm "BUFFER_TTL_ADJ_FLOAT:$BUFFER_TTL_ADJ_FLOAT";
     vbm "STATUS:Calculated adjusted BUFFER_TTL (seconds):$BUFFER_TTL_ADJ_FLOAT";
-    sleep 1 # Debug
 } # Calc BUFFER_TTL_ADJ_FLOAT so buffer starts every BUFFER_TTL seconds
 magicWriteVersion() {
     # Desc: Appends time-stamped VERSION to PATHOUT_TAR
@@ -1323,9 +1331,9 @@ main() {
     while [[ "$SECONDS" -lt "$SCRIPT_TTL" ]]; do
        magicParseRecipientDir;
        magicGatherWriteBuffer &
-       sleep "$BUFFER_TTL_ADJ_FLOAT";
+       sleep "$BUFFER_TTL_ADJ_FLOAT"; # adjusted by magicBufferSleepPID
        ((bufferRound++));
-       magicBufferSleepPID; # Calculates BUFFER_TTL_ADJ from BUFFER_TTL given buffer expected start time vs. actual
+       magicBufferSleepPID; # Calculates BUFFER_TTL_ADJ_FLOAT from BUFFER_TTL given buffer expected start time vs. actual
     done    
 
     # Cleanup