/* * Class TimeoutTask * * This software is developed for Choral devices with Java. * Copyright Choral srl. All Rights reserved. */ package general; /** * Operations to execute when timeout expires, depending on the type of timeout. * * @version 1.02 <BR> <i>Last update</i>: 25-10-2007 * @author alessioza * */ public class TimeoutTask extends TimerTaskCustom implements GlobCost { /* * local variables */ private String timeoutType; //Runtime r; //long mem1, mem2; /* * constructors */ public TimeoutTask(String type) { //System.out.println("TimeoutTask: CREATED"); timeoutType = type; //r = Runtime.getRuntime(); } /* * methods */ /** * Task execution code. * <BR> ---------- <BR> * Performed operations: <br> * <ul type="disc"> * <li> Check timeout type, based on value passed through constructor; * <li> Send message or sets parameters needed to notify about timeout * expiration. * </ul> */ public void run() { try{ /* * FIXtimeout */ if (timeoutType.equalsIgnoreCase(FIXgpsTimeout)) { //System.out.println("TimeoutTask, FIXgpsTimeout: STARTED"); /* * If there is a valid FIX do nothing at timeout expiration */ if (infoS.getValidFIX()==true) { if(debug){ System.out.println("TimeoutTask, FIXgpsTimeout: FIXtimeout EXPIRED but FIX found"); } } else { if(debug){ System.out.println("TimeoutTask, FIXgpsTimeout: FIXtimeout EXPIRED"); } // Set that 'FIXtimeout' is expired infoS.setIfIsFIXtimeoutExpired(true); } //if } //FIXtimeout /* * FIXgprsTimeout */ if (timeoutType.equalsIgnoreCase(FIXgprsTimeout)) { if(debug){ System.out.println("TimeoutTask, FIXgprsTimeout: FIXgprsTimeout EXPIRED"); } // Set that 'FIXgprsTimeout' is expired infoS.setIfIsFIXgprsTimeoutExpired(true); // Send msg to TrackingGPRS mailbox mbox3.write(timeoutExpired); } //FIXgprsTimeout /* * CHIAVEtimeout */ if (timeoutType.equalsIgnoreCase(CHIAVEtimeout)) { //System.out.println("TimeoutTask, CHIAVEtimeout: STARTED"); /* * At timeout expiration, ENABLE again the key usage */ infoS.setInibizioneChiave(false); } //CHIAVEtimeout /* * BatteryTimeout */ if (timeoutType.equalsIgnoreCase(BatteryTimeout)) { //System.out.println("TimeoutTask, BatteryTimeout: STARTED"); // Send command AT^SBV semAT.getCoin(5); //System.out.println("*** TimeoutTask, BatteryTimeout: EXEC COMMAND AT^SBV"); infoS.setATexec(true); mbox2.write("AT^SBV\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } semAT.putCoin(); } //BatteryTimeout /* * Network registration */ if (timeoutType.equalsIgnoreCase(RegTimeout)) { // Send command AT+COPS? semAT.getCoin(5); infoS.setATexec(true); mbox2.write("AT+COPS?\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } semAT.putCoin(); //mem1 = r.freeMemory(); //System.out.println("***Free memory before garbage collection: " + mem1); //r.gc(); //mem1 = r.freeMemory(); //System.out.println("***Free memory after garbage collection: " + mem1); } //RegTimeout /* * WatchDogTimeout */ if (timeoutType.equalsIgnoreCase(WatchDogTimeout)) { //System.out.println("TimeoutTask, WatchDogTimeout: STARTED"); if(infoS.getTickTask1WD() && infoS.getTickTask3WD()){ infoS.resetTickTaskWD(); semAT.getCoin(5); //System.out.println("*** TimeoutTask, WatchDog: generated a WATCHDOG pulse"); infoS.setATexec(true); mbox2.write("at^ssio=5,1\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } // wait Thread.sleep(sensMovHoldTime); infoS.setATexec(true); mbox2.write("at^ssio=5,0\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } infoS.setATexec(true); mbox2.write("at^ssio=5,1\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } // wait Thread.sleep(sensMovHoldTime); infoS.setATexec(true); mbox2.write("at^ssio=5,0\r"); while(infoS.getATexec()) { Thread.sleep(whileSleep); } semAT.putCoin(); } } //WatchDogTimeout /* * CSDtimeout */ if (timeoutType.equalsIgnoreCase(CSDtimeout)) { //System.out.println("TimeoutTask, CSDtimeout: STARTED"); /* * At timeout expiration, disable CSD call */ infoS.setCSDWatchDog(false); } //CSDtimeout /* * FIXgprsTimeout */ if (timeoutType.equalsIgnoreCase(trackTimeout)) { /* * If you are in a CSD call, wait until it's in progress */ while (infoS.getCSDattivo()==true) { Thread.sleep(whileSleep); } //System.out.println("TimeoutTask, trackTimeout: STARTED"); mboxMAIN.write(msgChiaveAttivata); } //trackTimeout } catch (InterruptedException ie) { //System.out.println("exception: " + ie.getMessage()); //ie.printStackTrace(); } //catch } //run } //TimeoutTask