[Sumover-dev] [svn commit] r4265 - vic/branches/cc/cc

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Tue Aug 12 17:53:18 BST 2008


Author: soohyunc
Date: Tue Aug 12 17:53:18 2008
New Revision: 4265

Modified:
   vic/branches/cc/cc/tfwc_rcvr.cpp
   vic/branches/cc/cc/tfwc_rcvr.h
   vic/branches/cc/cc/tfwc_sndr.cpp
   vic/branches/cc/cc/tfwc_sndr.h

Log:
start commiting the main TFWC algorith stuffs

o  proto-type of TfwcRcvr  
   (setting AckVec function implemented)
o  To-do: AckVec trim stuffs need to be added later (not critical at the moment)



Modified: vic/branches/cc/cc/tfwc_rcvr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_rcvr.cpp	(original)
+++ vic/branches/cc/cc/tfwc_rcvr.cpp	Tue Aug 12 17:53:18 2008
@@ -45,38 +45,36 @@
 #include "tfwc_rcvr.h"
 
 TfwcRcvr::TfwcRcvr() :
-	seqno_(0) 
+	currseq_(0),
+	prevseq_(0)
 {}
 
 void TfwcRcvr::tfwc_rcvr_recv(u_int16_t seqno, 
 				u_int16_t ackofack, u_int32_t ts) 
 {
-	seqno_ = seqno;
+	debug_msg("received seqno:  %d\n", seqno);
+
+	// parse the current received seqno, ackofack, and timestamp
+	currseq_ = seqno;
 	ackofack_ = ackofack;
-	ts_echo_ = ts;
-	debug_msg("received seqno:  %d\n", seqno_);
-}
+	ts_echo_ = ts;		
 
-void TfwcRcvr::set_received_seqno(u_int16_t seqno, u_int16_t lastseq) 
-{
-	seqno_ = seqno;
-	lastseq_ = lastseq;
-	ackvec_manager(seqno_, lastseq_);
-}
+	// there is no packet loss
+	if (currseq_ == prevseq_ + 1) {
+		// set next bit to 1
+		SET_BIT_VEC(tfwcAV, 1);
+	} 
+	// we have one or more packet loss
+	else {
+		// number of packet loss
+		int cnt = currseq_ - prevseq_ - 1;
 
-void TfwcRcvr::ackvec_manager(u_int16_t seqno, u_int16_t lastseq)
-{
-	// set next ackvec bit vector
-	for (int i = lastseq+1; i <= seqno; i++) {
-		SET_BIT_VEC (tfwcAV, 1);
+		// set next bit to 0
+		for (int i = 0; i < cnt; i++) {
+			SET_BIT_VEC(tfwcAV, 0);
+		}
 	}
 
-	// printing tfwcAV
-	bool isThere;
-	debug_msg("XXX received ackvec:");
-	for (int i = lastseq+1; i <= seqno; i++) {
-		isThere = SEE_BIT_VEC (tfwcAV, i, seqno);
-		printf(" %d... %s ", seqno, isThere ? "Ok" : "Nok");
-	}
-	printf("\n");
+	// set this seqno to the prevseq before exit
+	prevseq_ = currseq_;
 }

Modified: vic/branches/cc/cc/tfwc_rcvr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_rcvr.h	(original)
+++ vic/branches/cc/cc/tfwc_rcvr.h	Tue Aug 12 17:53:18 2008
@@ -39,26 +39,24 @@
 #include "tfwc_sndr.h"
 
 // set AckVec bitmap
-#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
+//#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
 
 // see AckVec bitmap
-#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
+//#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
 
 class TfwcRcvr {
 public:
 	TfwcRcvr();
 	void tfwc_rcvr_recv(u_int16_t seqno, u_int16_t ackofack, u_int32_t ts);
-	void set_received_seqno(u_int16_t seqno, u_int16_t lastseq);
 
 protected:
 	inline u_int32_t tfwc_rcvr_getvec() { return tfwcAV; }
 	inline u_int32_t tfwc_rcvr_ts_echo() { return ts_echo_; }
 	u_int32_t tfwcAV;	// AckVec (bit vector)
-	u_int16_t seqno_;	// received RTP packet seqno
+	u_int16_t currseq_;	// current sequence number
+	u_int16_t prevseq_;	// previous sequence number
 	u_int16_t ackofack_;	// ackofack
-	u_int16_t lastseq_;	// last RTP packet seqno
 private:
-	void ackvec_manager(u_int16_t seqno, u_int16_t latseq);
 	u_int32_t ts_echo_;	// for time stamp echoing
 };
 

Modified: vic/branches/cc/cc/tfwc_sndr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.cpp	(original)
+++ vic/branches/cc/cc/tfwc_sndr.cpp	Tue Aug 12 17:53:18 2008
@@ -47,7 +47,8 @@
 #define DUPACKS	3	// simulating TCP's 3 dupacks
 
 TfwcSndr::TfwcSndr() :
-	seqno_(0) 
+	seqno_(0),
+	aoa_(0)
 {
 	u_int32_t marginvec_ = 0xe0000000;
 }

Modified: vic/branches/cc/cc/tfwc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.h	(original)
+++ vic/branches/cc/cc/tfwc_sndr.h	Tue Aug 12 17:53:18 2008
@@ -36,6 +36,12 @@
 #ifndef vic_tfwc_sndr_h
 #define vic_tfwc_sndr_h
 
+// set AckVec bitmap
+#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
+
+// see AckVec bitmap
+#define SEE_BIT_VEC(ackvec_, ix, seqno) ((1 << (seqno - ix)) & ackvec_)
+
 class TfwcSndr {
 public:
 	TfwcSndr();



More information about the Sumover-dev mailing list