sim_gain.c

来自「tinyos-2.0源代码!转载而已!要的尽管拿!」· C语言 代码 · 共 152 行

C
152
字号
#include <sim_gain.h>typedef struct sim_gain_noise {  double mean;  double range;} sim_gain_noise_t;gain_entry_t* connectivity[TOSSIM_MAX_NODES];sim_gain_noise_t noise[TOSSIM_MAX_NODES];double sensitivity = 4.0;gain_entry_t* sim_gain_allocate_link(int mote);void sim_gain_deallocate_link(gain_entry_t* link);gain_entry_t* sim_gain_first(int src) __attribute__ ((C, spontaneous)) {  return connectivity[src];}gain_entry_t* sim_gain_next(gain_entry_t* link) __attribute__ ((C, spontaneous)) {  return link->next;}void sim_gain_add(int src, int dest, double gain) __attribute__ ((C, spontaneous))  {  gain_entry_t* current;  int temp = sim_node();  sim_set_node(src);  current = connectivity[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 = connectivity[src];  while (current != NULL) {    if (current->mote == dest) {      sim_set_node(temp);      return current->gain;    }    current = current->next;  }  sim_set_node(temp);  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 = connectivity[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();  sim_set_node(src);      current = connectivity[src];  prevLink = NULL;      while (current != NULL) {    if (current->mote == dest) {      if (prevLink == NULL) {	connectivity[src] = current->next;      }      else {	prevLink->next = current->next;      }      sim_gain_deallocate_link(current);      current = prevLink->next;    }    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))  {  noise[node].mean = mean;  noise[node].range = range;}double sim_gain_noise_mean(int node) {  return noise[node].mean;}double sim_gain_noise_range(int node) {  return noise[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 = noise[node].mean;  double adjust = (sim_random() % 2000000);  adjust /= 1000000.0;  adjust -= 1.0;  adjust *= noise[node].range;  return val + adjust;}gain_entry_t* sim_gain_allocate_link(int mote) {  gain_entry_t* link = (gain_entry_t*)malloc(sizeof(gain_entry_t));  link->next = NULL;  link->mote = mote;  link->gain = -10000000.0;  return link;}void sim_gain_deallocate_link(gain_entry_t* link) __attribute__ ((C, spontaneous)) {  free(link);}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 + =
减小字号Ctrl + -
显示快捷键?