#!/bin/bash
###############################################################################################################
# Titel: write
# Autor: Michael Kaden
# Datum: 14.09.2014
#
# Funktion:
# Dieses Skript ist ein Teilprogramm von fdtsds. Es liest alle Dateien im Write-Spool-Verzeichnis ein, schreibt
# den Inhalt in das fdtsds-Logfile und an die passende serielle Schnittstelle.
#
# Zweck:
# Das Script ermöglicht als Write-Spooler die Verarbeitung der aus verschiedenen Skripten an das/die FuG(s) zu 
# sendenden AT-Kommandos.
#
# Copyright (C) 2014 Michael Kaden
#
# Dieses Programm ist freie Software. Sie können es unter Beachtung der Nutzungsbedingungen benutzen, 
# weitergeben und modifizieren.
# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, 
# aber OHNE IRGENDEINE GARANTIE, sogar ohne die Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN 
# BESTIMMTEN ZWECK. 
###############################################################################################################

# Config-File einlesen
source /usr/local/smi/trx/etc/sms.conf

myname=$(echo "$0" | $awk -F/ '{ print $NF }')

# Device, zu dem diese Instanz des Write-Spoolers senden soll, aus dem eigenen Dateinamen bestimmen
device=$(echo "$myname" |$awk -F. '{ print $NF }')

# message system, aus dem eigenen Dateinamen bestimmen
#msgsys=$(echo "$myname" |$awk -F. '{ print $1 }')

# Pseudoterminal _1 des Portmultiplexers zu diesem Device bestimmen
i=1
while [ -n "$(eval echo '$'SmsTtyToBind_${i}_name)" ]; do
	runVAR="$(eval echo '$'SmsTtyToBind_${i}_name)"
	if [ "$runVAR" = "$device" ]; then
		readdev="${SmsScriptName}${i}_1"
	fi
	((i++))
done

if [ -c "/dev/$device" ]; then

	# alle MQTT-Messages des Write-Spoolers in einer Endlosschleife einlesen
	while read -r line; do
		echo -ne "$line" > /dev/$readdev
	done < <($mosquitto_sub -t "$(eval echo $TrxMqttWrite)")

fi
exit 255
