#!/bin/bash
###############################################################################################################
# Titel: write
# Autor: Michael Kaden
# Datum: 14.09.2014
#
# Funktion:
# Dieses Skript ist ein Teilprogramm von sds2db. Es liest alle Dateien im Write-Spool-Verzeichnis ein, schreibt
# den Inhalt in das sds2db-Logfile und an die passende serielle Schnittstelle.
#
# Zweck:
# Das Script ermglicht 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 knnen es unter Beachtung der Nutzungsbedingungen benutzen, 
# weitergeben und modifizieren.
# Die Verffentlichung 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 FR EINEN 
# BESTIMMTEN ZWECK. 
###############################################################################################################

# Config-File einlesen
source /usr/local/sds2db/etc/sds2db.conf

# alle im Write-Spoolverzeichnis erstellten Dateien mittels inotifywait einlesen
$inotifybin -mq -e create $writespooldir --format '%f' | while read file; do 

	# Device, zu dem die Daten gesendet werden sollen, aus dem Dateinamen bestimmen
	device="$(echo $file | $awkbin -F. '{ print $NF }')"
	# Ist die Datei kein Character Special Device, wird das Device auf "null" gesetzt
	if [ ! -c "/dev/$device" ]; then
	      device="null"
	fi
	
	# Inhalt der zu sendenden Daten ohne Zeilenumbrche in's Logfile schreiben, wenn es keine Leerzeile ist
	atcmd="$(cat "$writespooldir/$file")"
	if [ -n "$(echo "$atcmd" | tr -d '\r\n')" ]; then
		echo "$(date +"%b %d %H:%M:%S") $host $skriptname: tx $(echo "$atcmd" | tr -d '\r\n')" >> $logdir/$device.log
	fi
	  	  
	# Zeile an Schnittstelle senden
	dd if=$writespooldir/$file of=/dev/$device

	# Spooldatei lschen
	rm "$writespooldir/$file"
done
exit 255
