public EcuVariantLocator(PdszDatabase.EcuVar ecuVariant, Vehicle vec, IFFMDynamicResolver ffmResolver) { this.vecInfo = vec; this.ecuVariant = ecuVariant; //this.children = new ISPELocator[0]; this.ffmResolver = ffmResolver; }
public override bool Evaluate(Vehicle vec, IFFMDynamicResolver ffmResolver, ValidationRuleInternalResults internalResult) { this.vecInfo = vec; PdszDatabase database = ClientContext.GetDatabase(this.vecInfo); if (database == null) { return(false); } PdszDatabase.EcuVar ecuVariantById = database.GetEcuVariantById(this.value.ToString(CultureInfo.InvariantCulture)); if (ecuVariantById == null) { return(false); } if (vec.VCI != null && (vec.VehicleIdentLevel == IdentificationLevel.BasicFeatures || vec.VehicleIdentLevel == IdentificationLevel.VINBasedFeatures || vec.VehicleIdentLevel == IdentificationLevel.VINOnly)) { if (!database.EvaluateXepRulesById(ecuVariantById.Id, vec, ffmResolver, null)) { return(false); } IEcuVariantLocator ecuVariantLocator = new EcuVariantLocator(ecuVariantById, vec, ffmResolver); if (ecuVariantLocator == null) { return(true); } if (ecuVariantLocator.Parents != null && ecuVariantLocator.Parents.Any <ISPELocator>()) { foreach (ISPELocator ispelocator in ecuVariantLocator.Parents) { IEcuGroupLocator ecuGroupLocator = ispelocator as IEcuGroupLocator; if (ecuGroupLocator != null) { if (database.EvaluateXepRulesById(ecuGroupLocator.SignedId, vec, ffmResolver, null)) { return(true); } } } return(false); } return(true); } else { if (vec.VehicleIdentLevel == IdentificationLevel.VINBasedOnlineUpdated && vec.ECU != null && vec.ECU.Count == 0) { return(true); } bool flag; if (!(flag = (vec.getECUbyECU_SGBD(this.VariantName) != null)) && "EWS3".Equals(this.VariantName, StringComparison.OrdinalIgnoreCase) && vec.BNType == BNType.BN2000_PGO) { //Log.Info("EcuVariantExpression.Evaluate()", "check for EWS3 => EWS3P", Array.Empty<object>()); flag = true; } return(flag); } }
public static IEcuVariantLocator CreateEcuVariantLocator(string ecuVariant, Vehicle vecInfo, IFFMDynamicResolver ffmResolver) { PdszDatabase.EcuVar ecuVariantByName = ClientContext.GetDatabase(vecInfo)?.GetEcuVariantByName(ecuVariant); if (ecuVariantByName != null) { return(new EcuVariantLocator(ecuVariantByName, vecInfo, ffmResolver)); } return(null); }
public IEcuObj Build(IPsdzEcu ecuInput) { if (ecuInput == null) { return(null); } EcuObj ecuObj = new EcuObj(); ecuObj.BaseVariant = ecuInput.BaseVariant; ecuObj.EcuVariant = ecuInput.EcuVariant; ecuObj.BnTnName = ecuInput.BnTnName; ecuObj.GatewayDiagAddrAsInt = ((ecuInput.GatewayDiagAddr != null) ? new int?(ecuInput.GatewayDiagAddr.Offset) : null); ecuObj.DiagnosticBus = this.busEnumMapper.GetValue(ecuInput.DiagnosticBus); ecuObj.SerialNumber = ecuInput.SerialNumber; ecuObj.EcuIdentifier = this.Build(ecuInput.PrimaryKey); ecuObj.StandardSvk = this.Build(ecuInput.StandardSvk); ecuObj.BusConnections = ((ecuInput.BusConnections != null) ? ecuInput.BusConnections.Select(new Func <PsdzBus, Bus>(this.busEnumMapper.GetValue)).ToList <Bus>() : null); ecuObj.EcuDetailInfo = ((ecuInput.EcuDetailInfo != null) ? new EcuObjDetailInfo(ecuInput.EcuDetailInfo.ByteValue) : null); ecuObj.EcuStatusInfo = ((ecuInput.EcuStatusInfo != null) ? new EcuObjStatusInfo(ecuInput.EcuStatusInfo.ByteValue, ecuInput.EcuStatusInfo.HasIndividualData) : null); ecuObj.EcuPdxInfo = this.Build(ecuInput.PsdzEcuPdxInfo); PdszDatabase database = ClientContext.GetDatabase(this.vehicle); if (database != null) { string bnTnName = ecuInput.BnTnName; IEcuIdentifier ecuIdentifier = ecuObj.EcuIdentifier; PdszDatabase.EcuVar ecuVar = database.FindEcuVariantFromBntn(bnTnName, (ecuIdentifier != null) ? new int?(ecuIdentifier.DiagAddrAsInt) : null, this.vehicle, this.ffmResolver); if (ecuVar != null && !string.IsNullOrEmpty(ecuVar.Name)) { //ecuObj.XepEcuVariant = xep_ECUVARIANTS; ecuObj.EcuVariant = ecuVar.Name.ToUpper(CultureInfo.InvariantCulture); PdszDatabase.EcuClique ecuClique = database.FindEcuClique(ecuVar); //ecuObj.XepEcuClique = ecuClique; PdszDatabase.EcuGroup ecuGroup = database.FindEcuGroup(ecuVar, this.vehicle, this.ffmResolver); if (ecuGroup != null) { ecuObj.EcuGroup = ecuGroup.Name.ToUpper(CultureInfo.InvariantCulture); } PdszDatabase.EcuReps ecuReps = database.FindEcuRep(ecuClique); if (ecuReps != null) { ecuObj.EcuRep = ecuReps.EcuShortcut; } } } return(ecuObj); }
public EcuVariantLocator(PdszDatabase.EcuVar ecuVariant) { this.ecuVariant = ecuVariant; //this.children = new ISPELocator[0]; }