[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