public AISMessage09Parser(Sixbit content) { super(content); if (content.length() != 168) { throw new IllegalArgumentException("Wrong message length"); } else { fAltitude = content.getInt(FROM[ALTITUDE], TO[ALTITUDE]); fSOG = content.getInt(FROM[SPEEDOVERGROUND], TO[SPEEDOVERGROUND]); fPositionAccuracy = content.getBoolean(TO[POSITIONACCURACY]); fLongitude = Longitude28.toDegrees(content.getAs28BitInt(FROM[LONGITUDE], TO[LONGITUDE])); if (!PositionInfo.isLongitudeCorrect(fLongitude)) fViolations.add( new AISRuleViolation("LongitudeInDegrees", fLongitude, PositionInfo.LONGITUDE_RANGE)); fLatitude = Latitude27.toDegrees(content.getAs27BitInt(FROM[LATITUDE], TO[LATITUDE])); if (!PositionInfo.isLatitudeCorrect(fLatitude)) fViolations.add( new AISRuleViolation("LatitudeInDegrees", fLatitude, PositionInfo.LATITUDE_RANGE)); fCOG = content.getInt(FROM[COURSEOVERGROUND], TO[COURSEOVERGROUND]); if (!Angle12.isCorrect(fCOG)) fViolations.add(new AISRuleViolation("CourseOverGround", fCOG, Angle12.RANGE)); fTimeStamp = content.getInt(FROM[TIMESTAMP], TO[TIMESTAMP]); fRegional = content.getInt(FROM[REGIONAL], TO[REGIONAL]); fDTE = content.getBoolean(TO[DTE]); fAssignedModeFlag = content.getBoolean(TO[ASSIGNEDMODEFLAG]); fRAIMFlag = content.getBoolean(TO[RAIMFLAG]); fRadioStatus = content.getInt(FROM[RADIOSTATUS], TO[RADIOSTATUS]); } }
public String toString() { String result = "\tAlt: " + fAltitude; result += SEPARATOR + "SOG: " + getSOGString(); result += SEPARATOR + "Pos acc: " + (fPositionAccuracy ? "high" : "low") + " accuracy"; result += SEPARATOR + "Lat: " + PositionInfo.longitudeToString(fLongitude); result += SEPARATOR + "Lon: " + PositionInfo.latitudeToString(fLatitude); result += SEPARATOR + "COG: " + Angle12.toString(fCOG); result += SEPARATOR + "Time: " + TimeStamp.toString(fTimeStamp); result += SEPARATOR + "Regional: " + getRegional(); result += SEPARATOR + "DTE: " + (fDTE ? "yes" : "no"); result += SEPARATOR + "Assigned Mode Flag: " + (fAssignedModeFlag ? "yes" : "no"); result += SEPARATOR + "RAIM Flag: " + (fRAIMFlag ? "yes" : "no"); result += SEPARATOR + "RadioStatus: " + getRadioStatus(); return result; }