Added hack for letting nodes signal that they are 'done'. The simulator exits when all nodes are done. Fixed random initialization so that it is different for all nodes.
This commit is contained in:
parent
0ed1d401d5
commit
c67ce1c1b0
9 changed files with 89 additions and 21 deletions
|
@ -30,7 +30,7 @@
|
|||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
* $Id: nodes.c,v 1.2 2006/09/26 22:10:12 adamdunkels Exp $
|
||||
* $Id: nodes.c,v 1.3 2006/10/23 09:01:06 adamdunkels Exp $
|
||||
*/
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
|
@ -51,13 +51,15 @@ nodes_init(void)
|
|||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
nodes_add(int pid, int x, int y, int port)
|
||||
nodes_add(int pid, int x, int y, int port, int id)
|
||||
{
|
||||
nodes[numnodes].pid = pid;
|
||||
nodes[numnodes].x = x;
|
||||
nodes[numnodes].y = y;
|
||||
nodes[numnodes].port = port;
|
||||
nodes[numnodes].leds = 0;
|
||||
nodes[numnodes].done = 0;
|
||||
nodes[numnodes].id = id;
|
||||
++numnodes;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
@ -126,3 +128,24 @@ nodes_find_pid(pid_t pid)
|
|||
return NULL;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
void
|
||||
nodes_done(int id)
|
||||
{
|
||||
int i;
|
||||
int num_done = 0;
|
||||
|
||||
for(i = numnodes; i >= 0; --i) {
|
||||
if(nodes[i].id == id) {
|
||||
nodes[i].done = 1;
|
||||
}
|
||||
if(nodes[i].done != 0) {
|
||||
num_done++;
|
||||
}
|
||||
}
|
||||
|
||||
if(num_done == numnodes) {
|
||||
ether_print_stats();
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue