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

📄 sim_binary.c

📁 tinyos2.0版本驱动
💻 C
字号:
#include <sim_binary.h>link_t* connectivity[TOSSIM_MAX_NODES];link_t* allocate_link(int mote);void deallocate_link(link_t* link);link_t* sim_binary_first(int src) __attribute__ ((C, spontaneous)) {  return connectivity[src];}link_t* sim_binary_next(link_t* link) __attribute__ ((C, spontaneous)) {  return link->next;}void sim_binary_add(int src, int dest, double packetLoss) __attribute__ ((C, spontaneous))  {  link_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 = allocate_link(dest);  }  current->mote = dest;  current->loss = packetLoss;  current->next = connectivity[src];  connectivity[src] = current;  dbg("Binary", "Adding link from %i to %i with loss %llf\n", src, dest, packetLoss);  sim_set_node(temp);}double sim_binary_loss(int src, int dest) __attribute__ ((C, spontaneous))  {  link_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->loss;    }    current = current->next;  }  sim_set_node(temp);  return 1.0;}bool sim_binary_connected(int src, int dest) __attribute__ ((C, spontaneous)) {  link_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_binary_remove(int src, int dest) __attribute__ ((C, spontaneous))  {  link_t* current;  link_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;      }      deallocate_link(current);      current = prevLink->next;    }    else {      prevLink = current;      current = current->next;    }  }  sim_set_node(temp);} link_t* allocate_link(int mote) {   link_t* link = (link_t*)malloc(sizeof(link_t));   link->next = NULL;   link->mote = mote;   link->loss = 1.0;   return link; } void deallocate_link(link_t* link) {   free(link); }

⌨️ 快捷键说明

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