#include "TogPlugin.h" #include "GsmModem.h" #include "TrainInfo.h" #include "util.h" #include #include using namespace std; TogPlugin::TogPlugin() : Plugin("tog", "Henter tog info fra bane.dk") { _stationInfo["la"] = StationInfo("LG","Langå"); _stationInfo["ul"] = StationInfo("UP","Ulstrup"); _stationInfo["bj"] = StationInfo("BJ","Bjerringbro"); _stationInfo["vi"] = StationInfo("VG","Viborg"); _stationInfo["hø"] = StationInfo("HØ","Højslev"); _stationInfo["sk"] = StationInfo("SK","Skive"); } string TogPlugin::GetRealStationCode(string code, string &stationName) { map::iterator it = _stationInfo.find(code); if (it != _stationInfo.end()) { stationName = (*it).second.name; return (*it).second.code; } return ""; } string TogPlugin::CreateStationList() { ostringstream os; os << "code - station\n"; map::iterator it; for (it = _stationInfo.begin(); it != _stationInfo.end(); ++it) { os << (*it).first << " - " << (*it).second.name << "\n"; } return Util::str_latin2gsm(os.str()); } void TogPlugin::Execute(IGsmModem& modem, SMS& sms) { string data = GetSmsData(sms); data = Util::str_gsm2latin(data);; data = Util::str_tolower(data); if (data == "") { modem.SendSms(sms.sender, "Usage: tog \ntog list - liste over stationer"); return; } if (data == "list") { modem.SendSms(sms.sender, CreateStationList()); return; } string stationName; string code = GetRealStationCode(data, stationName); if (code == "") { modem.SendSms(sms.sender, "Unknown station"); return; } vector infos; try { infos = GetTrainInfo( code , "" ); } catch(...) { modem.SendSms(sms.sender, "Connection timeout"); return; } ostringstream os; os << stationName << ":\n"; for (unsigned int i=0; i< infos.size(); ++i) { TrainInfo& train = infos[i]; os << train.time << " "; os << train.destination << " "; os << train.status << " "; os << train.note << "\n"; } modem.SendSms(sms.sender, Util::str_latin2gsm(os.str())); }