/* Copyright 2002 Arizona Board of regents on behalf of * The University of Arizona * All Rights Reserved * (USE & RESTRICTION - Please read COPYRIGHT file) * * Developed by Nabanita Sen */ package SimpArc; import genDevs.modeling.*; import genDevs.simulation.*; import GenCol.*; import simView.*; import simView.ViewableAtomic; import java.lang.*; public class PhoneTester extends ViewableAtomic{ /*********************************************************/ public PhoneTester(){ this("PhoneTester"); } /***********************************************************/ public PhoneTester(String name){ super(name); addInport("Listen"); addOutport("pickUpHook"); addOutport("Dial"); addOutport("Result"); addTestInput("Listen",new entity("DialTone")); addTestInput("Listen",new entity("DialTone"),0.5); addTestInput("Listen",new entity("DialTone"),1.0); addTestInput("Listen",new entity("Ringing")); addTestInput("Listen",new entity("Ringing"),0.5); addTestInput("Listen",new entity("Busy")); addTestInput("Listen",new entity("Busy"),0.5); addTestInput("Listen",new entity("Answer")); addTestInput("Listen",new entity("Answer"),5); } /*******************************************************************/ public void initialize(){ phase = "Start"; sigma = 0; super.initialize(); } /********************************************************************/ public void deltext(double e,message x) { entity input = new entity() ; Continue(e); if (phaseIs("waitForTone")) { for (int i=0; i< x.size();i++) if (messageOnPort(x,"Listen",i)) { input = x.getValOnPort("Listen",i); if(input.equals(new entity("DialTone"))) holdIn("Dial",0); } return; } if (phaseIs("waitForRing")) { for (int i=0; i< x.size();i++) if (messageOnPort(x,"Listen",i)) { input = x.getValOnPort("Listen", i); if(input.equals(new entity("Ringing"))) holdIn("waitForAnswer",10); } return; } if (phaseIs("waitForAnswer")) { for (int i=0; i< x.size();i++) if (messageOnPort(x,"Listen",i)) { input = x.getValOnPort("Listen", i); if(input.equals(new entity("Answer"))) holdIn("Success",0); else if(input.equals(new entity("Busy"))) holdIn("Start",0); } return; } } /*******************************************************************/ public void deltint( ) { if (phaseIs("Start")) { phase="waitForTone"; sigma = 1; return;} if (phaseIs("waitForTone")) { holdIn("NoTone",INFINITY);return;} if (phaseIs("Dial")) {holdIn("waitForRing",1);return;} if (phaseIs("waitForRing")) {passivate();return;} if (phaseIs("waitForAnswer")) {passivate();return;} if (phaseIs("Success")) {passivate();return;} } /**********************************************************************/ public void deltcon(double e,message x) { deltint(); deltext(0,x); } /********************************************************************/ public message out( ) { message m = new message(); if (phaseIs("Start")) { content con = makeContent("pickUpHook", new entity("pickUpHook")); m.add(con); } if (phaseIs("waitForTone")||phaseIs("waitForRing")) { content con = makeContent("Result", new entity("Fail")); m.add(con); } if (phaseIs("waitForRing")) { content con = makeContent("Result", new entity("Fail")); m.add(con); } if (phaseIs("Dial")) { content con = makeContent("Dial", /// new entity("0123456789")); new intEnt(1234567890)); m.add(con); } if (phaseIs("waitForAnswer")) { content con = makeContent("Result", new entity("Unresolved")); m.add(con); } if (phaseIs("Success")) { content con = makeContent("Result", new entity("Success")); m.add(con); } return m; } /*********************************************************************/ public void showState(){ super.showState(); } }