⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sim_gain.c

📁 tinyos2.0版本驱动
💻 C
字号:
#include <sim_gain.h>typedef struct sim_gain_noise {  double mean;  double range;} sim_gain_noise_t;gain_entry_t* connectivity[TOSSIM_MAX_NODES + 1];sim_gain_noise_t localNoise[TOSSIM_MAX_NODES + 1];double sensitivity = 4.0;gain_entry_t* sim_gain_allocate_link(int mote);void sim_gain_deallocate_link(gain_entry_t* linkToDelete);gain_entry_t* sim_gain_first(int src) __attribute__ ((C, spontaneous)) {  if (src > TOSSIM_MAX_NODES) {    return connectivity[TOSSIM_MAX_NODES];  }   return connectivity[src];}gain_entry_t* sim_gain_next(gain_entry_t* currentLink) __attribute__ ((C, spontaneous)) {  return currentLink->next;}void sim_gain_add(int src, int dest, double gain) __attribute__ ((C, spontaneous))  {  gain_entry_t* current;  int temp = sim_node();  if (src > TOSSIM_MAX_NODES) {    src = TOSSIM_MAX_NODES;  }  sim_set_node(src);  current = sim_gain_first(src);  while (current != NULL) {    if (current->mote == dest) {      sim_set_node(temp);      break;    }    current = current->next;  }  if (current == NULL) {    current = sim_gain_allocate_link(dest);    current->next = connectivity[src];    connectivity[src] = current;  }  current->mote = dest;  current->gain = gain;  dbg("Gain", "Adding link from %i to %i with gain %f\n", src, dest, gain);  sim_set_node(temp);}double sim_gain_value(int src, int dest) __attribute__ ((C, spontaneous))  {  gain_entry_t* current;  int temp = sim_node();  sim_set_node(src);  current = sim_gain_first(src);  while (current != NULL) {    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;    }    current = current->next;  }  sim_set_node(temp);  dbg("Gain", "Getting default link from %i to %i with gain %f\n", src, dest, 1.0);  return 1.0;}bool sim_gain_connected(int src, int dest) __attribute__ ((C, spontaneous)) {  gain_entry_t* current;  int temp = sim_node();  sim_set_node(src);  current = sim_gain_first(src);  while (current != NULL) {    if (current->mote == dest) {      sim_set_node(temp);      return TRUE;    }    current = current->next;  }  sim_set_node(temp);  return FALSE;}  void sim_gain_remove(int src, int dest) __attribute__ ((C, spontaneous))  {  gain_entry_t* current;  gain_entry_t* prevLink;  int temp = sim_node();    if (src > TOSSIM_MAX_NODES) {    src = TOSSIM_MAX_NODES;  }  sim_set_node(src);      current = sim_gain_first(src);  prevLink = NULL;      while (current != NULL) {    gain_entry_t* tmp;    if (current->mote == dest) {      if (prevLink == NULL) {	connectivity[src] = current->next;      }      else {	prevLink->next = current->next;      }      tmp = current->next;      sim_gain_deallocate_link(current);      current = tmp;    }    else {      prevLink = current;      current = current->next;    }  }  sim_set_node(temp);}void sim_gain_set_noise_floor(int node, double mean, double range) __attribute__ ((C, spontaneous))  {  if (node > TOSSIM_MAX_NODES) {    node = TOSSIM_MAX_NODES;  }  localNoise[node].mean = mean;  localNoise[node].range = range;}double sim_gain_noise_mean(int node) {  if (node > TOSSIM_MAX_NODES) {    node = TOSSIM_MAX_NODES;  }  return localNoise[node].mean;}double sim_gain_noise_range(int node) {  if (node > TOSSIM_MAX_NODES) {    node = TOSSIM_MAX_NODES;  }  return localNoise[node].range;}// Pick a number a number from the uniform distribution of// [mean-range, mean+range].double sim_gain_sample_noise(int node)  __attribute__ ((C, spontaneous)) {  double val, adjust;  if (node > TOSSIM_MAX_NODES) {    node = TOSSIM_MAX_NODES;  }   val = localNoise[node].mean;  adjust = (sim_random() % 2000000);  adjust /= 1000000.0;  adjust -= 1.0;  adjust *= localNoise[node].range;  return val + adjust;}gain_entry_t* sim_gain_allocate_link(int mote) {  gain_entry_t* newLink = (gain_entry_t*)malloc(sizeof(gain_entry_t));  newLink->next = NULL;  newLink->mote = mote;  newLink->gain = -10000000.0;  return newLink;}void sim_gain_deallocate_link(gain_entry_t* linkToDelete) __attribute__ ((C, spontaneous)) {  free(linkToDelete);}void sim_gain_set_sensitivity(double s) __attribute__ ((C, spontaneous)) {  sensitivity = s;}double sim_gain_sensitivity() __attribute__ ((C, spontaneous)) {  return sensitivity;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -