Exemple #1
0
        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);
        }