Index: branches/SimpleFEPclient/fep_client.cpp
===================================================================
--- branches/SimpleFEPclient/fep_client.cpp	(revision 106)
+++ branches/SimpleFEPclient/fep_client.cpp	(revision 136)
@@ -1,5 +1,9 @@
+#include "fep_client.h"
 #include "fep.h"
 #include <stdio.h>
 #include <stdlib.h>
+#include <vector>
+#include "network.h"
+#include "DataPacker.h"
 
 /* Author: John A. Torres
@@ -8,115 +12,190 @@
    reply is sent, the ATMS Sends a response and the RPC Client
    is destroyed.
+   */
+void FEPClient::fep_program_32(char *host)
+{
+   CLIENT *clnt;
+
+   /* Declerations to construct an fep_reply */
+   fep_answer_info fai;
+   fep_answer_short_msg fasm;
+   fep_shortanswer fsa;
+   fep_reply  fep_reply; // the reply to be sent to ATMS
+
+   /* Var to recieve message back from ATMS */
+   void  *rv;
+
+   /* Create RPC Client to communicate with ATMS */
+   printf("Preparing to create RPC client\n");
+   clnt = clnt_create(host, FEP_PROGRAM, FEP_VERSION, "tcp");
+
+   /* Check if client creation failed */
+   if (clnt == (CLIENT *) NULL)
+   {
+      fprintf(stderr, "can't create client to %s\n", host);
+      /* Show why rpc handle couldn't be created */
+      clnt_pcreateerror("");
+      exit(1);
+   }
+
+   /* Populate fep_shortmessage data */
+   printf("setting reply values\n");
+
+   // DUMMY DATA FOR SINGLE GREEN DOT
+   // STATION
+   // lds_id  line    drop sch lineinfo       system_key      sch_seq glo_seq         count   freeway Dir     ca_pm   lds_name
+   // 1204666 45      10      11      11      1123005841      26484   1357646         19      5       N       20      LAKE FOR2
+
+   // LOOPS
+   // FWY     Dir     POSTMI  LDS_ID  VDS_ID  LOOP_ID LOC    LANE LOOP_LOC            PARAMICS_NAME  PARAMICS_LANE
+   // 
+
+   vector<LOOP*> loops;
+/*
+   LOOP * newLoopOne = new LOOP;
+   newLoopOne->loopID = 1210490;
+   newLoopOne->loop_loc = "ML_1";
+   newLoopOne->vol = 0;
+   newLoopOne->occ = 0;
+   newLoopOne->spd = 0;
+
+   LOOP * newLoopTwo = new LOOP;
+   newLoopTwo->loopID = 1210492;
+   newLoopTwo->loop_loc = "ML_2";
+   newLoopTwo->vol = 0;
+   newLoopTwo->occ = 0;
+   newLoopTwo->spd = 0;
+
+   LOOP * newLoopThree = new LOOP;
+   newLoopThree->loopID = 1210493;
+   newLoopThree->loop_loc = "ML_3";
+   newLoopThree->vol = 0;
+   newLoopThree->occ = 0;
+   newLoopThree->spd = 0;
+
+   LOOP * newLoopFour = new LOOP;
+   newLoopFour->loopID = 1210769;
+   newLoopFour->loop_loc = "RAMP_ON";
+   newLoopFour->vol = 0;
+   newLoopFour->occ = 0;
+   newLoopFour->spd = 0;
+
+   loops.push_back(newLoopOne);
+   loops.push_back(newLoopTwo);
+   loops.push_back(newLoopThree);
+   loops.push_back(newLoopFour);
 */
-void fep_program_32(char *host)
-{
-	CLIENT *clnt;
-
-    /* Declerations to construct an fep_reply */
-	fep_answer_info fai;
-	fep_pollerror fpe;
-	fep_answer_short_msg fasm;
-	fep_shortanswer fsa;
-	fep_reply  fep_reply_xfer_32_arg; // the reply to be sent to ATMS
-
-	/* Var to recieve message back from ATMS */
-	void  *rv;
-
-    /* Create RPC Client to communicate with ATMS */
-	printf("Preparing to create RPC client\n");
-	clnt = clnt_create(host, FEP_PROGRAM, FEP_VERSION, "tcp");
-
-	/* Check if client creation failed */
-	if (clnt == (CLIENT *) NULL)
-	{
-		fprintf(stderr, "can't create client to %s\n", host);
-        /* Show why rpc handle couldn't be created */
-        clnt_pcreateerror("");
-		exit(1);
-    }
-
-    /* Populate fep_shortmessage data */
-	printf("setting reply values\n");
-
-	fasm.message_len = 5;
-	fasm.message[0] = 0x0a;
-	fasm.message[1] = 0x0d;
-	fasm.message[2] = 0x11;
-	fasm.message[3] = 0x12;
-	fasm.message[4] = 0x13;
-
-	fpe.msgerror = (enum answererror) 0;
-	fpe.state = (enum Polling_FSM_States) 0x00;
-	fpe.perrno = 0;
-	fpe.termination = 0;
-	fpe.count = 0;
-
-	fai.poll_time = 1111443466;
-	fai.status = (enum replystatus) 1;
-	fai.poll_user_info1 = 1;
-	fai.poll_user_info2 = 2;
-	fai.retries = 0;
-	fai.poll_error_count = 1;
-	fai.pollerror[0] = fpe;
-
-	fsa.info = fai;
-	fsa.msg = fasm;
-
-	fep_reply_xfer_32_arg.reply = 0;
-	fep_reply_xfer_32_arg.schedule = 0;
-	fep_reply_xfer_32_arg.lineinfo = 0;
-	fep_reply_xfer_32_arg.kind = (enum polltype)0;
-	fep_reply_xfer_32_arg.flag = (enum replykind) 0;
-	fep_reply_xfer_32_arg.schedule_sequence = 0;
-	fep_reply_xfer_32_arg.global_sequence = 0;
-	fep_reply_xfer_32_arg.schedule_time = 1111443466;
-	fep_reply_xfer_32_arg.user_info1 = 0;
-	fep_reply_xfer_32_arg.user_info2 = 0;
-	fep_reply_xfer_32_arg.system_key = 0;
-	fep_reply_xfer_32_arg.answers.size = 0;
-	fep_reply_xfer_32_arg.answers.fep_answer_list_u.shortp.count = 1;
-	fep_reply_xfer_32_arg.answers.fep_answer_list_u.shortp.answers[0] = fsa;
-
-    /* Make RPC Call to transfer reply to ATMS */
-	printf("transferring data\n");
-	rv = fep_reply_xfer_32(&fep_reply_xfer_32_arg, clnt);
-	printf("checking reply`\n");
-
-	/* If ATMS reply call fails */
-	if (rv == (void *) NULL)
-	{
-		clnt_perror(clnt, "call failed");
-    }
-    /* If recieved reply is successful, but empty */
-	else if ((char *) rv == "")
-	{
-		printf("rv is empty\n");
-    }
-    /* If recieved reply is successful */
-	else
-	{
-		printf("Result = %s\n", (char *)rv);
-    }
-
-    /* Destroy client */
-	printf("destroying client\n");
-	clnt_destroy(clnt);
-	printf("returning to main\n");
+   STATION * dummyStation = new STATION;
+   dummyStation->lds = 1204666;
+   dummyStation->line_num = 45;
+   dummyStation->drop = 10;
+   // dummyStation->loops = loops;
+
+   dummyStation->MlTotVol = 0;
+   dummyStation->OppTotVol = 0;
+   dummyStation->length = dummyStation->loops.size() * 2 + 27 /* CONTROL_DATA_LEN */;
+
+   printf("Station length: %d\n", dummyStation->length);
+   // CHECK TO SEE IF I AM UPDATING THIS EVERY 30S
+   /*
+   for(int i = 0; i < 3; i++)
+   {
+      dummyStation->MlTotVol += loops.at(i)->vol;
+   }
+   */
+   printf("Station MLTOTVOL: %d\n", dummyStation->MlTotVol);
+
+   dummyStation->dataPack = DataPacker::packData(dummyStation);
+
+
+   fep_reply.reply = SHORTPOLL;
+   fep_reply.schedule = 0;
+   fep_reply.lineinfo = 0;
+   fep_reply.kind = (enum polltype) 0;
+   fep_reply.flag = (enum replykind) 0;
+
+   fep_reply.schedule_sequence = 0;
+   fep_reply.global_sequence = 0;
+
+   fep_reply.schedule_time = time(NULL);
+
+   fep_reply.user_info1 = dummyStation->line_num; // LINE NUM;
+   fep_reply.user_info2 = dummyStation->line_num; // LINE NUM;
+   fep_reply.system_key = 0;
+
+   fep_reply.answers.size = 1;
+   fep_reply.answers.fep_answer_list_u.shortp.count = 1;
+
+   fasm.message_len = dummyStation->length + 2; // MESSAGE LEN;
+   fasm.message[0] = 0x0d;
+   fasm.message[1] = 0x0a;
+
+   for (int k = 0; k < dummyStation->length; k++) {
+      printf("Adding: %d %02X\n", k, dummyStation->dataPack[k]); 
+      fasm.message[2 + k] = dummyStation->dataPack[k];
+   }
+
+   int length = dummyStation->length + 2; // NEED CORRECT LENGTH
+   fasm.message[length + 2] = 0x0d;
+   fasm.message[length + 3] = 0xff;
+
+   for(int l = 0; l < fasm.message_len + 2; l++)
+   {
+      printf("%02X", (unsigned char) fasm.message[l]);
+   }
+   printf("\n");
+
+   fai.poll_error_count = 0;
+   fai.poll_user_info1 = 0 ;// DROP NUMBER HERE
+   fai.poll_user_info2 = 1;
+   fai.retries = 0;
+   fai.status = (enum replystatus) 1;
+
+   fsa.info = fai;
+   fsa.msg = fasm;
+   fep_reply.answers.fep_answer_list_u.shortp.answers[0] = fsa;
+
+   /* Make RPC Call to transfer reply to ATMS */
+   printf("transferring data\n");
+   rv = fep_reply_xfer_32(&fep_reply, clnt);
+   printf("checking reply`\n");
+
+   /* If ATMS reply call fails */
+   if (rv == (void *) NULL)
+   {
+      clnt_perror(clnt, "call failed");
+   }
+   /* If recieved reply is successful, but empty */
+   else if ((char *) rv == "")
+   {
+      printf("rv is empty\n");
+   }
+   /* If recieved reply is successful */
+   else
+   {
+      printf("Result = %s\n", (char *)rv);
+   }
+
+   /* Destroy client */
+   printf("destroying client\n");
+   clnt_destroy(clnt);
+   printf("returning to main\n");
 }
 
 /* Creates a single client and sends an fep_reply to the ATMS */
 int main(int argc, char *argv[]) {
-	char *host;
-
-	if (argc < 2)
-	{
-		printf("usage:  %s server_host\n", argv[0]);
-		exit(1);
-    }
-
-    /* Create RPC Client to send an fep_reply to ATMS */
-	host = argv[1];
-	fep_program_32(host);
-
-	return 0;
+   char *host;
+
+   if (argc < 2)
+   {
+      printf("usage:  %s server_host\n", argv[0]);
+      exit(1);
+   }
+
+   /* Create RPC Client to send an fep_reply to ATMS */
+   host = argv[1];
+   FEPClient cli;
+   cli.fep_program_32(host);
+
+   return 0;
 }
