Esempio n. 1
0
        private static DiagnosticResultDto MapDiagnosticResult(Dictionary <int, DiagnosticResultDto> resultDictionary,
                                                               DiagnosticResultDto r, DiagnosticControllerDto c, DiagnosticTroubleCodeDto tc, dynamic ff)
        {
            if (!r.ResultId.HasValue)
            {
                return(null);
            }

            if (!resultDictionary.TryGetValue(r.ResultId.Value, out var result))
            {
                result             = r;
                result.Controllers = new List <IDiagnosticControllerDto>();
                resultDictionary.Add(r.ResultId.Value, result);
            }

            if (c == null)
            {
                return(result);
            }

            var controller = result.Controllers.FirstOrDefault(rc => rc.ControllerId == c.ControllerId);

            if (controller == null)
            {
                controller = c;
                controller.TroubleCodes = new List <IDiagnosticTroubleCodeDto>();
                controller.FreezeFrames = new List <IDiagnosticFreezeFrameDto>();
                result.Controllers.Add(controller);
            }

            if (controller.TroubleCodes.All(ctc => ctc.DiagnosticTroubleCodeId != tc.DiagnosticTroubleCodeId))
            {
                controller.TroubleCodes.Add(tc);
            }

            if (string.IsNullOrEmpty(ff?.SensorGroupsJson))
            {
                return(result);
            }
            if (controller.FreezeFrames.Any(cff => cff.FreezeFrameDiagnosticTroubleCode == ff.FreezeFrameDiagnosticTroubleCode))
            {
                return(result);
            }

            List <DiagnosticFreezeFrameSensorGroupDto> groups = JsonConvert.DeserializeObject <ICollection <DiagnosticFreezeFrameSensorGroupDto> >(ff.SensorGroupsJson);

            var freezeFrame = new DiagnosticFreezeFrameDto
            {
                FreezeFrameDiagnosticTroubleCode = ff.FreezeFrameDiagnosticTroubleCode,
                FreezeFrameSensorGroups          = groups.ToList <IDiagnosticFreezeFrameSensorGroupDto>()
            };

            controller.FreezeFrames.Add(freezeFrame);

            return(result);
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
        private static IDiagnosticFreezeFrameDto GetFreezeFrameInfo(List <string> lines)
        {
            // Check Input.
            if (!lines?.Any() ?? true)
            {
                return(null);
            }

            // Create Freeze Frame.
            var result = new DiagnosticFreezeFrameDto
            {
                FreezeFrameSensorGroups = new List <IDiagnosticFreezeFrameSensorGroupDto>()
            };

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

                // Load Values.
                var value = GetValue(lines[i + 1]);
                switch (lines[i])
                {
                case "<FF_DTC>":
                    result.FreezeFrameDiagnosticTroubleCode = value;
                    break;

                case "<FF_SENSORS>":
                    var endIndex = lines.FindIndex(i + 1, e => e.EndsWith("FF_SENSORS>")) - 1;
                    result.FreezeFrameSensorGroups.Add(GetFreezeFrameSensorGroup(lines.Skip(i + 1).Take(endIndex - i).ToList()));
                    i = endIndex;
                    break;
                }
            }

            // Return.
            return(result);
        }