public override IMessage Decode(IFrame frame) { IMessage salida = null; var msgId = ParserUtils.MsgIdNotSet; var dc = new NovatelDeviceCommand(frame.Payload, this); if (dc.hasMessasgeId()) { msgId = dc.MessageId ?? 0; } salida = GetSalida(dc); // Replying with ACK if needed /* if (dc.hasIdNum() && dc.hasMessasgeId() && !salida.IsPending()) * { * if (salida == null) * salida = new UserMessage(Id, msgId); * var ackStr = dc.BuildAck().ToString(true); * salida.AddStringToSend(ackStr); * }*/ /* CheckLastSentAndDequeueIt(dc); * * if (LastSent == null) //&& !(new String[] {Reporte.IdReq}.Any(r=> tipoReporte == r))) * SendPendingFota(ref salida);*/ return(salida); }
private IMessage GetSalida(NovatelDeviceCommand dc) { var msgid = dc.MessageId ?? 0; DeviceStatus devStatus = dc.ParsePosition(); var gpoint = devStatus.Position; return(gpoint.ToPosition(Id, msgid)); }
public override INode Factory(IFrame frame, int formerId) { var dc = new NovatelDeviceCommand(frame.Payload); var modemID = dc.ModemID; //"ModemID" en la documentacion de Novatel var dev = DataProvider.FindByIMEI(modemID, this); return(dev); }