[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tossim CpmModelC.nc, 1.1, 1.2 TossimActiveMessageP.nc, 1.4, 1.5 sim_gain.c, 1.4, 1.5

Phil Levis scipio at users.sourceforge.net
Tue Apr 10 18:29:47 PDT 2007


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17411

Modified Files:
	CpmModelC.nc TossimActiveMessageP.nc sim_gain.c 
Log Message:
Fix signal-to-noise calculations.


Index: CpmModelC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/CpmModelC.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CpmModelC.nc	1 Apr 2007 00:29:34 -0000	1.1
--- CpmModelC.nc	11 Apr 2007 01:29:44 -0000	1.2
***************
*** 114,118 ****
      uint16_t node_id = sim_node();
  
!     dbg("SNIST_1", "IN: noise_hash_generation()\n");
      if (5 <= remain && remain < 10) {
  	noise_val = (double)sim_noise_generate(node_id, quotient+1);
--- 114,118 ----
      uint16_t node_id = sim_node();
  
!     dbg("CpmModelC", "IN: noise_hash_generation()\n");
      if (5 <= remain && remain < 10) {
  	noise_val = (double)sim_noise_generate(node_id, quotient+1);
***************
*** 121,125 ****
        noise_val = (double)sim_noise_generate(node_id, quotient);
      }
!     dbg("SNIST_1", "OUT: noise_hash_generation()\n");
  
      return noise_val;
--- 121,125 ----
        noise_val = (double)sim_noise_generate(node_id, quotient);
      }
!     dbg("CpmModelC", "OUT: noise_hash_generation()\n");
  
      return noise_val;
***************
*** 140,144 ****
    sim_event_t receiveEvent;
    // This clear threshold comes from the CC2420 data sheet
!   double clearThreshold = -95.0;
    bool collision = FALSE;
    message_t* incoming = NULL;
--- 140,144 ----
    sim_event_t receiveEvent;
    // This clear threshold comes from the CC2420 data sheet
!   double clearThreshold = -72.0;
    bool collision = FALSE;
    message_t* incoming = NULL;
***************
*** 147,156 ****
    command void Model.setClearValue(double value) {
      clearThreshold = value;
!     dbg("SNIST_1", "Setting clear threshold to %f\n", clearThreshold);
  	
    }
    
    command bool Model.clearChannel() {
!     dbg("SNIST_1", "Checking clear channel @ %s: %f <= %f \n", sim_time_string(), (double)noise_hash_generation(), clearThreshold);
      return noise_hash_generation() < clearThreshold;
    }
--- 147,156 ----
    command void Model.setClearValue(double value) {
      clearThreshold = value;
!     dbg("CpmModelC", "Setting clear threshold to %f\n", clearThreshold);
  	
    }
    
    command bool Model.clearChannel() {
!     dbg("CpmModelC", "Checking clear channel @ %s: %f <= %f \n", sim_time_string(), (double)noise_hash_generation(), clearThreshold);
      return noise_hash_generation() < clearThreshold;
    }
***************
*** 174,178 ****
      double PSE = 0.5*erfc(beta1*sqrt(X/2));
      double prr_hat = pow(1-PSE, 23*2);
! 
      if (prr_hat > 1)
        prr_hat = 1;
--- 174,178 ----
      double PSE = 0.5*erfc(beta1*sqrt(X/2));
      double prr_hat = pow(1-PSE, 23*2);
!     dbg("CpmModelC", "SNR is %lf, PRR is %lf\n", SNR, prr_hat);
      if (prr_hat > 1)
        prr_hat = 1;
***************
*** 205,209 ****
      }
      noise = 10.0 * log(noise) / log(10.0);
!     return shouldReceive(msg->power / noise);
    }
    
--- 205,209 ----
      }
      noise = 10.0 * log(noise) / log(10.0);
!     return shouldReceive(msg->power - noise);
    }
    
***************
*** 231,235 ****
      receive_message_t* list = outstandingReceptionHead;
  
!     dbg("SNIST_1", "Handling reception event @ %s.\n", sim_time_string());
      while (list != NULL) {
        if (list->next == mine) {
--- 231,235 ----
      receive_message_t* list = outstandingReceptionHead;
  
!     dbg("CpmModelC", "Handling reception event @ %s.\n", sim_time_string());
      while (list != NULL) {
        if (list->next == mine) {
***************
*** 245,268 ****
      }
      else {
!       dbgerror("SNIST", "Incoming packet list structure is corrupted: entry is not the head and no entry points to it.\n");
      }
      
      if (!checkReceive(mine)) {
!       dbg("SNIST", "Lost packet as SNR was too low.\n");
        mine->lost = 1;
      }
      
      if (!mine->lost) {
!       dbg_clear("SNIST", "  -signaling reception, ");
        signal Model.receive(mine->msg);
        if (mine->ack) {
!         dbg_clear("SNIST", " acknowledgment requested, ");
        }
        else {
!         dbg_clear("SNIST", " no acknowledgment requested.\n");
        }
        // If we scheduled an ack, receiving = 0 when it completes
        if (mine->ack && signal Model.shouldAck(mine->msg)) {
!         dbg_clear("SNIST", " scheduling ack.\n");
  	sim_gain_schedule_ack(mine->source, sim_time() + 1); 
        }
--- 245,268 ----
      }
      else {
!       dbgerror("CpmModelC", "Incoming packet list structure is corrupted: entry is not the head and no entry points to it.\n");
      }
      
      if (!checkReceive(mine)) {
!       dbg("CpmModelC", "Lost packet as SNR was too low.\n");
        mine->lost = 1;
      }
      
      if (!mine->lost) {
!       dbg_clear("CpmModelC", "  -signaling reception, ");
        signal Model.receive(mine->msg);
        if (mine->ack) {
!         dbg_clear("CpmModelC", " acknowledgment requested, ");
        }
        else {
!         dbg_clear("CpmModelC", " no acknowledgment requested.\n");
        }
        // If we scheduled an ack, receiving = 0 when it completes
        if (mine->ack && signal Model.shouldAck(mine->msg)) {
!         dbg_clear("CpmModelC", " scheduling ack.\n");
  	sim_gain_schedule_ack(mine->source, sim_time() + 1); 
        }
***************
*** 272,280 ****
      else {
        receiving = 0;
!       dbg_clear("SNIST", "  -packet was lost.\n");
      }
      free(mine);
    }
!   
    // Create a record that a node is receiving a packet,
    // enqueue a receive event to figure out what happens.
--- 272,280 ----
      else {
        receiving = 0;
!       dbg_clear("CpmModelC", "  -packet was lost.\n");
      }
      free(mine);
    }
!    
    // Create a record that a node is receiving a packet,
    // enqueue a receive event to figure out what happens.
***************
*** 297,301 ****
  
      if (!sim_mote_is_on(sim_node())) { 
!       dbg("SNIST", "Lost packet from %i due to %i being off\n", source, sim_node());
        rcv->lost = 1;
      }
--- 297,301 ----
  
      if (!sim_mote_is_on(sim_node())) { 
!       dbg("CpmModelC", "Lost packet from %i due to %i being off\n", source, sim_node());
        rcv->lost = 1;
      }
***************
*** 317,321 ****
    void sim_gain_put(int dest, message_t* msg, sim_time_t endTime, bool receive, double power) {
      int prevNode = sim_node();
!     dbg("SNIST_1", "Enqueing reception event for %i at %llu.\n", dest, endTime);
      sim_set_node(dest);
      enqueue_receive_event(prevNode, endTime, msg, receive, power);
--- 317,321 ----
    void sim_gain_put(int dest, message_t* msg, sim_time_t endTime, bool receive, double power) {
      int prevNode = sim_node();
!     dbg("CpmModelC", "Enqueing reception event for %i at %llu with power %lf.\n", dest, endTime, power);
      sim_set_node(dest);
      enqueue_receive_event(prevNode, endTime, msg, receive, power);
***************
*** 327,335 ****
      requestAck = ack;
      outgoing = msg;
!     dbg("SNIST", "Node %i transmitting to %i, finishes at %llu.\n", sim_node(), dest, endTime);
  
      while (link != NULL) {
        int other = link->mote;
!       sim_gain_put(other, msg, endTime, ack && (other == dest), power);
        link = sim_gain_next(link);
      }
--- 327,335 ----
      requestAck = ack;
      outgoing = msg;
!     dbg("CpmModelC", "Node %i transmitting to %i, finishes at %llu.\n", sim_node(), dest, endTime);
  
      while (link != NULL) {
        int other = link->mote;
!       sim_gain_put(other, msg, endTime, ack && (other == dest), power + sim_gain_value(sim_node(), other));
        link = sim_gain_next(link);
      }

Index: TossimActiveMessageP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/TossimActiveMessageP.nc,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** TossimActiveMessageP.nc	12 Dec 2006 18:23:32 -0000	1.4
--- TossimActiveMessageP.nc	11 Apr 2007 01:29:44 -0000	1.5
***************
*** 63,66 ****
--- 63,67 ----
      error_t err;
      tossim_header_t* header = getHeader(amsg);
+     dbg("AM", "AM: Sending packet (id=%hhu, len=%hhu) to %hu\n", id, len, addr);
      header->type = id;
      header->dest = addr;

Index: sim_gain.c
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/sim_gain.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** sim_gain.c	1 Apr 2007 00:29:34 -0000	1.4
--- sim_gain.c	11 Apr 2007 01:29:44 -0000	1.5
***************
*** 61,64 ****
--- 61,65 ----
      if (current->mote == dest) {
        sim_set_node(temp);
+       dbg("Gain", "Getting link from %i to %i with gain %f\n", src, dest, current->gain);
        return current->gain;
      }
***************
*** 66,69 ****
--- 67,71 ----
    }
    sim_set_node(temp);
+   dbg("Gain", "Getting default link from %i to %i with gain %f\n", src, dest, 1.0);
    return 1.0;
  }



More information about the Tinyos-2-commits mailing list