mirror of
https://github.com/n5amd/NextionDriverInstaller.git
synced 2025-12-06 03:42:00 +01:00
207 lines
7 KiB
Bash
Executable file
207 lines
7 KiB
Bash
Executable file
#!/bin/bash
|
|
#########################################################
|
|
# #
|
|
# MMDVMHost configuration patcher #
|
|
# #
|
|
# (c)2018 by ON7LDS #
|
|
# #
|
|
# V1.03 #
|
|
# #
|
|
# 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.03"
|
|
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\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"
|
|
|