예제 #1
0
 public IEcuIdentifier Build(IPsdzEcuIdentifier ecuIdentifierInput)
 {
     if (ecuIdentifierInput == null)
     {
         return(null);
     }
     return(this.BuildEcuIdentifier(ecuIdentifierInput.BaseVariant, ecuIdentifierInput.DiagAddrAsInt));
 }
예제 #2
0
        private EcuProgrammingInfo GetCorrespondingEcu(IPsdzEvent psdzEvent)
        {
            IPsdzEcuIdentifier ecuId = psdzEvent.EcuId;
            int num = (ecuId != null) ? ecuId.DiagAddrAsInt : 255;

            if (!this.diagAddrToEcuMap.ContainsKey((long)num))
            {
                return(null);
            }
            return(this.diagAddrToEcuMap[(long)num]);
        }
예제 #3
0
        public IPsdzStandardSvt BuildStandardSvtActualFromVehicleContext(IVehicle vehicleContext, IEnumerable <IPsdzEcuIdentifier> ecuListFromPsdz = null)
        {
            MethodBase       currentMethod = MethodBase.GetCurrentMethod();
            IPsdzStandardSvt result;

            try
            {
                PsdzStandardSvt psdzStandardSvt = null;
                if (vehicleContext != null && vehicleContext.ECU != null)
                {
                    psdzStandardSvt = new PsdzStandardSvt();
                    IList <IPsdzEcu> list = new List <IPsdzEcu>();
                    using (IEnumerator <IEcu> enumerator = vehicleContext.ECU.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            IEcu               srcEcu            = enumerator.Current;
                            PsdzEcu            psdzEcu           = new PsdzEcu();
                            IPsdzEcuIdentifier psdzEcuIdentifier = (ecuListFromPsdz == null) ? null : ecuListFromPsdz.FirstOrDefault((IPsdzEcuIdentifier e) => e.DiagAddrAsInt == (int)srcEcu.ID_SG_ADR);
                            if (psdzEcuIdentifier != null)
                            {
                                psdzEcu.PrimaryKey = this.BuildEcuIdentifier((int)srcEcu.ID_SG_ADR, psdzEcuIdentifier.BaseVariant);
                            }
                            else
                            {
                                psdzEcu.PrimaryKey = this.BuildEcuIdentifier((int)srcEcu.ID_SG_ADR, srcEcu.ECU_GROBNAME);
                            }
                            PsdzStandardSvk psdzStandardSvk = new PsdzStandardSvk();
                            PsdzClient.Utility.SgbmIdParser sgbmIdParser = new PsdzClient.Utility.SgbmIdParser();
                            IList <IPsdzSgbmId>             list2        = new List <IPsdzSgbmId>();
                            foreach (string sgbmId in srcEcu.SVK.XWE_SGBMID)
                            {
                                if (sgbmIdParser.ParseDec(sgbmId))
                                {
                                    IPsdzSgbmId item = this.BuildPsdzSgbmId(sgbmIdParser.ProcessClass, sgbmIdParser.Id, sgbmIdParser.MainVersion, sgbmIdParser.SubVersion, sgbmIdParser.PatchVersion);
                                    list2.Add(item);
                                }
                            }
                            psdzStandardSvk.SgbmIds = list2;
                            psdzEcu.StandardSvk     = psdzStandardSvk;
                            list.Add(psdzEcu);
                        }
                    }
                    psdzStandardSvt.Ecus = list;
                }
                result = psdzStandardSvt;
            }
            catch (Exception)
            {
                result = null;
            }
            return(result);
        }
예제 #4
0
        public void FillOrderNumbers(IPsdzSollverbauung sollVerbauung, IDictionary <string, string> result)
        {
            IPsdzStandardSvt       svt           = sollVerbauung.Svt;
            IPsdzOrderList         psdzOrderList = sollVerbauung.PsdzOrderList;
            IEnumerable <IPsdzEcu> ecus          = svt.Ecus;

            if (ecus == null)
            {
                return;
            }
            foreach (IPsdzEcu ecuInput in ecus)
            {
                IEcuObj ecuObj = this.Build(ecuInput);
                if (psdzOrderList != null && psdzOrderList.BntnVariantInstances != null)
                {
                    foreach (IPsdzEcuVariantInstance psdzEcuVariantInstance in psdzOrderList.BntnVariantInstances)
                    {
                        IPsdzEcu       ecu           = psdzEcuVariantInstance.Ecu;
                        string         a             = (ecu != null) ? ecu.BaseVariant : null;
                        IEcuIdentifier ecuIdentifier = ecuObj.EcuIdentifier;
                        if (a == ((ecuIdentifier != null) ? ecuIdentifier.BaseVariant : null))
                        {
                            IPsdzEcu ecu2 = psdzEcuVariantInstance.Ecu;
                            int?     num;
                            if (ecu2 == null)
                            {
                                num = null;
                            }
                            else
                            {
                                IPsdzEcuIdentifier primaryKey = ecu2.PrimaryKey;
                                num = ((primaryKey != null) ? new int?(primaryKey.DiagAddrAsInt) : null);
                            }
                            int?           num2           = num;
                            IEcuIdentifier ecuIdentifier2 = ecuObj.EcuIdentifier;
                            int?           num3           = (ecuIdentifier2 != null) ? new int?(ecuIdentifier2.DiagAddrAsInt) : null;
                            if (num2.GetValueOrDefault() == num3.GetValueOrDefault() & num2 != null == (num3 != null))
                            {
                                string         key           = this.BuildKey(psdzEcuVariantInstance.Ecu);
                                IPsdzOrderPart orderablePart = psdzEcuVariantInstance.OrderablePart;
                                result.Add(key, (orderablePart != null) ? orderablePart.SachNrTais : null);
                                break;
                            }
                        }
                    }
                }
            }
        }
예제 #5
0
        private IPsdzSwtEcu BuildSwtEcu(ISwtEcu swtEcuInput)
        {
            if (swtEcuInput == null)
            {
                return(null);
            }
            PsdzSwtEcu         psdzSwtEcu    = new PsdzSwtEcu();
            IPsdzEcuIdentifier ecuIdentifier = this.BuildEcuIdentifier(swtEcuInput.EcuIdentifier);

            psdzSwtEcu.EcuIdentifier    = ecuIdentifier;
            psdzSwtEcu.RootCertState    = this.rootCertificateStateEnumMapper.GetValue(swtEcuInput.RootCertificateState);
            psdzSwtEcu.SoftwareSigState = this.softwareSigStateEnumMapper.GetValue(swtEcuInput.SoftwareSigState);
            IList <IPsdzSwtApplication> list = new List <IPsdzSwtApplication>();

            foreach (ISwtApplication swtApplication in swtEcuInput.SwtApplications)
            {
                IPsdzSwtApplication item = this.BuildSwtApplication(swtApplication);
                list.Add(item);
            }
            psdzSwtEcu.SwtApplications = list;
            return(psdzSwtEcu);
        }
예제 #6
0
 internal void UpdateProgrammingActions(IPsdzTal tal, int escalationStep)
 {
     foreach (IPsdzEcuIdentifier psdzEcuIdentifier in tal.AffectedEcus)
     {
         EcuProgrammingInfo itemFromProgrammingInfos = this.GetItemFromProgrammingInfos((long)psdzEcuIdentifier.DiagAddrAsInt);
         if (itemFromProgrammingInfos != null)
         {
             IPsdzEcuIdentifier         id       = psdzEcuIdentifier;
             IEnumerable <IPsdzTalLine> talLines = from talLine in tal.TalLines
                                                   where talLine.EcuIdentifier.Equals(id)
                                                   select talLine;
             itemFromProgrammingInfos.UpdateProgrammingActions(talLines, true, escalationStep);
         }
         else
         {
             //Log.Warning("EcuProgrammingInfos.UpdateProgrammingActions", "Could not find ecu programming object for 0x{0:X2}", new object[]
             //{
             //	psdzEcuIdentifier.DiagAddrAsInt
             //});
         }
     }
 }
예제 #7
0
 public IPsdzTal SetPreferredFlashProtocol(IPsdzTal tal, IPsdzEcuIdentifier ecu, PsdzProtocol psdzProtocol)
 {
     return(base.CallFunction <IPsdzTal>((IObjectBuilderService service) => service.SetPreferredFlashProtocol(tal, ecu, psdzProtocol)));
 }
 public IEnumerable <IPsdzEcuFailureResponseCto> DeleteSecureToken(IPsdzConnection pConnection, IPsdzEcuIdentifier psdzEcuIdentifier, IPsdzFeatureIdCto psdzFeatureId)
 {
     return(base.CallFunction <IEnumerable <IPsdzEcuFailureResponseCto> >((ISecureFeatureActivationService service) => service.DeleteSecureToken(pConnection, psdzEcuIdentifier, psdzFeatureId)));
 }
 public IEnumerable <IPsdzSecurityBackendRequestFailureCto> RequestNewestSecureTokenPackageForEcuOffline(string requestFile, string client, string system, IPsdzVin vin, bool rebuildTokens, IPsdzEcuIdentifier ecu)
 {
     return(base.CallFunction <IEnumerable <IPsdzSecurityBackendRequestFailureCto> >((ISecureFeatureActivationService service) => service.RequestNewestSecureTokenPackageForEcuOffline(requestFile, client, system, vin, rebuildTokens, ecu)));
 }
예제 #10
0
 public bool StoreFsc(IPsdzConnection connection, byte[] fsc, IPsdzEcuIdentifier ecuIdentifier, IPsdzSwtApplicationId swtApplicationId)
 {
     return(base.CallFunction <bool>((IProgrammingService m) => m.StoreFsc(connection, fsc, ecuIdentifier, swtApplicationId)));
 }
예제 #11
0
 public IPsdzSwtAction RequestSwtAction(IPsdzConnection connection, IPsdzEcuIdentifier ecuIdentifier, IPsdzSwtApplicationId swtApplicationId, bool periodicalCheck)
 {
     return(base.CallFunction <IPsdzSwtAction>((IProgrammingService m) => m.RequestSwtAction(connection, ecuIdentifier, swtApplicationId, periodicalCheck)));
 }
예제 #12
0
 public byte[] GetFsc(IPsdzConnection connection, IPsdzEcuIdentifier ecuIdentifier, IPsdzSwtApplicationId swtApplicationId)
 {
     return(base.CallFunction <byte[]>((IProgrammingService m) => m.GetFsc(connection, ecuIdentifier, swtApplicationId)));
 }
예제 #13
0
 public IDictionary <string, object> ExecuteAsamJob(IPsdzConnection connection, IPsdzEcuIdentifier ecuIdentifier, string jobId, IPsdzAsamJobInputDictionary inputDictionary)
 {
     return(base.CallFunction <IDictionary <string, object> >((IProgrammingService m) => m.ExecuteAsamJob(connection, ecuIdentifier, jobId, inputDictionary)));
 }
예제 #14
0
 public bool DisableFsc(IPsdzConnection connection, IPsdzEcuIdentifier ecuIdentifier, IPsdzSwtApplicationId swtApplicationId)
 {
     return(base.CallFunction <bool>((IProgrammingService m) => m.DisableFsc(connection, ecuIdentifier, swtApplicationId)));
 }