internal void WriteDetailedCrashHash(System.IO.StreamWriter aOutput)
 {
     if (string.IsNullOrEmpty(iDetailedHash) == false)
     {
         aOutput.Write(CCrashInfoFileUtilities.MakeOutputTags(iDetailedHash, CrashInfoConsts.Kcrash_detailedhash));
     }
 }
        /** Return the parameter string enclosed in crashinfofile identifier tags */
        public static string MakeOutputTags(string aContent, string aTagText)
        {
            string output = CCrashInfoFileUtilities.BlockStartMarker(aTagText);

            output += aContent;
            output += CCrashInfoFileUtilities.BlockEndMarker(aTagText);
            return(output);
        }
 //This is the phone number
 internal void WriteReporter(System.IO.StreamWriter aOutput)
 {
     //Dummy value needs to be written for first part
     aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kreporter));
     aOutput.Write("NotFound");
     aOutput.Write(CrashInfoConsts.KSeparator);
     aOutput.Write(iPhoneNumber);
     aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kreporter));
 }
        internal void WriteFileType(System.IO.StreamWriter aOutput)
        {
            int type = 0; //default type 0

            if (iReportType != string.Empty)
            {
                type = 1; //for reports, type 1
            }
            CCrashInfoFileUtilities.WriteOutputTags(type, CrashInfoConsts.Kfile_type, aOutput);
        }
        public void ReadRegisterData(CIRegisterList aRegList)
        {
            //If long enough reglist starts with R0, it is assumed to be the "basic" register list (R0-R15)
            if (aRegList.Count > 15 && aRegList[0].Type == SymbianStructuresLib.Arm.Registers.TArmRegisterType.EArmReg_00)
            {
                iBasicRegs.Name = aRegList.Name;
                foreach (CIRegister register in aRegList)
                {
                    string regName = GetRegisterName(register);

                    CCrasInfoRegisterItem regItem = new CCrasInfoRegisterItem(regName, register.Value);

                    if (register.Symbol != null && CCrashInfoFileUtilities.IsSymbolSerializable(register.Symbol))
                    {
                        regItem.Symbol = register.Symbol.Name;
                    }

                    iBasicRegs.Registers.Add(regItem);

                    //Check if this is PC and save it separately
                    if (register.Type == SymbianStructuresLib.Arm.Registers.TArmRegisterType.EArmReg_PC)
                    {
                        iProgramCounter.Value  = register.Value;
                        iProgramCounter.Symbol = register.Symbol.Name;
                    }
                }
            }
            else //all other registers as their own list
            {
                CCrashInfoRegisterList regs = new CCrashInfoRegisterList();
                regs.Name = aRegList.Name;
                bool hasRealData = false;
                foreach (CIRegister register in aRegList)
                {
                    string regName = GetRegisterName(register);
                    CCrasInfoRegisterItem regItem = new CCrasInfoRegisterItem(regName, register.Value);
                    if (register.Symbol != null && CCrashInfoFileUtilities.IsSymbolSerializable(register.Symbol))
                    {
                        regItem.Symbol = register.Symbol.Name;
                    }

                    regs.Registers.Add(regItem);

                    if (register.Value != 0)
                    {
                        hasRealData = true;
                    }
                }

                if (hasRealData)
                {
                    iOtherRegLists.Add(regs);
                }
            }
        }
 internal void WriteCrashSource(System.IO.StreamWriter aOutput)
 {
     if (iCrashSource == 1)
     {
         CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kcrash_source_user, CrashInfoConsts.Kcrash_source, aOutput);
     }
     else if (iCrashSource == 0)
     {
         CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kcrash_source_kernel, CrashInfoConsts.Kcrash_source, aOutput);
     }
 }
 internal void WriteProductionMode(System.IO.StreamWriter aOutput)
 {
     if (iProductionMode == 1)
     {
         CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Kproduction_mode_value, CrashInfoConsts.Kproduction_mode, aOutput);
     }
     else if (iProductionMode == 0)
     {
         CCrashInfoFileUtilities.WriteOutputTags(CrashInfoConsts.Krnd_mode_value, CrashInfoConsts.Kproduction_mode, aOutput);
     }
 }
 internal void WriteEventlog(System.IO.StreamWriter aOutput)
 {
     if (iEventlog.Count > 0)
     {
         aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Keventlog));
         foreach (string line in iEventlog)
         {
             aOutput.Write(line + CrashInfoConsts.KEOL);
         }
         aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Keventlog));
     }
 }
 internal void WriteOstTraces(System.IO.StreamWriter aOutput)
 {
     if (iOstTraces.Count > 0)
     {
         aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Ktrace_data));
         foreach (string line in iOstTraces)
         {
             aOutput.Write(line + CrashInfoConsts.KEOL);
         }
         aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Ktrace_data));
     }
 }
        internal void WriteSymbolFileNames(System.IO.StreamWriter aOutput)
        {
            string symbolfilenames = string.Empty;

            foreach (string fileName in iSymbolFiles)
            {
                if (symbolfilenames != string.Empty)
                {
                    symbolfilenames = symbolfilenames + ", ";
                }
                symbolfilenames = symbolfilenames + Path.GetFileName(fileName);
            }
            CCrashInfoFileUtilities.WriteOutputTags(symbolfilenames, CrashInfoConsts.Ksymbolfile_names, aOutput);
        }
        internal void WriteMiscInfo(System.IO.StreamWriter aOutput)
        {
            //Dummy value needs to be written for dbmover
            string mInfo = "NotFound";

            if (iFileType == CrashInfoConsts.MobileCrashFileType.ETypeRegistrationMessage)
            {
                mInfo = CrashInfoConsts.KRegistrationMiscInfo;
            }
            if (iFileType == CrashInfoConsts.MobileCrashFileType.ETypeAliveMessage)
            {
                mInfo = CrashInfoConsts.KAliveTimeMiscInfo;
            }

            CCrashInfoFileUtilities.WriteOutputTags(mInfo, CrashInfoConsts.Kmisc_info, aOutput);
        }
        internal void WriteProgramCounter(System.IO.StreamWriter aOutput)
        {
            aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kprogram_counter));
            aOutput.Write(iProgramCounter.Value);
            aOutput.Write(CrashInfoConsts.KSeparator);
            if (iProgramCounter.Symbol != string.Empty)
            {
                aOutput.Write(iProgramCounter.Symbol);
            }
            else
            {
                aOutput.Write("-"); //missing pc symbol is marked with - in ci file.
            }


            aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kprogram_counter));
        }
        internal void WriteLoadedDLLs(System.IO.StreamWriter aOutput)
        {
            aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kcrashtime_loaded_dlls));
            bool first = true;

            foreach (CCrashInfoCodeSegItem codeseg in iCodeSegs)
            {
                if (first) //all but first item start with separator - special handling needed
                {
                    first = false;
                }
                else
                {
                    aOutput.Write(CrashInfoConsts.KSeparator);
                }
                aOutput.Write(codeseg.Start);
                aOutput.Write(CrashInfoConsts.KSeparator);
                aOutput.Write(codeseg.End);
                aOutput.Write(CrashInfoConsts.KSeparator);
                aOutput.Write(codeseg.Name);
            }
            aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kcrashtime_loaded_dlls));
        }
 internal void WriteOtherRegisters(System.IO.StreamWriter aOutput)
 {
     if (iOtherRegLists.Count > 0)
     {
         aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kregister_extra));
         foreach (CCrashInfoRegisterList regList in iOtherRegLists)
         {
             aOutput.Write(regList.Name);
             aOutput.Write(CrashInfoConsts.KEOL);
             foreach (CCrasInfoRegisterItem reg in regList.Registers)
             {
                 aOutput.Write(reg.Name + " 0x" + reg.Value.ToString("X8"));
                 if (reg.Symbol != string.Empty)
                 {
                     aOutput.Write(" " + reg.Symbol);
                 }
                 aOutput.Write(CrashInfoConsts.KEOL);
             }
             aOutput.Write(CrashInfoConsts.KEOL);
         }
         aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kregister_extra));
     }
 }
 public void WriteBasicRegisters(System.IO.StreamWriter aOutput)
 {
     aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kregister));
     if (iBasicRegs.Registers.Count == 0)
     {
         aOutput.Write("NotFound|");
     }
     else
     {
         aOutput.Write(iBasicRegs.Name);
         foreach (CCrasInfoRegisterItem reg in iBasicRegs.Registers)
         {
             aOutput.Write(CrashInfoConsts.KSeparator);
             aOutput.Write(reg.Name);
             aOutput.Write(CrashInfoConsts.KSeparator);
             aOutput.Write(reg.Value);
             if (reg.Symbol != string.Empty)
             {
                 aOutput.Write(":" + reg.Symbol);
             }
         }
     }
     aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kregister));
 }
 internal void WriteTestset(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iTestSet, CrashInfoConsts.Ktestset, aOutput);
 }
 //Serial number known also as PSN
 internal void WriteSerialNumber(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iSerialNumber, CrashInfoConsts.Kpsninfo, aOutput);
 }
        /** Writes datablock contents to stream in CrashInfoFile format. Makes a complete .ci file */
        public void WriteToStream(StreamWriter aOutput)
        {
            aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Kversion));
            aOutput.Write(CrashInfoConsts.KVersionNumber.ToString().PadLeft(8, '0'));
            aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Kversion));

            aOutput.Write(CCrashInfoFileUtilities.BlockStartMarker(CrashInfoConsts.Knum_datablocks));
            aOutput.Write(iDatablocks.Count.ToString().PadLeft(8, '0'));
            aOutput.Write(CCrashInfoFileUtilities.BlockEndMarker(CrashInfoConsts.Knum_datablocks));

            foreach (CCrashInfoDataBlock datablock in iDatablocks)
            {
                datablock.WriteTimeStamp(aOutput);
                datablock.WriteRomID(aOutput);
                datablock.WriteSWVersion(aOutput);
                datablock.WriteVariantID(aOutput);
                datablock.WriteHWVersion(aOutput);
                datablock.WritePanicID(aOutput);
                datablock.WritePanicCategory(aOutput);
                datablock.WritePanicDescription(aOutput);
                datablock.WriteLanguage(aOutput);
                datablock.WritePanicedProcess(aOutput);
                datablock.WriteProgramCounter(aOutput);
                datablock.WriteModuleName(aOutput);
                datablock.WriteRegisterList(aOutput);
                datablock.WriteLoadedDLLs(aOutput);
                datablock.WriteAvailableMemory(aOutput);
                datablock.WriteUserComment(aOutput);
                datablock.WriteMemoryInfo(aOutput);
                datablock.WriteMiscInfo(aOutput);
                datablock.WriteReporter(aOutput);
                datablock.WriteArchive(aOutput);
                datablock.WriteProductType(aOutput);
                datablock.WriteCrashSource(aOutput);
                datablock.WriteProductionMode(aOutput);
                datablock.WriteImei(aOutput);
                datablock.WriteResetreason(aOutput);
                datablock.WriteUptime(aOutput);
                datablock.WriteTestset(aOutput);
                datablock.WriteIMSI(aOutput);
                datablock.WriteNetworkCountry(aOutput);
                datablock.WriteNetworkIdentity(aOutput);
                datablock.WriteLocInfo(aOutput);
                datablock.WriteNetworkCell(aOutput);
                datablock.WriteSerialNumber(aOutput);
                datablock.WriteS60Version(aOutput);
                datablock.WriteProductCode(aOutput);
                datablock.WriteVariantVersion(aOutput);
                datablock.WriteMMCInfo(aOutput);
                datablock.WriteUID(aOutput);
                datablock.WriteDiskInfo(aOutput);
                datablock.WriteFileType(aOutput);

                datablock.WriteReportType(aOutput);
                datablock.WriteReportCategory(aOutput);
                datablock.WriteReportOK(aOutput);
                datablock.WriteReportFail(aOutput);
                datablock.WriteReportParam1(aOutput);
                datablock.WriteReportParam2(aOutput);
                datablock.WriteReportParam3(aOutput);
                datablock.WriteReportComments(aOutput);

                datablock.WriteRegisterExtraList(aOutput);

                datablock.WriteCrashHash(aOutput);
                datablock.WriteDetailedCrashHash(aOutput);

                datablock.WriteBinFileName(aOutput);
                datablock.WriteSymbolFileNames(aOutput);

                datablock.WriteCallstacks(aOutput);
                datablock.WriteEventlog(aOutput);

                datablock.WriteOstTraces(aOutput);
            }
        }
 internal void WriteS60Version(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iS60Version, CrashInfoConsts.Ks60version, aOutput);
 }
 internal void WriteProductCode(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iProductCode, CrashInfoConsts.Kproduct_code, aOutput);
 }
 internal void WriteDiskInfo(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iDiskInfo.ToString(), CrashInfoConsts.Kdiskinfo, aOutput);
 }
 internal void WriteBinFileName(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iBinFilename, CrashInfoConsts.Kbinfile_name, aOutput);
 }
 internal void WriteReportComments(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iReportComments, CrashInfoConsts.Kreport_comments, aOutput);
 }
 internal void WriteReportParam3(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iReportParamName3, CrashInfoConsts.Kreport_param_name3, aOutput);
     CCrashInfoFileUtilities.WriteOutputTags(iReportParamValue3, CrashInfoConsts.Kreport_param_value3, aOutput);
 }
 internal void WriteReportFail(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iReportFail, CrashInfoConsts.Kreport_fail, aOutput);
 }
 internal void WriteReportCategory(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iReportCategory, CrashInfoConsts.Kreport_category, aOutput);
 }
 internal void WriteMMCInfo(System.IO.StreamWriter aOutput)
 {
     //Dummy value needs to be written for dbmover
     CCrashInfoFileUtilities.WriteOutputTags("", CrashInfoConsts.Kmmcinfo, aOutput);
 }
 internal void WriteNetworkCell(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iNetworkCell, CrashInfoConsts.Kcellid, aOutput);
 }
 internal void WriteVariantVersion(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iVariantVersion, CrashInfoConsts.Kvariant_version, aOutput);
 }
 internal void WriteUID(System.IO.StreamWriter aOutput)
 {
     CCrashInfoFileUtilities.WriteOutputTags(iUID, CrashInfoConsts.Kuid, aOutput);
 }