public override bool Evaluate(Vehicle vec, IFFMDynamicResolver ffmResolver, ValidationRuleInternalResults internalResult) { bool flag = false; PdszDatabase database = ClientContext.GetDatabase(vec); if (database == null) { return(false); } PdszDatabase.EcuClique ecuClique = database.GetEcuCliqueById(this.value.ToString(CultureInfo.InvariantCulture)); if (vec == null) { return(false); } if (ecuClique == null) { return(true); } if (!database.EvaluateXepRulesById(ecuClique.Id, vec, ffmResolver, null)) { return(false); } List <PdszDatabase.EcuVar> ecuVariantsByEcuCliquesId = ClientContext.GetDatabase(vec)?.GetEcuVariantsByEcuCliquesId(ecuClique.Id); if (ecuVariantsByEcuCliquesId == null || ecuVariantsByEcuCliquesId.Count == 0) { return(false); } if (vec.VCI != null && vec.VCI.VCIType == VCIDeviceType.INFOSESSION && (vec.VehicleIdentLevel == IdentificationLevel.BasicFeatures || vec.VehicleIdentLevel == IdentificationLevel.VINBasedFeatures || (vec.VehicleIdentLevel == IdentificationLevel.VINBasedOnlineUpdated && (vec.ECU == null || (vec.ECU != null && vec.ECU.Count == 0))) || vec.VehicleIdentLevel == IdentificationLevel.VINOnly)) { foreach (PdszDatabase.EcuVar ecuVar in ecuVariantsByEcuCliquesId) { flag = database.EvaluateXepRulesById(ecuVar.Id, vec, ffmResolver, null); if (flag && !string.IsNullOrEmpty(ecuVar.GroupId)) { flag = database.EvaluateXepRulesById(ecuVar.GroupId, vec, ffmResolver, null); if (flag) { break; } } } return(flag); } foreach (PdszDatabase.EcuVar ecuVar in ecuVariantsByEcuCliquesId) { if (!(flag = (vec.getECUbyECU_SGBD(ecuVar.Name) != null)) && "EWS3".Equals(ecuVar.Name, StringComparison.OrdinalIgnoreCase) && vec.BNType == BNType.BN2000_PGO) { //Log.Info("EcuCliqueExpression.Evaluate()", "check for EWS3 => EWS3P", Array.Empty<object>()); flag = true; } if (flag) { break; } } return(flag); }
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 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 override bool Evaluate(Vehicle vec, IFFMDynamicResolver ffmResolver, ValidationRuleInternalResults internalResult) { PdszDatabase database = ClientContext.GetDatabase(vec); if (database == null) { return(false); } if (vec == null) { //Log.Error("EquipmentExpression.Evaluate()", "vec was null", Array.Empty<object>()); return(false); } if (vec.VehicleIdentLevel == IdentificationLevel.None) { return(false); } PdszDatabase.Equipment equipmentById = database.GetEquipmentById(this.value.ToString(CultureInfo.InvariantCulture)); if (equipmentById == null) { return(false); } object obj = EquipmentExpression.evaluationLockObject; bool result; lock (obj) { bool?flag2 = vec.hasFFM(equipmentById.Name); if (flag2 != null) { result = flag2.Value; } else { bool flag3 = database.EvaluateXepRulesById(this.value.ToString(CultureInfo.InvariantCulture), vec, ffmResolver, null); #if false if (ffmResolver != null && flag3) { ObservableCollectionEx <IXepInfoObject> infoObjectsByDiagObjectControlId = DatabaseProviderFactory.Instance.GetInfoObjectsByDiagObjectControlId(this.value, vec, ffmResolver, true, null); if (infoObjectsByDiagObjectControlId != null && infoObjectsByDiagObjectControlId.Count != 0) { bool?flag4 = ffmResolver.Resolve(this.value, infoObjectsByDiagObjectControlId.First <IXepInfoObject>()); vec.AddOrUpdateFFM(new FFMResult(equipmentById.ID, equipmentById.NAME, "FFMResolver", flag4, false)); if (flag4 != null) { result = flag4.Value; } else { result = true; } } else { result = false; } } else #endif if (flag3) { result = true; } else { result = false; } } } return(result); }