@Override public SixbitEncoder getEncoded() { SixbitEncoder encoder = super.encode(); encoder.addVal(spare1, 8); encoder.addVal(sog, 10); encoder.addVal(posAcc, 1); encoder.addVal(pos.getRawLongitude(), 28); encoder.addVal(pos.getRawLatitude(), 27); encoder.addVal(cog, 12); encoder.addVal(trueHeading, 9); encoder.addVal(utcSec, 6); encoder.addVal(spare2, 4); encoder.addString(name, 20); encoder.addVal(shipType, 8); encoder.addVal(dimBow, 9); encoder.addVal(dimStern, 9); encoder.addVal(dimPort, 6); encoder.addVal(dimStarboard, 6); encoder.addVal(posType, 4); encoder.addVal(raimFlag, 1); encoder.addVal(dte, 1); encoder.addVal(modeFlag, 1); encoder.addVal(spare3, 4); return encoder; }
@Override public boolean isPositionValid() { Position geo = pos.getGeoLocation(); return geo != null; }
@Override public Position getValidPosition() { AisPosition pos = this.pos; return pos == null ? null : pos.getGeoLocation(); }