[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tossim SerialActiveMessageC.nc, 1.1.2.2, 1.1.2.3 TossimActiveMessageP.nc, 1.1.2.9, 1.1.2.10 TossimPacketModelC.nc, 1.1.2.6, 1.1.2.7 UscGainInterferenceModelC.nc, 1.1.2.9, 1.1.2.10

Phil Levis scipio at users.sourceforge.net
Fri Sep 8 10:48:08 PDT 2006


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

Modified Files:
      Tag: tinyos-2_0_devel-BRANCH
	SerialActiveMessageC.nc TossimActiveMessageP.nc 
	TossimPacketModelC.nc UscGainInterferenceModelC.nc 
Log Message:
Fixed bug where nodes who were transmitting could receive packets.
Added source address to TOSSIM serial packets.



Index: SerialActiveMessageC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/SerialActiveMessageC.nc,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -C2 -d -r1.1.2.2 -r1.1.2.3
*** SerialActiveMessageC.nc	10 Jun 2006 02:02:46 -0000	1.1.2.2
--- SerialActiveMessageC.nc	8 Sep 2006 17:48:06 -0000	1.1.2.3
***************
*** 110,119 ****
    command am_addr_t AMPacket.destination(message_t* amsg) {
      serial_header_t* header = getHeader(amsg);
!     return header->addr;
    }
  
    command void AMPacket.setDestination(message_t* amsg, am_addr_t addr) {
      serial_header_t* header = getHeader(amsg);
!     header->addr = addr;
    }
  
--- 110,129 ----
    command am_addr_t AMPacket.destination(message_t* amsg) {
      serial_header_t* header = getHeader(amsg);
!     return header->dest;
    }
  
    command void AMPacket.setDestination(message_t* amsg, am_addr_t addr) {
      serial_header_t* header = getHeader(amsg);
!     header->dest = addr;
!   }
! 
!   command am_addr_t AMPacket.source(message_t* amsg) {
!     serial_header_t* header = getHeader(amsg);
!     return header->src;
!   }
! 
!   command void AMPacket.setSource(message_t* amsg, am_addr_t addr) {
!     serial_header_t* header = getHeader(amsg);
!     header->src = addr;
    }
  

Index: TossimActiveMessageP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/TossimActiveMessageP.nc,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -C2 -d -r1.1.2.9 -r1.1.2.10
*** TossimActiveMessageP.nc	4 Aug 2006 01:41:15 -0000	1.1.2.9
--- TossimActiveMessageP.nc	8 Sep 2006 17:48:06 -0000	1.1.2.10
***************
*** 61,64 ****
--- 61,65 ----
  					  message_t* amsg,
  					  uint8_t len) {
+     error_t err;
      tossim_header_t* header = getHeader(amsg);
      header->type = id;
***************
*** 66,70 ****
      header->src = call AMPacket.address();
      header->length = len;
!     return call Model.send((int)addr, amsg, len + sizeof(tossim_header_t));
    }
  
--- 67,72 ----
      header->src = call AMPacket.address();
      header->length = len;
!     err = call Model.send((int)addr, amsg, len + sizeof(tossim_header_t));
!     return err;
    }
  
***************
*** 106,110 ****
      uint8_t len;
      void* payload;
!     
      memcpy(bufferPointer, msg, sizeof(message_t));
      payload = call Packet.getPayload(bufferPointer, &len);
--- 108,112 ----
      uint8_t len;
      void* payload;
! 
      memcpy(bufferPointer, msg, sizeof(message_t));
      payload = call Packet.getPayload(bufferPointer, &len);

Index: TossimPacketModelC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/TossimPacketModelC.nc,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -C2 -d -r1.1.2.6 -r1.1.2.7
*** TossimPacketModelC.nc	5 Jun 2006 16:48:40 -0000	1.1.2.6
--- TossimPacketModelC.nc	8 Sep 2006 17:48:06 -0000	1.1.2.7
***************
*** 65,68 ****
--- 65,69 ----
    uint8_t neededFreeSamples;
    message_t* sending = NULL;
+   bool transmitting = FALSE;
    uint8_t sendingLength = 0;
    int destNode;
***************
*** 209,213 ****
        delay *= (sim_ticks_per_sec() / sim_csma_symbols_per_sec());
        evt->time += delay;
!       
        evt->handle = send_transmit;
        sim_queue_insert(evt);
--- 210,214 ----
        delay *= (sim_ticks_per_sec() / sim_csma_symbols_per_sec());
        evt->time += delay;
!       transmitting = TRUE;
        evt->handle = send_transmit;
        sim_queue_insert(evt);
***************
*** 267,270 ****
--- 268,272 ----
      message_t* rval = sending;
      sending = NULL;
+     transmitting = FALSE;
      dbg("TossimPacketModelC", "PACKET: Signaling send done at %llu.\n", sim_time());
      signal Packet.sendDone(rval, SUCCESS);
***************
*** 272,276 ****
  
    event void GainRadioModel.receive(message_t* msg) {
!     if (running) {
        signal Packet.receive(msg);
      }
--- 274,278 ----
  
    event void GainRadioModel.receive(message_t* msg) {
!     if (running && !transmitting) {
        signal Packet.receive(msg);
      }

Index: UscGainInterferenceModelC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tossim/UscGainInterferenceModelC.nc,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -C2 -d -r1.1.2.9 -r1.1.2.10
*** UscGainInterferenceModelC.nc	5 Jun 2006 16:48:40 -0000	1.1.2.9
--- UscGainInterferenceModelC.nc	8 Sep 2006 17:48:06 -0000	1.1.2.10
***************
*** 141,145 ****
        if (list != mine) {
  	if ((list->power - sim_gain_sensitivity()) < heardSignal()) {
! 	  dbg("Gain", "Lost packet from %i as power %lf was too low\n", list->source, list->power);
  	  list->lost = 1;
  	}
--- 141,145 ----
        if (list != mine) {
  	if ((list->power - sim_gain_sensitivity()) < heardSignal()) {
! 	  dbg("Gain", "Lost packet from %i as I concurrently received a packet stronger than %lf\n", list->source, list->power);
  	  list->lost = 1;
  	}
***************
*** 158,162 ****
  
      if ((mine->power - sim_gain_sensitivity()) < heardSignal()) {
!       dbg("Gain", "Lost packet as power %lf was too low\n", mine->power);
        mine->lost = 1;
      }
--- 158,162 ----
  
      if ((mine->power - sim_gain_sensitivity()) < heardSignal()) {
!       dbg("Gain", "Lost packet from %i as its power %lf was below sensitivity threshold\n", mine->source, mine->power);
        mine->lost = 1;
      }
***************
*** 191,194 ****
--- 191,195 ----
    void enqueue_receive_event(int source, sim_time_t endTime, message_t* msg, bool receive, double power) {
      sim_event_t* evt;
+     receive_message_t* list;
      receive_message_t* rcv = allocate_receive_message();
      double sigStr = heardSignal();
***************
*** 209,225 ****
        rcv->lost = 1;
      }
!     else {
!       if ((sigStr + sim_gain_sensitivity()) >= power) {
! 	dbg("Gain", "Lost packet from %i due to power being too low (%f >= %f)\n", source, sigStr, power);
! 	rcv->lost = 1;
!       }
!       else if (receiving) {
! 	dbg("Gain", "Lost packet from %i due to being in the midst of a reception.\n", source);
! 	rcv->lost = 1;
!       }
!       if (power >= sim_gain_noise_mean(sim_node()) + sim_gain_noise_range(sim_node())) {
! 	receiving = 1;
        }
      }
      rcv->next = outstandingReceptionHead;
      
--- 210,234 ----
        rcv->lost = 1;
      }
!     else if ((sigStr + sim_gain_sensitivity()) >= power) {
!       dbg("Gain", "Lost packet from %i due to power being below reception threshold (%f >= %f)\n", source, sigStr, power);
!       rcv->lost = 1;
!     }
!     else if (receiving) {
!       dbg("Gain", "Lost packet from %i due to being in the midst of a reception.\n", source);
!       rcv->lost = 1;
!     }
!     else { // We are on, are not receiving a packet, and the packet is above the noise floor
!       receiving = 1;
!     }
! 
!     list = outstandingReceptionHead;
!     while (list != NULL) {
!       if ((list->power - sim_gain_sensitivity()) < power) {
! 	dbg("Gain", "Lost packet from %i as I concurrently received a packet from %i stronger than %lf\n", list->source, source, list->power);
! 	list->lost = 1;
        }
+       list = list->next;
      }
+     
      rcv->next = outstandingReceptionHead;
      



More information about the Tinyos-2-commits mailing list