112 lines
2.2 KiB
Text
112 lines
2.2 KiB
Text
|
Process Rosa{
|
||
|
int nbomb = 0;
|
||
|
bool vaiMario = true;
|
||
|
signal s;
|
||
|
process p;
|
||
|
port signal friggi_i;
|
||
|
port signal friggi_f;
|
||
|
port signal servi_i;
|
||
|
port signal servi_f;
|
||
|
port signal segnalaMario;
|
||
|
|
||
|
do
|
||
|
* vaiMario == true; p = receive(s) from friggi_i; ->
|
||
|
vaiMario = false;
|
||
|
send(nbomb) to p.ok;
|
||
|
|
||
|
* ; p = receive(s) from friggi_f; ->
|
||
|
nbomb = 30;
|
||
|
|
||
|
* nbomb > 0 and !vaiMario; p = receive(s) from servi_i; ->
|
||
|
send(s) to p.ok;
|
||
|
|
||
|
* ; p = receive(s) from servi_f; ->
|
||
|
nbomb--;
|
||
|
send(nbomb) to p.rimasti;
|
||
|
|
||
|
* ; p = receive(s) from segnalaMario; ->
|
||
|
vaiMario = true;
|
||
|
|
||
|
od
|
||
|
}
|
||
|
|
||
|
Process Clock{
|
||
|
int now = 0;
|
||
|
int alarm = -1;
|
||
|
signal s;
|
||
|
process p;
|
||
|
|
||
|
do
|
||
|
* ; p = receive(s) from tick; ->
|
||
|
now++;
|
||
|
if(now >= alarm and alarm != -1){
|
||
|
alarm = -1;
|
||
|
send(s) to Rosa.segnalaMario;
|
||
|
}
|
||
|
|
||
|
* ; p = receive(n) from set_timer; ->
|
||
|
if(n == 0){
|
||
|
alarm = -1;
|
||
|
send(s) to Rosa.segnalaMario;
|
||
|
} else {
|
||
|
alarm = now + n;
|
||
|
}
|
||
|
|
||
|
od
|
||
|
}
|
||
|
|
||
|
Process Mario{
|
||
|
int nbomb = 0;
|
||
|
signal s;
|
||
|
port int ok;
|
||
|
while(true){
|
||
|
send(s) to Rosa.friggi_i;
|
||
|
p = receive(nbomb) from ok;
|
||
|
if(nbomb > 0){
|
||
|
< butta >
|
||
|
}
|
||
|
< friggi >
|
||
|
Clock.set_timer(60 minuti);
|
||
|
send(s) to Rosa.friggi_f;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Process Piero{
|
||
|
int nbomb = 0;
|
||
|
signal s;
|
||
|
port int rimasti;
|
||
|
port signal ok;
|
||
|
process p;
|
||
|
process cliente;
|
||
|
|
||
|
while(true){
|
||
|
client = receive(s) from nuovo_cliente;
|
||
|
send(s) to Rosa.servi_i;
|
||
|
p = receive(s) from ok;
|
||
|
< servi cliente >
|
||
|
send(s) to cliente.rilascio;
|
||
|
send(s) to Rosa.servi_f;
|
||
|
p = receive(nbomb) from rimasti;
|
||
|
if(rimasti == 0){
|
||
|
Clock.set_timer(0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Process Cliente{
|
||
|
signal s;
|
||
|
port signal rilascio;
|
||
|
process p;
|
||
|
send(s) to Piero.nuovo_cliente;
|
||
|
p = receive(s) from rilascio;
|
||
|
< mangia >
|
||
|
< esci >
|
||
|
}
|
||
|
|
||
|
Process HWClock{
|
||
|
signal s;
|
||
|
while(true){
|
||
|
< hw tick >
|
||
|
send(s) to Clock.tick;
|
||
|
}
|
||
|
}
|