#include "SocketThreadFMS32.h" #include "MonitorLogging.h" SocketThreadFMS32::SocketThreadFMS32(MonitorConfiguration *config, int LOCKNUM, int PortNum) : SocketThread(config, LOCKNUM, PortNum, fms32pro) { } SocketThreadFMS32::~SocketThreadFMS32() { } void SocketThreadFMS32::sayWelcome() { std::string welcomeStringFMS32Pro="#Verbindung zu FMS32-Server erfolgreich hergestellt!\r\n#Verbunden mit Anschluss: " ; std::string Port=convertIntToString(this->m_iPortNum) ; say(welcomeStringFMS32Pro + Port + "\r\nAN" + Port+"\r\n") ; } void SocketThreadFMS32::processInput() { std::string Kommando=m_CommandBuffer; if (Kommando == "AllFMS") { FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (Übertragung aktueller Fahrzeugstatus aller Fahrzeuge)."; } else if (Kommando == "GetAlarmListe") { FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (GetAlarmListe)."; } else if (Kommando.substr(0, 12) == "GetFMSListe\t") { FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (Übertragung Statuswechsel der letzten n Stunden)."; } else if (Kommando.substr(0, 12) == "GetPOCListe\t") { FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (Übertragung POCSAG Rufe der letzten n Stunden)."; } else { FILE_LOG (logDEBUG) << "received from FMS32: " << m_CommandBuffer; } return; } std::string SocketThreadFMS32::createFMSOutputString(ModuleResultBase Result) { std::string socketText ; std::string Feld10="0"; std::string Feld11="0" ; std::string Feld12="0" ; std::string Feld13="" ; std::string Feld14="0" ; std::string Feld15="0" ; socketText = std::string("FMSTlg") + "\t" + Result["fmskennung"] //fahrzeugKennung + "\t" + Result["bosdezimal"] //bosDezimalString // kein HEX + "\t" + Result["landdezimal"] //landDezimalString // kein HEX + "\t" + Result["bos"]+Result["land"]+Result["ort"] // bosString + landString + ortString + "\t" + Result["kfz"] + "\t" + Result["statusdezimal"] // kein HEX + "\t" + Result["baustufe"] //baustufeString + "\t" + Result["richtung"] //richtungString + "\t" + Result["tki"] //tkiString ; if (Result["textuebertragung"].size()>0) { if (convertToInt(Result["richtung"])==0) { // Vom Fahrzeug, Ortstaste wird im Moment // nicht unterstuetzt Feld10="2"; Feld11="0" ; Feld12="0" ; Feld13=Result["textuebertragung"] ; Feld14="0" ; Feld15="0" ; } else if (convertToInt(Result["richtung"])==1) { // Von der Leitstelle Feld10="0"; Feld11="-1" ; Feld12="0" ; Feld13=Result["textuebertragung"] ; Feld14="0" ; Feld15="0" ; } } socketText +="\t"+Feld10 // 10: Folgetelegramm vom Fzg 0=Nein,1=Ort,2=Sonst + "\t"+Feld11 // 11: Folgetelegramm von der Lst 0=Nein, 1=ja + "\t"+Feld12 // 12: Folgenummer dezimal (Feld10=1, Ortstaste) + "\t"+Feld13 // 13: Folgetelegramm (vom Fzg in Hex, von der Lst in ASCII + "\t"+Feld14 // 14: Soundkarte(0..3) + "\t"+Feld15 // 15: Kanal (0,1) ; return socketText ; } std::string SocketThreadFMS32::createZVEIOutputString(ModuleResultBase Result) { std::string socketText="" ; socketText = std::string("ZVEI") + "\t" + Result["zvei"] + "\t0\t0" ; return socketText ; } std::string SocketThreadFMS32::createPOCSAGOutputString(ModuleResultBase Result) { std::string socketText="" ; std::string subString ; int sub=0 ; try { sub = convertToInt( Result["sub"])+1 ; } catch (BadConversion) { sub=0 ; FILE_LOG (logERROR) << "Error converting subaddress : " << Result["sub"] ; } subString=convertIntToString(sub) ; socketText = std::string("POC") + "\t" + Result["ric"] + "\t" + subString //Funktionsbit + "\t" + Result["text"] + "\t0\t0" ; return socketText ; }