Пример #1
0
        /// <summary>Executes the message changed action.</summary>
        /// <param name="systemId">System id.</param>
        /// <param name="messageId">Identifier for the message.</param>
        /// <param name="lBaseline">The baseline.</param>
        internal void OnMessageChanged(string systemId, string messageId, PisBaseline pisBaseline)
        {
            LogManager.WriteLog(TraceType.INFO, "OnMessageChanged called, systemId=" + systemId + ", messageId=" + messageId, "PIS.Ground.Core.T2G.LocalDataStorage.OnMessageChanged", null, EventIdEnum.GroundCore);

            lock (_systemListLock)
            {
                SystemInfo existingSystemInfo;

                if (_systemList.TryGetValue(systemId, out existingSystemInfo))
                {
                    // Update existing system
                    // Add updated info
                    SystemInfo updatedSystemInfo = new SystemInfo(
                        existingSystemInfo.SystemId,
                        existingSystemInfo.MissionId,
                        existingSystemInfo.VehiclePhysicalId,
                        existingSystemInfo.Status,
                        existingSystemInfo.IsOnline,
                        existingSystemInfo.CommunicationLink,
                        existingSystemInfo.ServiceList,
                        pisBaseline,
                        existingSystemInfo.PisVersion,
                        existingSystemInfo.PisMission,
                        existingSystemInfo.IsOnline);

                    _systemList[systemId] = updatedSystemInfo;
                }
            }

            DumpCurrentSystemList(TraceType.DEBUG, "After OnMessageChanged called:", "PIS.Ground.Core.T2G.LocalDataStorage.OnMessageChanged");
        }
        /// <summary>Process Message Notification.</summary>
        /// <param name="systemId">system id.</param>
        /// <param name="messageId">message id.</param>
        /// <param name="fieldList">field list.</param>
        public void OnMessageNotification(string systemId, string messageId, fieldStruct[] fieldList)
        {
            lock (_lock)
            {
                if (!string.IsNullOrEmpty(systemId) && !string.IsNullOrEmpty(messageId) && fieldList != null && fieldList.Length != 0)
                {
                    if (messageId == T2GDataConverter.PisBaseline)
                    {
                        PisBaseline baseline = T2GDataConverter.BuildPisBaseLine(fieldList);

                        if (baseline != null)
                        {
                            _localDataStorage.OnMessageChanged(systemId, messageId, baseline);
                        }
                    }
                    else if (messageId == T2GDataConverter.PisVersion)
                    {
                        PisVersion version = T2GDataConverter.BuildPisVersion(fieldList);

                        if (version != null)
                        {
                            _localDataStorage.OnMessageChanged(systemId, messageId, version);
                        }
                    }
                    else if (messageId == T2GDataConverter.PisMission || messageId == T2GDataConverter.SivngMission)
                    {
                        PisMission mission = T2GDataConverter.BuildPisMission(fieldList);

                        if (mission != null)
                        {
                            _localDataStorage.OnMessageChanged(systemId, messageId, mission);
                        }
                    }

                    ElementEventArgs elementEventArgs = _localDataStorage.BuildElementInfoChangedEvent(systemId);

                    if (elementEventArgs != null)
                    {
                        _notifierTarget.RaiseOnElementInfoChangeEvent(elementEventArgs);
                    }
                }
            }
        }
        public static PisBaseline CreatePisBaseline(string currentBaselineVersion, string futureBaselineVersion, string archiveBaselineVersion)
        {
            PisBaseline baseline = new PisBaseline();

            if (currentBaselineVersion != null)
            {
                baseline.CurrentVersionOut                = currentBaselineVersion;
                baseline.CurrentVersionLmtOut             = currentBaselineVersion;
                baseline.CurrentVersionPisBaseOut         = currentBaselineVersion;
                baseline.CurrentVersionPisInfotainmentOut = currentBaselineVersion;
                baseline.CurrentVersionPisMissionOut      = currentBaselineVersion;
                baseline.CurrentValidOut = string.IsNullOrEmpty(currentBaselineVersion) && currentBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString;
            }

            if (futureBaselineVersion != null)
            {
                baseline.FutureVersionOut                = futureBaselineVersion;
                baseline.FutureVersionLmtOut             = futureBaselineVersion;
                baseline.FutureVersionPisBaseOut         = futureBaselineVersion;
                baseline.FutureVersionPisInfotainmentOut = futureBaselineVersion;
                baseline.FutureVersionPisMissionOut      = futureBaselineVersion;
                baseline.FutureValidOut = string.IsNullOrEmpty(futureBaselineVersion) && futureBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString;
            }

            if (archiveBaselineVersion != null)
            {
                baseline.ArchivedVersionOut                = archiveBaselineVersion;
                baseline.ArchivedVersionLmtOut             = archiveBaselineVersion;
                baseline.ArchivedVersionPisBaseOut         = archiveBaselineVersion;
                baseline.ArchivedVersionPisInfotainmentOut = archiveBaselineVersion;
                baseline.ArchivedVersionPisMissionOut      = archiveBaselineVersion;
                baseline.ArchivedValidOut = string.IsNullOrEmpty(archiveBaselineVersion) && archiveBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString;
            }

            return(baseline);
        }
        public static SystemInfo CreateSystem(string systemId, ushort vehicleId, bool isOnline, PisVersion version, PisBaseline baseline)
        {
            SystemInfo createdSystem = new SystemInfo(systemId, DefaultMissionName, vehicleId, DefaultStatus, isOnline, DefaultCommunicationLink, EmptyServiceList, baseline, version, DefaultMission, baseline.CurrentValidOut == Boolean.TrueString || baseline.FutureValidOut == Boolean.TrueString || baseline.ArchivedValidOut == Boolean.TrueString);

            return(createdSystem);
        }
Пример #5
0
        /// <summary>Build PisBaseLine object.</summary>
        /// <param name="fieldList">FieldList for a message.</param>
        /// <returns>PisBaseline object if it succeeds, null if it fails.</returns>
        internal static PisBaseline BuildPisBaseLine(fieldStruct[] fieldList)
        {
            PisBaseline baseline = null;

            if (fieldList != null && fieldList.Length > 0)
            {
                baseline = new PisBaseline();

                // CR: atvcm00614906 - [PIS-GROUND URBAN] Gap 2277: missing notification when mission code not defined in t2gvehicleinfo.xml
                // Must verify if all expected items are in the message... If not, we will log a trace.
                List <string> expectedItemsInMessage = new List <string>()
                {
                    ArchivedValidOut, ArchivedVersionOut, ArchivedVersionPisBaseOut, ArchivedVersionPisMissionOut, ArchivedVersionPisInfotainmentOut, ArchivedVersionLmtOut, CurrentForcedOut, CurrentValidOut, CurrentVersionOut, CurrentVersionPisBaseOut, CurrentVersionPisMissionOut, CurrentVersionPisInfotainmentOut, CurrentVersionLmtOut, CurrentExpirationDateOut, FutureValidOut, FutureVersionOut, FutureVersionPisBaseOut, FutureVersionPisMissionOut, FutureVersionPisInfotainmentOut, FutureVersionLmtOut, FutureActivationDateOut, FutureExpirationDateOut
                };

                foreach (fieldStruct objfieldStruct in fieldList)
                {
                    if (ArchivedValidOut == objfieldStruct.id)
                    {
                        baseline.ArchivedValidOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedValidOut);
                        }

                        continue;
                    }

                    if (ArchivedVersionOut == objfieldStruct.id)
                    {
                        baseline.ArchivedVersionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedVersionOut);
                        }

                        continue;
                    }

                    if (ArchivedVersionPisBaseOut == objfieldStruct.id)
                    {
                        baseline.ArchivedVersionPisBaseOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedVersionPisBaseOut);
                        }

                        continue;
                    }

                    if (ArchivedVersionPisMissionOut == objfieldStruct.id)
                    {
                        baseline.ArchivedVersionPisMissionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedVersionPisMissionOut);
                        }

                        continue;
                    }

                    if (ArchivedVersionPisInfotainmentOut == objfieldStruct.id)
                    {
                        baseline.ArchivedVersionPisInfotainmentOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedVersionPisInfotainmentOut);
                        }

                        continue;
                    }

                    if (ArchivedVersionLmtOut == objfieldStruct.id)
                    {
                        baseline.ArchivedVersionLmtOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(ArchivedVersionLmtOut);
                        }

                        continue;
                    }

                    if (CurrentForcedOut == objfieldStruct.id)
                    {
                        baseline.CurrentForcedOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentForcedOut);
                        }

                        continue;
                    }

                    if (CurrentValidOut == objfieldStruct.id)
                    {
                        baseline.CurrentValidOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentValidOut);
                        }

                        continue;
                    }

                    if (CurrentVersionOut == objfieldStruct.id)
                    {
                        baseline.CurrentVersionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentVersionOut);
                        }

                        continue;
                    }

                    if (CurrentVersionPisBaseOut == objfieldStruct.id)
                    {
                        baseline.CurrentVersionPisBaseOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentVersionPisBaseOut);
                        }

                        continue;
                    }

                    if (CurrentVersionPisMissionOut == objfieldStruct.id)
                    {
                        baseline.CurrentVersionPisMissionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentVersionPisMissionOut);
                        }

                        continue;
                    }

                    if (CurrentVersionPisInfotainmentOut == objfieldStruct.id)
                    {
                        baseline.CurrentVersionPisInfotainmentOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentVersionPisInfotainmentOut);
                        }

                        continue;
                    }

                    if (CurrentVersionLmtOut == objfieldStruct.id)
                    {
                        baseline.CurrentVersionLmtOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentVersionLmtOut);
                        }

                        continue;
                    }

                    if (CurrentExpirationDateOut == objfieldStruct.id)
                    {
                        baseline.CurrentExpirationDateOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(CurrentExpirationDateOut);
                        }

                        continue;
                    }

                    if (FutureValidOut == objfieldStruct.id)
                    {
                        baseline.FutureValidOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureValidOut);
                        }

                        continue;
                    }

                    if (FutureVersionOut == objfieldStruct.id)
                    {
                        baseline.FutureVersionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureVersionOut);
                        }

                        continue;
                    }

                    if (FutureVersionPisBaseOut == objfieldStruct.id)
                    {
                        baseline.FutureVersionPisBaseOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureVersionPisBaseOut);
                        }

                        continue;
                    }

                    if (FutureVersionPisMissionOut == objfieldStruct.id)
                    {
                        baseline.FutureVersionPisMissionOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureVersionPisMissionOut);
                        }

                        continue;
                    }

                    if (FutureVersionPisInfotainmentOut == objfieldStruct.id)
                    {
                        baseline.FutureVersionPisInfotainmentOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureVersionPisInfotainmentOut);
                        }

                        continue;
                    }

                    if (FutureVersionLmtOut == objfieldStruct.id)
                    {
                        baseline.FutureVersionLmtOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureVersionLmtOut);
                        }

                        continue;
                    }

                    if (FutureActivationDateOut == objfieldStruct.id)
                    {
                        baseline.FutureActivationDateOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureActivationDateOut);
                        }

                        continue;
                    }

                    if (FutureExpirationDateOut == objfieldStruct.id)
                    {
                        baseline.FutureExpirationDateOut = objfieldStruct.value;

                        if (objfieldStruct.type != fieldTypeEnum.unknown)
                        {
                            expectedItemsInMessage.Remove(FutureExpirationDateOut);
                        }

                        continue;
                    }
                }

                // CR: atvcm00614906 - [PIS-GROUND URBAN] Gap 2277: missing notification when mission code not defined in t2gvehicleinfo.xml
                // Log an error if the message did not contain all expected items.
                if (expectedItemsInMessage.Count > 0)
                {
                    LogNotificationMessageItemMissingError(expectedItemsInMessage, T2GDataConverter.PisVersion);
                }
            }

            return(baseline);
        }