コード例 #1
0
 /// <summary>
 /// Takes the message provided and returns the corresponding message value
 /// </summary>
 /// <param name="str"></param>
 /// <returns></returns>
 private string format_message(DBElements.DBMessage message)
 {
     string retVal = "";
     switch (message.MessageType)
     {
         case Generated.acceptor.DBMessageType.aEUROBALISE:
             retVal = format_eurobalise_message(message);
             break;
         case Generated.acceptor.DBMessageType.aEUROLOOP:
             retVal = format_euroloop_message(message);
             break;
         case Generated.acceptor.DBMessageType.aEURORADIO:
             retVal = format_euroradio_message(message);
             break;
     }
     return retVal;
 }
コード例 #2
0
        private string format_eurobalise_message(DBElements.DBMessage message)
        {
            DataDictionary.Types.NameSpace nameSpace = OverallNameSpaceFinder.INSTANCE.findByName(EFSSystem.Dictionaries[0], "Messages");
            Types.Structure structureType = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.Message");
            Values.StructureValue structure = new Values.StructureValue(structureType, nameSpace);

            int index = 0;
            FillStructure(nameSpace, message.Fields, ref index, structure); // fills the message fields

            // then we fill the packets
            KeyValuePair<string, Variables.IVariable> subSequencePair = structure.SubVariables.ElementAt(structure.SubVariables.Count - 1);
            Variables.IVariable subSequenceVariable = subSequencePair.Value;

            Types.Collection collectionType = (Types.Collection)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.Collection1");
            Values.ListValue collection = new Values.ListValue(collectionType, new List<Values.IValue>());

            Types.Structure subStructure1Type = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.SubStructure1");
            Values.StructureValue subStructure1 = new Values.StructureValue(subStructure1Type, nameSpace);

            Types.Structure packetStructure = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.PACKET.TRACK_TO_TRAIN.Message");
            Values.StructureValue packetValue = new Values.StructureValue(packetStructure, nameSpace);

            // will contain the list of all packets of the message and then be added to the structure packetValue
            ArrayList subStructures = new ArrayList();

            foreach (DBElements.DBPacket packet in message.Packets)
            {
                Tests.DBElements.DBField nidPacketField = packet.Fields[0] as Tests.DBElements.DBField;

                if (nidPacketField.Value != 255)  // 255 means "end of information"
                {
                    Values.StructureValue subStructure = FindStructure(nidPacketField.Value);

                    index = 0;
                    FillStructure(nameSpace, packet.Fields, ref index, subStructure);

                    subStructures.Add(subStructure);
                }
            }

            // the collection of the message packets is copied to the structure packetValue
            int i = 0;
            foreach (KeyValuePair<string, Variables.IVariable> pair in packetValue.SubVariables)
            {
                if (i == subStructures.Count)
                {
                    break;
                }
                string variableName = pair.Key;
                Values.StructureValue structureValue = subStructures[i] as Values.StructureValue;
                if (structureValue.Structure.FullName.Contains(variableName))
                {
                    Variables.IVariable variable = pair.Value;
                    variable.Value = structureValue;
                    i++;
                }
            }

            subStructure1.SubVariables.ElementAt(0).Value.Value = packetValue;
            collection.Val.Add(subStructure1);
            subSequenceVariable.Value = collection;

            return structure.Name;
        }
コード例 #3
0
 private string format_euroradio_message(DBElements.DBMessage message)
 {
     string retVal = "";
     return retVal;
 }
コード例 #4
0
 /// <summary>
 /// Adds a new message
 /// </summary>
 /// <param name="message"></param>
 public void AddMessage(DBElements.DBMessage message)
 {
     allMessages().Add(message);
 }