我是新手Jspin
和Promela
。我试图实现以下系统:
家庭警报系统可以使用个人 ID 密钥或密码来激活和停用,激活后系统进入大约 30 秒的等待期,该时间允许用户撤离安全区域,之后警报被布防,即使是在入侵时检测到警报有一个内置的等待时间或延迟 15 秒,以允许入侵者输入密码或刷卡钥匙从而识别自己,如果在分配的 15 秒内未进行识别,警报将响起并将一直打开,直到使用身份证或密码将其停用。
这是代码:
mtype = {sigact, sigdeact};
chan signal = [0] of {mtype};
/*chan syntax for declaring and initializing message passing channels*/
int count;
bool alarm_off = true; /*The initial state of the alarm is off*/
active proctype alarm()
{
off:
if
:: count >= 30 -> atomic {signal!sigdeact; count = 0;alarm_off = false; goto on;}
:: else -> atomic {count++; alarm_off = true; goto off;}
fi;
on:
if
:: count >=15 -> atomic { signal!sigact; count = 0;
alarm_off = false; goto off;}
:: else -> atomic {signal!sigact; alarm_off = true; goto off;}
fi;
pending:
if
:: count >= 30 -> atomic {count = 0; alarm_off = false; goto on;}
:: count < 30 -> atomic {count++; alarm_off = false; goto pending;}
fi;
}
当我运行代码时,Jspin
我收到以下消息:
Error: undeclared variable: sigact
但我在标题中声明了这一点。
我该如何解决这个问题?