Index: branches/FEPSimulator/HighwaysParser.cpp
===================================================================
--- branches/FEPSimulator/HighwaysParser.cpp	(revision 177)
+++ branches/FEPSimulator/HighwaysParser.cpp	(revision 177)
@@ -0,0 +1,121 @@
+#include "NetworkReader.h"
+
+HighwaysParser::HighwaysParser(const char * xml) {
+    ldsIndex = 0;
+    loadLines(xml);
+}
+
+LOOP * HighwaysParser::parseLoop(TiXmlElement * loopElem) {
+    LOOP *loop = new LOOP;
+
+    TiXmlElement *subLoopElem = loopElem->FirstChildElement();
+    loop->loopID = atoi(subLoopElem->GetText());
+    subLoopElem = subLoopElem->NextSiblingElement();
+    loop->loop_loc = (char *) subLoopElem->GetText();
+    subLoopElem = subLoopElem->NextSiblingElement();
+    subLoopElem = subLoopElem->NextSiblingElement(); // skip lane num
+    loop->vol = atoi(subLoopElem->GetText());
+    subLoopElem = subLoopElem->NextSiblingElement();
+    loop->occ = atof(subLoopElem->GetText());
+    subLoopElem = subLoopElem->NextSiblingElement();
+    loop->spd = atof(subLoopElem->GetText());
+
+    return loop;
+}
+
+STATION * HighwaysParser::parseStation(TiXmlElement *stationElem, FEP_LINE *line) {
+    STATION *station = new STATION;
+
+    TiXmlElement *stationSubElem = stationElem->FirstChildElement();
+    station->lds = atol(stationSubElem->GetText());
+    cout << "Station: " << station->lds << endl;
+    line->lds.push_back(station->lds);
+    line->ldsIndex.push_back(ldsIndex++);
+    stationSubElem = stationSubElem->NextSiblingElement();
+    station->line_num = atoi(stationSubElem->GetText());
+    stationSubElem = stationSubElem->NextSiblingElement();
+    station->drop = atoi(stationSubElem->GetText());
+    stationSubElem = stationSubElem->NextSiblingElement();
+    stationSubElem = stationSubElem->NextSiblingElement(); // skip location
+    stationSubElem = stationSubElem->NextSiblingElement(); // skip postmile
+    stationSubElem = stationSubElem->NextSiblingElement(); // skip direction
+    stationSubElem = stationSubElem->NextSiblingElement(); // skip freeway
+    station->MlTotVol = atoi(stationSubElem->GetText());
+    stationSubElem = stationSubElem->NextSiblingElement();
+    station->OppTotVol = atoi(stationSubElem->GetText());
+
+    station->pos = 0; // NOT SURE WHY WE NEED THIS?
+
+    // Add loops to station
+    TiXmlElement *loopElem = stationSubElem->NextSiblingElement()->FirstChildElement();
+    for (loopElem; loopElem; loopElem = loopElem->NextSiblingElement()) {
+        LOOP *loop = parseLoop(loopElem);
+        station->loops.push_back(loop);
+    }
+    cout << "Number of Loops: " << station->loops.size() << endl;
+    // Data pack ATMS message
+    station->length = station->loops.size() * 2 + CONTROL_DATA_LEN;
+    cout << station->loops.size() << endl;
+    station->dataPack = DataPacker::packData(station);
+
+    return station;
+}
+
+FEP_LINE * HighwaysParser::parseLine(TiXmlElement * lineElem) {
+    FEP_LINE *line = new FEP_LINE;
+
+    TiXmlElement *lineSubElem = lineElem->FirstChildElement();
+    line->lineNum = atoi(lineSubElem->GetText());
+    cout << "Line: " << line->lineNum << endl;
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->count = atoi(lineSubElem->GetText());
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->schedule = atoi(lineSubElem->GetText());
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->lineInfo = atoi(lineSubElem->GetText());
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->systemKey = atol(lineSubElem->GetText());
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->globalSeq = atol(lineSubElem->GetText());
+    lineSubElem = lineSubElem->NextSiblingElement();
+    line->schedleSeq = atol(lineSubElem->GetText());
+
+    TiXmlElement *stationsElem = lineSubElem->NextSiblingElement();
+    TiXmlElement *stationElem = stationsElem->FirstChildElement();
+    for (stationElem; stationElem; stationElem = stationElem->NextSiblingElement()) {
+        stations.push_back(parseStation(stationElem, line));
+    }
+    return line;
+}
+
+void HighwaysParser::loadLines(const char * xml) {
+    // Load network xml file
+    TiXmlDocument doc;
+    doc.Parse((const char*) xml, 0, TIXML_ENCODING_UTF8);
+
+    // grab <Network> element
+    TiXmlHandle hDoc(&doc);
+    TiXmlElement *networkElem = hDoc.FirstChildElement().Element();
+
+    // grab first <Line> element
+    TiXmlElement *lineElem = networkElem->FirstChildElement();
+
+    // iterate through each line element to create FEP_LINE list
+    for (lineElem; lineElem; lineElem = lineElem->NextSiblingElement()) {
+        lines.push_back(parseLine(lineElem));
+    }
+}
+
+vector<FEP_LINE*> HighwaysParser::getLines() {
+
+    return lines;
+}
+
+vector<STATION*> HighwaysParser::getStations() {
+
+    return stations;
+}
+
+HighwaysParser::~HighwaysParser() {
+
+}
Index: branches/FEPSimulator/FEPSim.cpp
===================================================================
--- branches/FEPSimulator/FEPSim.cpp	(revision 148)
+++ branches/FEPSimulator/FEPSim.cpp	(revision 177)
@@ -21,8 +21,8 @@
 }
 
-void FEPSim::sendReplys(char * xml) {
-    NetworkReader networkReader = NetworkReader(xml);
-    vector<FEP_LINE*> lines = networkReader.getLines();
-    vector<STATION*> ldsMap = networkReader.getStations();
+void FEPSim::sendReplys(char * buffer) {
+    HighwaysParser highwaysParser = HighwaysParser(buffer);
+    vector<FEP_LINE*> lines = highwaysParser.getLines();
+    vector<STATION*> ldsMap = highwaysParser.getStations();
 
     // Send one reply for every FEPLine
@@ -89,7 +89,8 @@
             fepReply.answers.fep_answer_list_u.shortp.answers[0] = fsa;
             // send out data
-            printf("Transferring line=%d, lds_drop_no=%d...\n", lines.at(i)->lineNum, ldsMap.at(index)->drop);
+            printf("Transferring line=%d, lds_drop_no=%d...\n", lines.at(i)->lineNum, (int)ldsMap.at(index)->drop);
             // Make RPC Call and handle response
             // printf("Handling ATMS response...\n");
+            // Transfer the station data to ATMS and listen for response
             handleCallResponse(fep_reply_xfer_32(&fepReply, clnt));
         }
@@ -97,7 +98,11 @@
 }
 
-void FEPSim::updateATMS(char * xml) {
-    if (createClient()) {
-        sendReplys(xml);
+void FEPSim::manageClientConnection(char * buffer) 
+{
+    // Attempt to create RPC client
+    if (createClient()) 
+    {
+        // Prepare and send the highway status as FEP replies
+        sendReplys(buffer);
         cout << "Destroying client..." << endl;
         clnt_destroy(clnt);
@@ -184,5 +189,5 @@
 
         // send data to atms
-        updateATMS(buffer);
+        manageClientConnection(buffer);
     }
 }
Index: branches/FEPSimulator/NetworkReader.cpp
===================================================================
--- branches/FEPSimulator/NetworkReader.cpp	(revision 156)
+++ 	(revision )
@@ -1,121 +1,0 @@
-#include "NetworkReader.h"
-
-NetworkReader::NetworkReader(const char * xml) {
-    ldsIndex = 0;
-    loadLines(xml);
-}
-
-LOOP * NetworkReader::parseLoop(TiXmlElement * loopElem) {
-    LOOP *loop = new LOOP;
-
-    TiXmlElement *subLoopElem = loopElem->FirstChildElement();
-    loop->loopID = atoi(subLoopElem->GetText());
-    subLoopElem = subLoopElem->NextSiblingElement();
-    loop->loop_loc = (char *) subLoopElem->GetText();
-    subLoopElem = subLoopElem->NextSiblingElement();
-    subLoopElem = subLoopElem->NextSiblingElement(); // skip lane num
-    loop->vol = atoi(subLoopElem->GetText());
-    subLoopElem = subLoopElem->NextSiblingElement();
-    loop->occ = atof(subLoopElem->GetText());
-    subLoopElem = subLoopElem->NextSiblingElement();
-    loop->spd = atof(subLoopElem->GetText());
-
-    return loop;
-}
-
-STATION * NetworkReader::parseStation(TiXmlElement *stationElem, FEP_LINE *line) {
-    STATION *station = new STATION;
-
-    TiXmlElement *stationSubElem = stationElem->FirstChildElement();
-    station->lds = atol(stationSubElem->GetText());
-    cout << "Station: " << station->lds << endl;
-    line->lds.push_back(station->lds);
-    line->ldsIndex.push_back(ldsIndex++);
-    stationSubElem = stationSubElem->NextSiblingElement();
-    station->line_num = atoi(stationSubElem->GetText());
-    stationSubElem = stationSubElem->NextSiblingElement();
-    station->drop = atoi(stationSubElem->GetText());
-    stationSubElem = stationSubElem->NextSiblingElement();
-    stationSubElem = stationSubElem->NextSiblingElement(); // skip location
-    stationSubElem = stationSubElem->NextSiblingElement(); // skip postmile
-    stationSubElem = stationSubElem->NextSiblingElement(); // skip direction
-    stationSubElem = stationSubElem->NextSiblingElement(); // skip freeway
-    station->MlTotVol = atoi(stationSubElem->GetText());
-    stationSubElem = stationSubElem->NextSiblingElement();
-    station->OppTotVol = atoi(stationSubElem->GetText());
-
-    station->pos = 0; // NOT SURE WHY WE NEED THIS?
-
-    // Add loops to station
-    TiXmlElement *loopElem = stationSubElem->NextSiblingElement()->FirstChildElement();
-    for (loopElem; loopElem; loopElem = loopElem->NextSiblingElement()) {
-        LOOP *loop = parseLoop(loopElem);
-        station->loops.push_back(loop);
-    }
-    cout << "Number of Loops: " << station->loops.size() << endl;
-    // Data pack ATMS message
-    station->length = station->loops.size() * 2 + CONTROL_DATA_LEN;
-    cout << station->loops.size() << endl;
-    station->dataPack = DataPacker::packData(station);
-
-    return station;
-}
-
-FEP_LINE * NetworkReader::parseLine(TiXmlElement * lineElem) {
-    FEP_LINE *line = new FEP_LINE;
-
-    TiXmlElement *lineSubElem = lineElem->FirstChildElement();
-    line->lineNum = atoi(lineSubElem->GetText());
-    cout << "Line: " << line->lineNum << endl;
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->count = atoi(lineSubElem->GetText());
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->schedule = atoi(lineSubElem->GetText());
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->lineInfo = atoi(lineSubElem->GetText());
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->systemKey = atol(lineSubElem->GetText());
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->globalSeq = atol(lineSubElem->GetText());
-    lineSubElem = lineSubElem->NextSiblingElement();
-    line->schedleSeq = atol(lineSubElem->GetText());
-
-    TiXmlElement *stationsElem = lineSubElem->NextSiblingElement();
-    TiXmlElement *stationElem = stationsElem->FirstChildElement();
-    for (stationElem; stationElem; stationElem = stationElem->NextSiblingElement()) {
-        stations.push_back(parseStation(stationElem, line));
-    }
-    return line;
-}
-
-void NetworkReader::loadLines(const char * xml) {
-    // Load network xml file
-    TiXmlDocument doc;
-    doc.Parse((const char*) xml, 0, TIXML_ENCODING_UTF8);
-
-    // grab <Network> element
-    TiXmlHandle hDoc(&doc);
-    TiXmlElement *networkElem = hDoc.FirstChildElement().Element();
-
-    // grab first <Line> element
-    TiXmlElement *lineElem = networkElem->FirstChildElement();
-
-    // iterate through each line element to create FEP_LINE list
-    for (lineElem; lineElem; lineElem = lineElem->NextSiblingElement()) {
-        lines.push_back(parseLine(lineElem));
-    }
-}
-
-vector<FEP_LINE*> NetworkReader::getLines() {
-
-    return lines;
-}
-
-vector<STATION*> NetworkReader::getStations() {
-
-    return stations;
-}
-
-NetworkReader::~NetworkReader() {
-
-}
