]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/tossim/sim_noise.c
Undo incorrect bug fix.
[tinyos-2.x.git] / tos / lib / tossim / sim_noise.c
index 6a5dca745ed6679ae7a78d3f9aaade432f125783..d766464617fea1cb96925023f234d14ef59288ef 100644 (file)
@@ -92,12 +92,16 @@ void sim_noise_trace_add(uint16_t node_id, char noiseVal)__attribute__ ((C, spon
   }
   noiseData[node_id].noiseTrace[noiseData[node_id].noiseTraceIndex] = noiseVal;
   noiseData[node_id].noiseTraceIndex++;
+  dbg("Insert", "Adding noise value %i for %i of %i\n", (int)noiseData[node_id].noiseTraceIndex, (int)node_id, (int)noiseVal);
 }
 
 
 uint8_t search_bin_num(char noise)__attribute__ ((C, spontaneous))
 {
   uint8_t bin;
+  if (noise > NOISE_MAX || noise < NOISE_MIN) {
+    noise = NOISE_MIN;
+  }
   bin = (noise-NOISE_MIN)/NOISE_QUANTIZE_INTERVAL + 1;
   return bin;
 }
@@ -130,7 +134,7 @@ void sim_noise_add(uint16_t node_id, char noise)__attribute__ ((C, spontaneous))
   char *key = noiseData[node_id].key;
   sim_noise_hash_t *noise_hash;
   noise_hash = (sim_noise_hash_t *)hashtable_search(pnoiseTable, key);
-  dbg("Insert,HashZeroDebug", "Adding noise value %hhi\n", noise);
+  dbg("Insert", "Adding noise value %hhi\n", noise);
   if (noise_hash == NULL)      {
     noise_hash = (sim_noise_hash_t *)malloc(sizeof(sim_noise_hash_t));
     memcpy((void *)(noise_hash->key), (void *)key, NOISE_HISTORY);
@@ -243,9 +247,16 @@ void makePmfDistr(uint16_t node_id)__attribute__ ((C, spontaneous))
   arrangeKey(node_id);
   for(i = NOISE_HISTORY; i < noiseData[node_id].noiseTraceIndex; i++) {
     if (i == NOISE_HISTORY) {
-      printf("Inserting first element.\n");
+      //printf("Inserting first element.\n");
     }
     pKey[NOISE_HISTORY-1] = search_bin_num(noiseData[node_id].noiseTrace[i]);
+    dbg("TestCorrupt", "Looking up with key ");
+    {
+      int ctr;
+      for(ctr = 0; ctr < NOISE_HISTORY; ctr++)
+       dbg_clear("TestCorrupt", "%0.3hhi ", pKey[ctr]);
+    }
+    dbg_clear("TestCorrupt", "\n");
     sim_noise_dist(node_id);
     arrangeKey(node_id);
   }
@@ -330,6 +341,11 @@ char sim_noise_generate(uint16_t node_id, uint32_t cur_t)__attribute__ ((C, spon
 
   prev_t = noiseData[node_id].noiseGenTime;
 
+  if (noiseData[node_id].generated == 0) {
+    dbgerror("TOSSIM", "Tried to generate noise from an uninitialized radio model of node %hu.\n", node_id);
+    return 127;
+  }
+  
   if ( (0<= cur_t) && (cur_t < NOISE_HISTORY) ) {
     noiseData[node_id].noiseGenTime = cur_t;
     noiseData[node_id].key[cur_t] = search_bin_num(noiseData[node_id].noiseTrace[cur_t]);
@@ -374,6 +390,7 @@ void makeNoiseModel(uint16_t node_id)__attribute__ ((C, spontaneous)) {
   int i;
   for(i=0; i<NOISE_HISTORY; i++) {
     noiseData[node_id].key[i] = search_bin_num(noiseData[node_id].noiseTrace[i]);
+    dbg("Insert", "Setting history %i to be %i\n", (int)i, (int)noiseData[node_id].key[i]);
   }
   
   sim_noise_add(node_id, noiseData[node_id].noiseTrace[NOISE_HISTORY]);
@@ -384,6 +401,7 @@ void makeNoiseModel(uint16_t node_id)__attribute__ ((C, spontaneous)) {
     sim_noise_add(node_id, noiseData[node_id].noiseTrace[i+1]);
     arrangeKey(node_id);
   }
+  noiseData[node_id].generated = 1;
 }