NextionDriverInstaller/NextionDriver_ConvertConfig
2019-09-04 19:57:54 +02:00

207 lines
7.1 KiB
Bash
Executable file

#!/bin/bash
#########################################################
# #
# MMDVMHost configuration patcher #
# #
# (c)2018-9 by ON7LDS & EA5KL #
# #
# V1.05 #
# #
# This program changes the MMDVMHost configuration #
# file to suit the needs of NextionDriver #
# #
#########################################################
#Where do we find the data files (groups and DMR is's)
#for Pi-Star : /usr/local/etc/
DATAFILES="/usr/local/etc/"
#########################################################
if [ "$1" == "" ]; then
echo "You have to specify the config file !"
exit 1
fi
MMDVMConfig=$1
VERSION="1.05"
echo ""
echo "-----------------------------------------------------------"
echo "NOTE: I tried to make this script as foolproof as possible."
echo " There might still be situations where it does not work"
echo " as expected."
echo " If you should discover any bugs, please let me know."
echo "-----------------------------------------------------------"
echo ""
echo "Starting NextionDriver_ConvertConfig $VERSION"
echo ""
if [[ -f "$MMDVMConfig" && -w "$MMDVMConfig" ]]; then
echo "Processing ..."
else
echo "The file is not a regular file or writable !"
exit 2
fi
if [[ -f "$MMDVMConfig.old" ]]; then
echo "There already is a backup file $MMDVMConfig.old"
echo "This could be because NextionDriver already was installed earlier."
echo "If this is the case, there probably is no need to run this convertor."
echo "If, however, you are sure to run this convertor again,"
echo " then please rename or remove $MMDVMConfig.old."
echo ""
echo "Mind you, running the convertor twice might result in a"
echo " broken configuration"
exit 3
fi
while IFS='' read -r line || [[ -n "$line" ]]; do
if [ "$line" == "[NextionDriver]" ]; then
echo "There already is a [NextionDriver] section."
echo " I'm going to leave the file as is."
echo " You'll have to change it by hand if necessary."
exit 4
fi
done < "$MMDVMConfig"
# Ok, alles lijkt goed.
mv "$MMDVMConfig" "$MMDVMConfig.old"
NEXTIONPORT_IS_MODEM=""
NEXTIONPORT_IS_DRIVER=""
TRANSPARENT=""
while IFS='' read -r line || [[ -n "$line" ]]; do
#sectie bepalen
if [[ "${line:0:1}" == "[" ]]; then
SECTION=${line:1:-1}
fi
#Port van Nextion zoeken,
#we moeten weten of het modem is of niet
if [[ "$SECTION" == "Nextion" && "$line" == "Port=modem" ]]; then
NEXTIONPORT_IS_MODEM="1"
echo "Info: Serial port for Nextion is modem."
echo " We will have to enable Transparent Data!"
fi
if [[ "$SECTION" == "Nextion" && "$line" == "Port="*"ttyNextionDriver" ]]; then
NEXTIONPORT_IS_DRIVER="1"
echo "ERROR: The driver already seems to be installed,"
echo " so I will not change the configuration."
echo " If something is wrong, please correct it by hand."
mv "$MMDVMConfig.old" "$MMDVMConfig"
exit 1
fi
if [[ "$SECTION" == "Transparent Data" && "$TRANSPARENT" == "" ]]; then
TRANSPARENT="1"
echo "Info: Transparent Data section found."
fi
if [[ "$SECTION" == "Transparent Data" && "$TRANSPARENT" == "1" && "$line" == "SendFrameType="* ]]; then
TRANSPARENT="2"
echo "Info: SendFrameType option found."
fi
done < "$MMDVMConfig.old"
if [[ "$NEXTIONPORT_IS_MODEM" == "1" && "$TRANSPARENT" == "" ]]; then
echo "Info: No Transparent Data section."
echo " Will be inserted !"
TRANSPARENT="3"
fi
echo "---> Creating new ini file..."
SECTION=""
SERIALPORT=""
FOUND_NEXTION=""
FOUND_MODEM=""
while IFS='' read -r line || [[ -n "$line" ]]; do
#sectie bepalen
if [[ "${line:0:1}" == "[" ]]; then
SECTION=${line:1:-1}
fi
#[Modem]
if [[ "$SECTION" == "Modem" ]]; then
FOUND_MODEM="1"
fi
#[Transparent data]
if [[ "$NEXTIONPORT_IS_MODEM" == "1" && "$SECTION" == "Transparent Data" ]]; then
if [[ "${line:0:7}" == "Enable=" ]]; then
TRANSPARENT_ENABLE=${line:7:1}
echo "Info: Transparent data enable: $TRANSPARENT_ENABLE"
if [[ "$TRANSPARENT_ENABLE" != "1" ]]; then
echo " changing to 1"
line="Enable=1"
else
echo " OK !"
fi
if [[ "$TRANSPARENT" == "1" ]]; then
TRANSPARENT="x"
echo "Info: Inserting SendFrameType=1"
echo "$line" >> "$MMDVMConfig"
line="SendFrameType=1"
fi
fi
if [[ "$TRANSPARENT" == "2" && "${line:0:14}" == "SendFrameType=" ]]; then
SENDFRAMETYPE=${line:14:1}
echo "Info: SendFrameType: $SENDFRAMETYPE"
if [[ "$SENDFRAMETYPE" != "1" ]]; then
echo " changing to 1"
line="SendFrameType=1"
else
echo " OK !"
fi
fi
fi
#[Nextion]
if [[ "$SECTION" == "Nextion" ]]; then
FOUND_NEXTION="1"
#Port van Nextion gevonden ?
# bewaren welke dat is !
if [[ "${line:0:5}" == "Port=" ]]; then
SERIALPORT="${line:5}"
echo "Info: Serial port for Nextion was $SERIALPORT"
echo " changing to /dev/ttyNextionDriver"
line="Port=/dev/ttyNextionDriver"
fi
fi
#eerste sectie na [Nextion] gevonden ?
# hier zetten we onze gegevens tussen
if [[ "$SECTION" != "Nextion" && "$FOUND_NEXTION" == "1" && "${line:0:1}" == "[" ]]; then
echo "Info: Inserting [NextionDriver] section"
SECTION="[NextionDriver]\nPort=$SERIALPORT\nLogLevel=2\nDataFilesPath=$DATAFILES\nGroupsFile=groups.txt\nDMRidFile=stripped.csv\nremoveDim=0\nSleepWhenInactive=600\nShowModesStatus=1\n\n"
echo -e "$SECTION" >> "$MMDVMConfig"
echo -e "\n\nInserted section :"
echo "------------------------------"
echo -e "$SECTION"
echo "------------------------------"
echo ""
FOUND_NEXTION=""
if [ "$SERIALPORT" == "" ]; then
echo -e "WARNING : no serial port for Nextion found. Check your $MMDVMConfig\n"
fi
fi
if [[ "$SECTION" != "Modem" && "$FOUND_MODEM" == "1" && "${line:0:1}" == "[" && "$TRANSPARENT" == "3" ]]; then
echo "Info: Inserting [Transparent Data] section"
SECTION="[Transparent Data]\nEnable=1\nRemoteAddress=127.0.0.1\nRemotePort=40094\nLocalPort=40095\nSendFrameType=1\n\n"
echo -e "$SECTION" >> "$MMDVMConfig"
echo -e "\n\nInserted section :"
echo "------------------------------"
echo -e "$SECTION"
echo "------------------------------"
echo ""
FOUND_MODEM=""
fi
echo "$line" >> "$MMDVMConfig"
done < "$MMDVMConfig.old"