private ConfigRequest ParseConfigRequest(String[] partes) { var crq = new ConfigRequest(Id, 0) { GeoPoint = null }; var res = String.Format("H9;{0:D5}", Id); res += res.TakeWhile(b => b != '@').Aggregate <char, byte>(0, (current, b) => (byte)(current + b)).ToString("X2"); crq.AddStringToSend(res); crq.StringParameters.Add(Indication.indicatedIMEI, partes[1]); crq.StringParameters.Add(Indication.indicatedSecret, partes[2]); crq.StringParameters.Add(Indication.indicatedFirmwareSignature, partes[3]); if (partes.Length > 4) { crq.IntegerParameters.Add(Indication.indicatedConfigurationRevision, SafeConvert.ToInt32(partes[4], -1)); } if (partes.Length > 5) { crq.IntegerParameters.Add(Indication.indicatedCannedMessagesTableRevision, SafeConvert.ToInt32(partes[5], -1)); } return(crq); }
private static ConfigRequest ParseRLogin(String[] partes, INode node, ulong mid, DateTime dt) { var crq = new ConfigRequest(node.Id, mid) { GeoPoint = null, Tiempo = dt, }; crq.AddStringToSend(String.Format(@"RE3;{0:D3}CH;{1:D3};{2};{3:yy/MM/dd,HH:mm:ss}", mid, node.NextSequence, node.Imei, DateTime.UtcNow)); crq.StringParameters.Add(Indication.indicatedIMEI, partes[2]); return(crq); }
private static ConfigRequest ParseLogin(String[] partes, INode node) { var mid = Convert.ToUInt64(partes[1]); var crq = new ConfigRequest(node.Id, mid) { GeoPoint = null, }; crq.AddStringToSend(String.Format(@"RV0;{0:D3};{1:D5};{2:yy/MM/dd,HH:mm:ss}", mid, node.Id, DateTime.UtcNow)); crq.StringParameters.Add(Indication.indicatedIMEI, partes[4]); crq.StringParameters.Add(Indication.indicatedSecret, partes[5]); crq.StringParameters.Add(Indication.indicatedFirmwareSignature, partes[6]); crq.IntegerParameters.Add(Indication.indicatedConfigurationRevision, SafeConvert.ToInt32(partes[7], -1)); return(crq); }
private static IMessage FactoryHandShake(Parser dev, String[] data, ulong msgId, GPSPoint pos, IDataProvider dataProvider) { if (ParserUtils.IsInvalidDeviceId(dev.Id)) { return(null); } var msg = new ConfigRequest(dev.Id, msgId); if (pos != null) { msg.GeoPoint = pos; } msg.AddStringToSend(Factory <String>(msgId, dev, "AH,0,{0:D4},{1}", dev.Id, DateTime.UtcNow.ToUnixTimeStamp())); //check Telephone if (data.Length > 4) { var phone = data[4].TrimStart("+".ToCharArray()); Int64 number; if (!String.IsNullOrEmpty(phone) && Int64.TryParse(phone, out number) && number > 0) { var oldnumber = dataProvider.GetDetalleDispositivo(dev.Id, "Telephone").As("null"); if (oldnumber != phone) { STrace.Debug(typeof(Parser).FullName, dev.Id, String.Format("Setting Telephone: {0}", phone)); dataProvider.SetDetalleDispositivo(dev.Id, "Telephone", phone, "string"); } } } //check config_revision if (data.Length > 3) { var revision = data[3]; var oldrevision = dataProvider.GetDetalleDispositivo(dev.Id, "config_revision").As(""); if (oldrevision != revision && !String.IsNullOrEmpty(revision)) { STrace.Debug(typeof(Parser).FullName, dev.Id, String.Format("Setting config_revision: {0}", revision)); //todo: update config //DataProvider.SetDetalleDispositivo(Id, "config_revision", revision, "int"); } } return(msg); }
public static IMessage FactorySetId(ulong sequence, int newDeviceId, int formerDeviceId) { if (ParserUtils.IsInvalidDeviceId(newDeviceId)) { return(null); } var msg = new ConfigRequest(newDeviceId, sequence); if (ParserUtils.IsInvalidDeviceId(formerDeviceId)) { var cmds = Factory(String.Format(SetId, newDeviceId)); msg.AddStringToSend(cmds); } //var imei = Parser.GetImei(datos[0]); return(msg); }
private ConfigRequest ParseConfigRequest(String asString) { var crq = new ConfigRequest(Id, 0) { GeoPoint = null }; const int keepalive = 3; const int retry = 3; crq.AddStringToSend(String.Format("H9{0:D5}{1:D5}{2:D2}{3:D2}", 10000, Id, keepalive, retry)); crq.StringParameters.Add(Indication.indicatedIMEI, asString.Substring(24, 16)); crq.StringParameters.Add(Indication.indicatedSecret, asString.Substring(59, 8)); crq.StringParameters.Add(Indication.indicatedFirmwareSignature, asString.Substring(54, 4)); crq.IntegerParameters.Add(Indication.indicatedConfigurationRevision, 0); crq.IntegerParameters.Add(Indication.indicatedCannedMessagesTableRevision, SafeConvert.ToInt32(asString.Substring(58, 1), -1)); return(crq); }
private static ConfigRequest ParseALogin(String[] partes, INode node) { var mid = Convert.ToUInt64(partes[1]); var crq = new ConfigRequest(node.Id, mid) { GeoPoint = null, }; //A0;Msgid;Serie;IMEI;Pass;Version ;Versión de Parámetros ;Tiempo entre tomas ;IP primaria ;IP secundaria@checksum //A0;000;00000;0000000000;0355826019078657;E57290F2;7.01;00000;30;190.2.37.141:4040;unex.hopto.org:3030@3D crq.AddStringToSend(String.Format(@"RA0;{0:D3};{1:D5};{2:yy/MM/dd,HH:mm:ss}", mid, node.Id, DateTime.UtcNow)); crq.StringParameters.Add(Indication.indicatedIMEI, partes[3]); crq.StringParameters.Add(Indication.indicatedSecret, partes[4]); crq.StringParameters.Add(Indication.indicatedFirmwareSignature, partes[5]); crq.IntegerParameters.Add(Indication.indicatedConfigurationRevision, SafeConvert.ToInt32(partes[6], -1)); return(crq); }