crashanalysercmd/Libraries/File Formats/Plugins/CrashInfoFilePlugin/FileFormat/CCrashInfoDataBlock.cs
changeset 2 0c91f0baec58
parent 0 818e61de6cd1
child 3 045ade241ef5
equal deleted inserted replaced
1:7a31f7298d8f 2:0c91f0baec58
    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;