📄 sim_binary.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 + -