Exemple #1
0
        private static IDiagnosticFreezeFrameDto GetFreezeFrameInfo(string text)
        {
            // Check Input.
            if (text == null)
            {
                return(null);
            }

            // Create Result.
            var result = new DiagnosticFreezeFrameDto
            {
                FreezeFrameDiagnosticTroubleCode = GetFieldValue(text, "FF_DTC"),
                FreezeFrameSensorGroups          = new List <IDiagnosticFreezeFrameSensorGroupDto>()
            };

            // Split for Sensor Groups.
            var groups = Regex.Split(text, @"""FF_SENSORS""").Skip(1).ToList();

            foreach (var group in groups)
            {
                // Create Sensor Group.
                var sensorGroup = new DiagnosticFreezeFrameSensorGroupDto
                {
                    FreezeFrameSensors = new List <IDiagnosticFreezeFrameSensorDto>()
                };

                // Load Sensors.
                var sensors = Regex.Split(group, @"""FF_SENSOR""").Skip(1).ToList();
                foreach (var sensor in sensors)
                {
                    // Add Delimiter.
                    var s = @"""FF_SENSOR""" + sensor;

                    // Load Sensor.
                    sensorGroup.FreezeFrameSensors.Add(new DiagnosticFreezeFrameSensorDto
                    {
                        SensorName  = GetFieldValue(s, "FF_SENSOR"),
                        SensorValue = GetFieldValue(s, "FF_VALUE"),
                        SensorUnit  = GetFieldValue(s, "FF_UNITS")
                    });
                }

                // Add to Result.
                result.FreezeFrameSensorGroups.Add(sensorGroup);
            }

            return(result);
        }
        private static IDiagnosticFreezeFrameSensorGroupDto GetFreezeFrameSensorGroup(List <string> lines)
        {
            // Check Input.
            if (!lines?.Any() ?? true)
            {
                return(null);
            }

            // Create Sensor.
            var result = new DiagnosticFreezeFrameSensorGroupDto
            {
                FreezeFrameSensors = new List <IDiagnosticFreezeFrameSensorDto>()
            };

            // Populate Result.
            for (var i = 0; i < lines.Count - 1; ++i)
            {
                // Check Line.
                if (CheckLine(lines[i], lines[i + 1]))
                {
                    continue;
                }

                // Check Sensor.
                if (!lines[i].StartsWith("<FF_SENSOR_"))
                {
                    continue;
                }

                // Load Sensor.
                var endIndex = lines.FindIndex(i + 1, e => e.StartsWith("<FF_SENSOR_")) - 1;
                endIndex = endIndex < 0 ? lines.Count - 1 : endIndex;
                result.FreezeFrameSensors.Add(GetFreezeFrameSensor(lines.Skip(i).Take(endIndex - i + 1).ToList()));
                i = endIndex;
            }

            // Return.
            return(result);
        }