module telephone : input SECONDE; input DECROCHER; input SAISIE_NUMERO; input APPEL; input RACCROCHER; output TEMPS_DE_COMMUNICATION:=0 : integer; output SONNERIE; output ECHEC_APPEL; loop var echec : boolean in await DECROCHER; echec:=false; abort await 10 SECONDE; emit ECHEC_APPEL; echec:=true; when SAISIE_NUMERO; if not echec then abort var total :=0 : integer in every SECONDE do total:=total+1; emit TEMPS_DE_COMMUNICATION(total); end every; end var; when RACCROCHER; else await RACCROCHER; end if; end var; end loop; || loop var echec : boolean in await APPEL; echec:=false; abort abort every SECONDE do emit SONNERIE; end every; when 20 SECONDE; emit ECHEC_APPEL; echec:=true; when DECROCHER; if not echec then abort var total :=0 : integer in every SECONDE do total:=total+1; emit TEMPS_DE_COMMUNICATION(total); end every; end var; when RACCROCHER; end if; end var; end loop; end module