44 using CrashItemLib.Crash.Messages; |
44 using CrashItemLib.Crash.Messages; |
45 using System.IO; |
45 using System.IO; |
46 using CrashItemLib.Crash.Traces; |
46 using CrashItemLib.Crash.Traces; |
47 using SymbianStructuresLib.Debug.Trace; |
47 using SymbianStructuresLib.Debug.Trace; |
48 using CrashItemLib.Crash.InfoEnvironment; |
48 using CrashItemLib.Crash.InfoEnvironment; |
|
49 using ErrorLibrary; |
|
50 using MobileCrashLib; |
49 |
51 |
50 namespace CrashInfoFilePlugin.PluginImplementations.FileFormat |
52 namespace CrashInfoFilePlugin.PluginImplementations.FileFormat |
51 { |
53 { |
52 internal class CCrashInfoDataBlock |
54 internal class CCrashInfoDataBlock |
53 { |
55 { |
74 int second = timeStamp.Second; |
76 int second = timeStamp.Second; |
75 iTimeStampText = date + hour.ToString().PadLeft(2, '0') + minute.ToString().PadLeft(2, '0') + second.ToString().PadLeft(2, '0'); |
77 iTimeStampText = date + hour.ToString().PadLeft(2, '0') + minute.ToString().PadLeft(2, '0') + second.ToString().PadLeft(2, '0'); |
76 |
78 |
77 //UpTime |
79 //UpTime |
78 iUptime = header.UpTime.TotalSeconds; |
80 iUptime = header.UpTime.TotalSeconds; |
|
81 |
|
82 // Crash source |
|
83 iCrashSource = header.CrashSource; |
79 } |
84 } |
80 } |
85 } |
81 /** Add romid, timestamp, platform, language and sw version */ |
86 /** Add romid, timestamp, platform, language and sw version */ |
82 internal void AddSWInfos(CIContainer aContainer) |
87 internal void AddSWInfos(CIContainer aContainer) |
83 { |
88 { |
232 CIInfoHW info = (CIInfoHW)aContainer.ChildByType(typeof(CIInfoHW)); |
237 CIInfoHW info = (CIInfoHW)aContainer.ChildByType(typeof(CIInfoHW)); |
233 if (info != null) |
238 if (info != null) |
234 { |
239 { |
235 iProductType = info.ProductType; |
240 iProductType = info.ProductType; |
236 iProductCode = info.ProductCode.Trim(); |
241 iProductCode = info.ProductCode.Trim(); |
237 iSerialNumber = info.SerialNumber.Trim(); |
242 iSerialNumber = info.SerialNumber.Trim(); |
|
243 iProductionMode = info.ProductionMode; |
238 } |
244 } |
239 } |
245 } |
240 |
246 |
241 internal void AddTelephony(CIContainer aContainer) |
247 internal void AddTelephony(CIContainer aContainer) |
242 { |
248 { |
332 if (iFileType == CrashInfoConsts.MobileCrashFileType.ETypeBasicCrash) |
338 if (iFileType == CrashInfoConsts.MobileCrashFileType.ETypeBasicCrash) |
333 { |
339 { |
334 CISummarisableEntity primarySummary = aContainer.PrimarySummary; |
340 CISummarisableEntity primarySummary = aContainer.PrimarySummary; |
335 if (primarySummary != null) |
341 if (primarySummary != null) |
336 { |
342 { |
337 CCrashInfoHashBuilder.TConfiguration config = CCrashInfoHashBuilder.TConfiguration.EDefault; |
343 MobileCrashHashBuilder.TConfiguration config = MobileCrashHashBuilder.TConfiguration.EDefault; |
338 try //CCrashInfoHashBuilder.New throws an exception if there's not enough data for hash creation |
344 try //CCrashInfoHashBuilder.New throws an exception if there's not enough data for hash creation |
339 { |
345 { |
340 CCrashInfoHashBuilder builder = CCrashInfoHashBuilder.New(config, primarySummary); |
346 MobileCrashHashBuilder builder = MobileCrashHashBuilder.New(config, primarySummary); |
341 iHash = builder.GetHash(); |
347 iHash = builder.GetHash(); |
342 } |
348 } |
343 catch (Exception e) |
349 catch (Exception e) |
344 { |
350 { |
345 //Not enough data -> no hash and no grouping |
351 //Not enough data -> no hash and no grouping |
501 internal void WritePanicCategory(System.IO.StreamWriter aOutput) |
507 internal void WritePanicCategory(System.IO.StreamWriter aOutput) |
502 { |
508 { |
503 CCrashInfoFileUtilities.WriteOutputTags(iPanicCategory, CrashInfoConsts.Kpanic_category, aOutput); |
509 CCrashInfoFileUtilities.WriteOutputTags(iPanicCategory, CrashInfoConsts.Kpanic_category, aOutput); |
504 } |
510 } |
505 |
511 |
|
512 internal void WritePanicDescription(System.IO.StreamWriter aOutput) |
|
513 { |
|
514 string panicDescription = XmlErrorLibrary.GetPanicDescription(iPanicCategory, iPanicID.ToString()); |
|
515 CCrashInfoFileUtilities.WriteOutputTags(panicDescription, CrashInfoConsts.Kpanic_description, aOutput); |
|
516 } |
|
517 |
506 internal void WriteLanguage(System.IO.StreamWriter aOutput) |
518 internal void WriteLanguage(System.IO.StreamWriter aOutput) |
507 { |
519 { |
508 CCrashInfoFileUtilities.WriteOutputTags(iLanguage, CrashInfoConsts.Klanguage, aOutput); |
520 CCrashInfoFileUtilities.WriteOutputTags(iLanguage, CrashInfoConsts.Klanguage, aOutput); |
509 } |
521 } |
510 |
522 |
604 |
616 |
605 internal void WriteProductType(System.IO.StreamWriter aOutput) |
617 internal void WriteProductType(System.IO.StreamWriter aOutput) |
606 { |
618 { |
607 CCrashInfoFileUtilities.WriteOutputTags(iProductType, CrashInfoConsts.Kproduct_type, aOutput); |
619 CCrashInfoFileUtilities.WriteOutputTags(iProductType, CrashInfoConsts.Kproduct_type, aOutput); |
608 } |
620 } |
|
621 |
|
622 internal void WriteProductionMode(System.IO.StreamWriter aOutput) |
|
623 { |
|
624 if (iProductionMode == 1) |
|
625 { |
|
626 CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kproduction_mode_value, CrashInfoConsts.Kproduction_mode, aOutput); |
|
627 } |
|
628 else if (iProductionMode == 0) |
|
629 { |
|
630 CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Krnd_mode_value, CrashInfoConsts.Kproduction_mode, aOutput); |
|
631 } |
|
632 } |
|
633 |
|
634 internal void WriteCrashSource(System.IO.StreamWriter aOutput) |
|
635 { |
|
636 if (iCrashSource == 1) |
|
637 { |
|
638 CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kcrash_source_user, CrashInfoConsts.Kcrash_source, aOutput); |
|
639 } |
|
640 else if (iCrashSource == 0) |
|
641 { |
|
642 CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kcrash_source_kernel, CrashInfoConsts.Kcrash_source, aOutput); |
|
643 } |
|
644 } |
|
645 |
609 internal void WriteImei(System.IO.StreamWriter aOutput) |
646 internal void WriteImei(System.IO.StreamWriter aOutput) |
610 { |
647 { |
611 CCrashInfoFileUtilities.WriteOutputTags(iImei, CrashInfoConsts.Kimei, aOutput); |
648 CCrashInfoFileUtilities.WriteOutputTags(iImei, CrashInfoConsts.Kimei, aOutput); |
612 } |
649 } |
613 |
650 |
836 private ulong? iFreeMomery = null; //free ram |
873 private ulong? iFreeMomery = null; //free ram |
837 |
874 |
838 private string iProductType = string.Empty; //aka RM-code |
875 private string iProductType = string.Empty; //aka RM-code |
839 private string iProductCode = string.Empty; //7-digit HW variant code |
876 private string iProductCode = string.Empty; //7-digit HW variant code |
840 private string iSerialNumber = string.Empty; //aka PSN |
877 private string iSerialNumber = string.Empty; //aka PSN |
|
878 private int? iProductionMode = null; // 1: production mode phone, 0: RnD phone |
|
879 private int? iCrashSource = null; // 1: crash from user side, 0: from kernel side. |
841 |
880 |
842 private string iPhoneNumber = "NotFound"; |
881 private string iPhoneNumber = "NotFound"; |
843 private string iImei = string.Empty; |
882 private string iImei = string.Empty; |
844 private string iImsi = string.Empty; |
883 private string iImsi = string.Empty; |
845 private string iNetworkCountry = string.Empty; |
884 private string iNetworkCountry = string.Empty; |