Example #1
0
        private IEnumerable <CanMessageBMO> GetCanMessages(NetworkNodeBMO networkNode)
        {
            List <CanMessageBMO> list = new List <CanMessageBMO>();
            int i = 0;

            foreach (var line in LIST)
            {
                if (line.StartsWith("BO_ "))
                {
                    var messages = line.Split(' ').ToList();
                    if (messages.Count > 0)
                    {
                        messages.RemoveAt(0);
                    }
                    if (messages.Count == 0)
                    {
                        throw new Exception("File does not contain Can Messages.");
                    }

                    CanMessageBMO message = new CanMessageBMO();
                    message.ID   = long.Parse(messages[0]);
                    message.Name = messages[1]?.Replace(":", "");

                    message.CanSignals = GetCanSignals(networkNode, i);
                    // should we ignore this if there is no signals (as a side effect, of not having relations to any network node)?
                    list.Add(message);
                }
                i++;
            }

            return(list);
        }
Example #2
0
        private IEnumerable <CanSignalBMO> GetCanSignals(NetworkNodeBMO networkNode, int boLineIndex)
        {
            List <CanSignalBMO> list = new List <CanSignalBMO>();

            for (var i = boLineIndex + 1; i < LIST.Count; i++)
            {
                if (string.IsNullOrEmpty(LIST[i]))
                {
                    break;
                }
                if (LIST[i].StartsWith(" SG_ ") && LIST[i].Split(' ').LastOrDefault().Contains(networkNode.Name))
                {
                    var lineBase = LIST[i].Split(":");
                    if (lineBase.Length != 2)
                    {
                        throw new Exception("File is corrupted!");
                    }

                    var signalName = lineBase[0].Split(" ")[2];
                    var info       = lineBase[1].Split(" ")[1];
                    var info1      = info.Split("|");
                    var signal     = new CanSignalBMO();
                    signal.Name     = signalName;
                    signal.StartBit = ushort.Parse(info1[0]);
                    signal.Length   = ushort.Parse(info1[1].Split("@")[0]);
                    list.Add(signal);
                }
                else if (LIST[i].StartsWith(" SG_ ") && !LIST[i].Split(' ').LastOrDefault().Contains(networkNode.Name))
                {
                    continue;                                                                                                     // these ones should go maybe in a seperate list?
                }
                else
                {
                    throw new Exception("File is corrupted.");
                }
            }
            return(list);
        }