#!/bin/bash


#ThisDev=TektrMSO56-a
COMMAND="netcat -q 1 $ThisDev.golem 4000" 
Drivers="Oscilloscopes/Drivers/TektrMSO5/driver"

QUERYCOMMAND="netcat -w 1 $ThisDev.golem 4000" 

function Wake-upCall() {  
DelayCall $RelayBoards $ThisDev@Galvanics ON; }   

function Sleep-downCall() {  
DelayCall $RelayBoards $ThisDev@Galvanics OFF; } 

   
function PrepareSessionEnv@SHM()
{
    mkdir -p $SHMS/Devices/Oscilloscopes/Drivers/TektrMSO5/
    cp $SW/Devices/Oscilloscopes/Drivers/TektrMSO5/* $SHMS/Devices/Oscilloscopes/Drivers/TektrMSO5/
}   





function Arming()
{
    LogTheDeviceAction

    rm -f /home/golem/tektronix_drop/TektrMSO56*.csv
    rm -f /home/golem/tektronix_drop/TektrMSO56*.png
    #mkdir -p $SHM0/$SUBDIR/$ThisDev/
    echo ":DISplay:GLObal:CH1:STATE ON"|$COMMAND
    echo ":DISplay:GLObal:CH2:STATE ON"|$COMMAND
    echo ":DISplay:GLObal:CH3:STATE ON"|$COMMAND
    echo ":DISplay:GLObal:CH4:STATE ON"|$COMMAND
    echo ":DISplay:GLObal:CH5:STATE ON"|$COMMAND
    echo ":DISplay:GLObal:CH6:STATE ON"|$COMMAND
    SingleSeq
}


function SingleSeq()
{
    echo "FPANEL:PRESS SINGLESEQ"|$COMMAND
}   


function ForceTrig()
{
    echo "FPANEL:PRESS FORCetrig"|$COMMAND
}


function SetHorizontalScale() {
    # defaults record length 40ms, 1ms delay and 1MS/s
    local recordMS=${1:-40}
    local preTriggerMS=${2:-1}

    local samplerate=${3:-1000000}

    #echo "$recordMS $preTriggerMS $samplerate"

    # format number
    samplerate=`python3 -c "num=float('$samplerate');print('{:.3e}'.format(num))"`

    #Horizontal Scale is per div;  10 divs in record
    horizontalScale=`python3 -c "rec=float('$recordMS')/1e3;print('{:.3e}'.format(rec/10))"`

    # Horizontal Offset / Delay in percents of screen 
    # could be set in absolute values, but this would mess up manual adjustments of hor. scale
    horizontalOffsetPercent=`python3 -c "pt=float('$preTriggerMS')/1e3;rec=float('$recordMS')/1e3;print('{:.0f}'.format(100*pt/rec))"`

    ## echo for debugging 
    # echo "Setting :HORIZONTAL:MODE:SAMPLERATE $samplerate @ $ThisDev"
    # echo "Setting :HORIZONTAL:MODE:SCALE $horizontalScale @ $ThisDev"
    # echo "Setting :HORIZONTAL:POSITION $horizontalOffsetPercent  @ $ThisDev"
    
    echo ":ACQUIRE:MODE HIRes;
    :HORIZONTAL:MODE:MANUAL;
    :HORIZONTAL:MODE:MANUAL:CONFIGURE RECORDLENGTH;
    :HORIZONTAL:MODE MANUAL; 
    :HORIZONTAL:MODE:SAMPLERATE $samplerate;
    :HORIZONTAL:MODE:SCALE $horizontalScale;
    :HORizontal:DELay:MODe OFF;
    :HORIZONTAL:POSITION $horizontalOffsetPercent "|$COMMAND

}

function AdjustHorizontalScale() 
{
    local recordMS=$1
    samplerate=`echo "HORizontal:MODE:SAMPLERate?" | $QUERYCOMMAND`
    if [[ "$samplerate" != "" ]]; then
        recordLength=`python3 -c "s=float('$samplerate');r=int('$recordMS');print(int(s*r/1000))"`
        echo "HORizontal:RECOrdlength $recordLength" | $COMMAND
        echo "Setting RECOrdlength $recordLength @ $ThisDev"
    else
        echo "AdjustHorizontalScale @ $ThisDev FAILED"
    fi   
}

# MOUNT: 192.168.2.116, tek_drop, golem, tokamak
# systemctl restart smbd
# Dat pozor, na ktery disk se mapuje .. O ci L
