1 package cz.cuni.amis.pogamut.usar2004.agent.module.state; 2 3 import cz.cuni.amis.pogamut.usar2004.agent.module.datatypes.VehicleType; 4 import cz.cuni.amis.pogamut.usar2004.communication.messages.usarinfomessages.StateMessage; 5 6 /** 7 * Parent class for all possible state subjects. It covers the basic and common 8 * properties for all the state subjects. 9 * 10 * @author vejmanm 11 */ 12 public /* 13 * abstract 14 */ class SuperState 15 { 16 protected StateMessage lastMessage; 17 protected VehicleType vehicleType; 18 19 /** 20 * Ctor. State type describes particular subject about which we want to know 21 * about. It is used to distinguish incoming message from the server. 22 */ 23 public SuperState() 24 { 25 this(VehicleType.UNKNOWN); 26 } 27 28 /** 29 * Ctor. 30 * 31 * @param type Configuration type describes particular subject about which 32 * we want to know about. It is used to distinguish incoming message from 33 * the server. 34 */ 35 protected SuperState(VehicleType type) 36 { 37 this.vehicleType = type; 38 } 39 40 // @Override 41 // protected void cleanUp() 42 // { 43 // super.cleanUp(); 44 // bot=null; 45 // lastMessage = null; 46 // sensorType=null; 47 // } 48 /** 49 * Method used for updating the message object that provides particular 50 * properties for given type. Note that this object is created by yylex 51 * parser and contains properties for all configuration subject types. But 52 * only relevat to individual Config Subject are filled. 53 * 54 * @param message State message from server. 55 */ 56 public void updateMessage(StateMessage message) 57 { 58 //if(message.getType().equalsIgnoreCase(SensorType)) 59 lastMessage = message; 60 } 61 62 /** 63 * Timestamp form the UT since server start in seconds. 64 * 65 * @return Returns seconds elapsed from the start of the server. 66 */ 67 public double getTime() 68 { 69 return lastMessage.getTime(); 70 } 71 72 /** 73 * Used to make sure the object is filled. 74 * 75 * @return Returns true if the object is filled with State message. 76 */ 77 public Boolean isReady() 78 { 79 return (lastMessage != null); 80 } 81 82 /** 83 * Type will be one of the following values: "GroundVehicle”, “LeggedRobot”, 84 * “NauticVehicle”, or “AerialVehicle”. 85 * 86 * @return Returns Type of the vehicle. 87 */ 88 public String getType() 89 { 90 return lastMessage.getType(); 91 } 92 93 /** 94 * Power state of the battery. It is the battery lifetime in second. It’s 95 * the total time remaining for the robot to run. 96 * 97 * @return Returns remaining battery life. 98 */ 99 public int getBattery() 100 { 101 return lastMessage.getBattery(); 102 } 103 104 /** 105 * Light intensity of the headlight. Right now, it always is 100. 106 * 107 * @return Returns the intensity of the Headlight. 108 */ 109 public int getFlashLightIntensity() 110 { 111 return lastMessage.getLightIntensity(); 112 } 113 114 /** 115 * Indicate whether the headlight has been turned on. 116 * 117 * @return Returns wether the Headlight is on or not. 118 */ 119 public boolean isFlashLightToogle() 120 { 121 return lastMessage.isLightToggle(); 122 } 123 124 /** 125 * VehicleType is a descriptor used for creating particular instance and for 126 * getting type information about particular state subject. 127 * 128 * @return Returns VehicleType. 129 */ 130 public VehicleType getVehicleType() 131 { 132 return vehicleType; 133 } 134 }