public override string ToString(Frame fmsg) { AISFrame aisMsg = (AISFrame)fmsg; string s = ""; foreach (AISField f in Fields) { s += f.Name + " = " + f.ToString(aisMsg.AISData) + "\n"; } return(s); }
// Methods public AISDefn GetAISDefn(AISFrame msg) { AISDefn defn; if (_aisDictionary.TryGetValue(msg.Header.MessageID, out defn)) { return(defn); } else { return(new UnknownAISDefn()); } }
// Methods for displaying data, refer to base Defn class public override string EnumFieldsString(Frame fmsg) { AISFrame aisMsg = (AISFrame)fmsg; string s = ""; foreach (AISField f in Fields) { if (f is AISEnum) { s += f.Name + "=" + f.ToString(aisMsg.AISData); } } return(s); }
public override string ToDebugString(Frame fmsg) { AISFrame aisMsg = (AISFrame)fmsg; string bitstr = ""; foreach (byte b in aisMsg.AISData.AISBytes) { bitstr += Convert.ToString(b, 2).PadLeft(8, '0'); } string retstr = ""; foreach (AISField f in Fields) { string fbitstr = (f.BitOffset < bitstr.Length) ? bitstr.Substring(f.BitOffset, Math.Min(f.BitLength, bitstr.Length - f.BitOffset)).PadRight(f.BitLength, 'x') : new string('x', f.BitLength); retstr += fbitstr + " -> " + f.Name + " = " + f.ToString(aisMsg.AISData) + "\n"; } return(retstr); }
public override byte[] GetBytes(Frame frame) { N0183Frame n0183Frame = frame as N0183Frame; if (n0183Frame != null) { return(Encoding.ASCII.GetBytes(n0183Frame.FullMessage + "\r\n")); } N2kFrame n2kFrame = frame as N2kFrame; if (n2kFrame != null) { return(Encoding.ASCII.GetBytes(FrameConversion.PackN2k(n2kFrame).FullMessage + "\r\n")); } AISFrame aisFrame = frame as AISFrame; if (aisFrame != null) { // TODO : Breaking up message if too long int padbits = 6 * aisFrame.AISData.AISString.Length - 8 * aisFrame.AISData.AISBytes.Length; // [0, 5] string message = "!AIVDM,1,1,,A," + aisFrame.AISData.AISString + "," + padbits; // Add checksum byte checksum = 0; for (int i = 1; i < message.Length; i++) { checksum ^= Convert.ToByte(message[i]); } message += "*" + checksum.ToString("X2"); return(Encoding.ASCII.GetBytes(message + "\r\n")); } throw new Exception("Attempt to send unknown frame type: '" + frame.GetType().Name + "'"); }