public static bool PE_DownloadAndConnect()
 {
     ICSPSpeedRestore = PICkitFunctions.LastICSPSpeed;
     if (PICkitFunctions.LastICSPSpeed < 2)
     {
         PICkitFunctions.SetProgrammingSpeed(2);
     }
     if (!PE_Connect())
     {
         UpdateStatusWinText("Downloading Programming Executive...");
         if (!DownloadPE())
         {
             UpdateStatusWinText("Downloading Programming Executive...FAILED!");
             restoreICSPSpeed();
             return(false);
         }
         if (!PE_Connect())
         {
             UpdateStatusWinText("Downloading Programming Executive...FAILED!");
             restoreICSPSpeed();
             return(false);
         }
     }
     return(true);
 }
 private static void restoreICSPSpeed()
 {
     if (ICSPSpeedRestore != PICkitFunctions.LastICSPSpeed)
     {
         PICkitFunctions.SetProgrammingSpeed(ICSPSpeedRestore);
     }
 }
 public void ClearTestMemory()
 {
     for (int i = 0; i < TestMemory.Length; i++)
     {
         TestMemory[i] = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue;
     }
 }
 private void buttonClearUnitID_Click(object sender, EventArgs e)
 {
     PICkitFunctions.UnitIDWrite("");
     buttonClearUnitID.Enabled = false;
     buttonClearUnitID.Text    = "No Assigned ID";
     unitIDChanged             = true;
 }
 private void buttonBack_Click(object sender, EventArgs e)
 {
     if (panelSetup.Visible)
     {
         panelIntro.Visible = true;
         panelSetup.Visible = false;
         buttonBack.Enabled = false;
         setupClearButtons();
     }
     else if (panelCal.Visible)
     {
         PICkitFunctions.VddOff();
         panelSetup.Visible = true;
         panelCal.Visible   = false;
     }
     else if (panelUnitID.Visible)
     {
         panelUnitID.Visible     = false;
         panelCal.Visible        = true;
         buttonCalibrate.Enabled = false;
         labelGoodCal.Visible    = false;
         labelBadCal.Visible     = false;
         textBoxVDD.Text         = "-";
         buttonNext.Enabled      = true;
         buttonCancel.Text       = "Cancel";
     }
 }
 public DialogCalibrate()
 {
     InitializeComponent();
     PICkitFunctions.VddOff();
     PICkitFunctions.ForcePICkitPowered();
     setupClearButtons();
 }
 private void buttonSetUnitID_Click(object sender, EventArgs e)
 {
     if (PICkitFunctions.UnitIDWrite(textBoxUnitID.Text))
     {
         labelAssignedID.Visible = true;
         buttonSetUnitID.Enabled = false;
         unitIDChanged           = true;
     }
 }
Example #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            byte[] array = new byte[128];
            base.Update();
            PICkitFunctions.RunScript(0, 1);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdPrepScript > 0)
            {
                if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes == 4)
                {
                    PICkitFunctions.DownloadAddress3((int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr / 2u));
                }
                else
                {
                    PICkitFunctions.DownloadAddress3(0);
                }
                PICkitFunctions.RunScript(8, 1);
            }
            int eEMemBytesPerWord = (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemBytesPerWord;
            int num  = 128 / ((int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations * eEMemBytesPerWord);
            int num2 = num * (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations;
            int num3 = 0;

            do
            {
                PICkitFunctions.RunScriptUploadNoLen(9, num);
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L);
                PICkitFunctions.UploadDataNoLen();
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L);
                int num4 = 0;
                for (int i = 0; i < num2; i++)
                {
                    int  num5 = 0;
                    uint num6 = (uint)array[num4 + num5++];
                    if (num5 < eEMemBytesPerWord)
                    {
                        num6 |= (uint)((uint)array[num4 + num5++] << 8);
                    }
                    num4 += num5;
                    if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemShift > 0)
                    {
                        //num6 = (num6 >> 1 & eEBlank);
                    }
                    PICkitFunctions.DeviceBuffers.EEPromMemory[num3++] = num6;
                    if (num3 >= (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem)
                    {
                        break;
                    }
                }
            }while (num3 < (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem);
            PICkitFunctions.RunScript(1, 1);

            foreach (var a in array)
            {
                this.textBox1.AppendText(a.ToString());
                this.textBox1.AppendText(" ");
            }
        }
 public void UpdateMultiWinMem()
 {
     if (lastPart != PICkitFunctions.ActivePart || lastFam != PICkitFunctions.GetActiveFamily())
     {
         ReCalcMultiWinMem();
     }
     else
     {
         updateDisplay();
     }
 }
 public static bool ReadHexAndVerify(string fileName)
 {
     try
     {
         FileInfo   fileInfo   = new FileInfo(fileName);
         TextReader textReader = fileInfo.OpenText();
         string     text       = textReader.ReadLine();
         bool       result     = true;
         int        num        = 0;
         while (text != null)
         {
             if (text[0] == ':' && text.Length >= 11)
             {
                 int num2 = int.Parse(text.Substring(1, 2), NumberStyles.HexNumber);
                 int num3 = int.Parse(text.Substring(3, 4), NumberStyles.HexNumber);
                 int num4 = int.Parse(text.Substring(7, 2), NumberStyles.HexNumber);
                 if (num4 == 0 && num3 >= 8192 && num3 < 32736)
                 {
                     int num5 = num3 & 0xF;
                     int num6 = num3 & 0xFFF0;
                     if (num != num6)
                     {
                         PICkitFunctions.BL_ReadFlash16(num6);
                     }
                     if (text.Length >= 11 + 2 * num2)
                     {
                         for (int i = 0; i < num2; i++)
                         {
                             uint num7 = uint.Parse(text.Substring(9 + 2 * i, 2), NumberStyles.HexNumber);
                             if (PICkitFunctions.Usb_read_array[6 + num5 + i] != (byte)(num7 & 0xFF))
                             {
                                 result = false;
                                 num4   = 1;
                                 break;
                             }
                         }
                     }
                     num = num6;
                 }
                 if (num4 == 1)
                 {
                     break;
                 }
             }
             text = textReader.ReadLine();
         }
         textReader.Close();
         return(result);
     }
     catch
     {
         return(false);
     }
 }
 private void buttonCancel_Click(object sender, EventArgs e)
 {
     PICkitFunctions.VddOff();
     if (unitIDChanged)
     {
         PICkitFunctions.ResetPICkit2();
         Thread.Sleep(1000);
         MessageBox.Show("Resetting PICkit 2.\n\nPlease wait for USB enumeration\nto complete before clicking OK...", "Reset PICkit 2");
         Thread.Sleep(1000);
     }
     Close();
 }
        private void buttonWriteCalWords_Click(object sender, EventArgs e)
        {
            uint[] array = new uint[PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].CalibrationWords];
            int    num   = getTestMemAddress() * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
            int    num2  = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr - num) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation;
            int    num3  = num2 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords;

            for (int i = 0; i < array.Length; i++)
            {
                array[i] = TestMemory[num3 + i];
            }
            CallMainFormEraseWrCal(array);
        }
 private int getTestMemAddress()
 {
     if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048)
     {
         int num = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem;
         if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem > 0)
         {
             num += PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem;
         }
         return(num);
     }
     return((int)(PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart / PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes));
 }
Example #14
0
        private uint getEEBlank()
        {
            uint result = 255u;

            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemAddressIncrement > 1)
            {
                result = 65535u;
            }
            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 4095u)
            {
                result = 4095u;
            }
            return(result);
        }
 public void UpdateMultiWinProgMem(string dataSource)
 {
     if (lastPart != PICkitFunctions.ActivePart || lastFam != PICkitFunctions.GetActiveFamily())
     {
         lastPart = PICkitFunctions.ActivePart;
         lastFam  = PICkitFunctions.GetActiveFamily();
         ReCalcMultiWinProgMem();
     }
     else
     {
         updateDisplay();
     }
     displayDataSource.Text = dataSource;
 }
 public void UpdateTestMemForm()
 {
     textBoxTestMemSize.Text = FormPICkit2.TestMemoryWords.ToString();
     if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart != 0)
     {
         textBoxBaselineConfig.Enabled       = true;
         textBoxTestMemSize.Enabled          = true;
         checkBoxTestMemImportExport.Enabled = true;
         labelNotSupported.Visible           = false;
     }
     else
     {
         textBoxBaselineConfig.Enabled       = false;
         textBoxTestMemSize.Enabled          = false;
         checkBoxTestMemImportExport.Enabled = false;
         dataGridTestMemory.Enabled          = false;
         labelNotSupported.Visible           = true;
     }
 }
        public void ReadTestMemory()
        {
            byte[] array = new byte[128];
            PICkitFunctions.RunScript(0, 1);
            int bytesPerLocation = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation;
            int num  = 128 / (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].TestMemoryRdWords * bytesPerLocation);
            int num2 = num * PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].TestMemoryRdWords;
            int num3 = 0;

            prepTestMem();
            do
            {
                PICkitFunctions.RunScriptUploadNoLen(27, num);
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L);
                PICkitFunctions.UploadDataNoLen();
                Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L);
                int num4 = 0;
                for (int i = 0; i < num2; i++)
                {
                    int  num5 = 0;
                    uint num6 = array[num4 + num5++];
                    if (num5 < bytesPerLocation)
                    {
                        num6 = (uint)((int)num6 | (array[num4 + num5++] << 8));
                    }
                    if (num5 < bytesPerLocation)
                    {
                        num6 = (uint)((int)num6 | (array[num4 + num5++] << 16));
                    }
                    if (num5 < bytesPerLocation)
                    {
                        num6 = (uint)((int)num6 | (array[num4 + num5++] << 24));
                    }
                    num4 += num5;
                    if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemShift > 0)
                    {
                        num6 = ((num6 >> 1) & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue);
                    }
                    TestMemory[num3++] = num6;
                }
            }while (num3 < FormPICkit2.TestMemoryWords);
            PICkitFunctions.RunScript(1, 1);
        }
Example #18
0
 public static bool ExportBINFile(string filePath)
 {
     try
     {
         FileStream fileStream      = File.Open(filePath, FileMode.Create);
         int        progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
         for (int i = 0; i < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; i++)
         {
             for (int j = 0; j < progMemHexBytes; j++)
             {
                 byte value = (byte)((PICkitFunctions.DeviceBuffers.ProgramMemory[i] >> 8 * j) & 0xFF);
                 fileStream.WriteByte(value);
             }
         }
         fileStream.Close();
     }
     catch
     {
         return(false);
     }
     return(true);
 }
        private void progMemEdit(object sender, DataGridViewCellEventArgs e)
        {
            int    rowIndex    = e.RowIndex;
            int    columnIndex = e.ColumnIndex;
            string p_value     = "0x" + dataGridProgramMemory[columnIndex, rowIndex].FormattedValue.ToString();
            int    num         = 0;

            try
            {
                num = Utilities.Convert_Value_To_Int(p_value);
            }
            catch
            {
                num = 0;
            }
            int num2 = dataGridProgramMemory.ColumnCount - 1;

            if (comboBoxProgMemView.SelectedIndex >= 1)
            {
                num2 /= 2;
            }
            int num3 = rowIndex * num2 + columnIndex - 1;

            if (PICkitFunctions.FamilyIsPIC32())
            {
                int programMem = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem;
                int bootFlash  = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash;
                programMem -= bootFlash;
                num3       -= num2;
                if (num3 > programMem)
                {
                    num3 -= num2;
                }
            }
            PICkitFunctions.DeviceBuffers.ProgramMemory[num3] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue);
            TellMainFormProgMemEdited();
            progMemJustEdited = true;
            TellMainFormUpdateGUI();
        }
        private void dataGridTestMemory_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int    rowIndex    = e.RowIndex;
            int    columnIndex = e.ColumnIndex;
            string p_value     = "0x" + dataGridTestMemory[columnIndex, rowIndex].FormattedValue.ToString();
            int    num         = Utilities.Convert_Value_To_Int(p_value);
            int    num2        = dataGridTestMemory.ColumnCount - 1;
            int    num3        = rowIndex * num2 + columnIndex - 1;
            int    num4        = getTestMemAddress() * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
            int    num5        = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr;

            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048)
            {
                num5 = num4;
            }
            TestMemory[num3] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue);
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords > 0 && num5 >= num4 && num5 < num4 + FormPICkit2.TestMemoryWords)
            {
                int num6 = (num5 - num4) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation;
                if (num3 >= num6 && num3 < num6 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords)
                {
                    PICkitFunctions.DeviceBuffers.UserIDs[num3 - num6] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue);
                    if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2097152)
                    {
                        PICkitFunctions.DeviceBuffers.UserIDs[num3 - num6] &= 255u;
                    }
                }
            }
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords > 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr >= num4 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr < num4 + FormPICkit2.TestMemoryWords)
            {
                int num7 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr - num4) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation;
                if (num3 >= num7 && num3 < num7 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords)
                {
                    PICkitFunctions.DeviceBuffers.ConfigWords[num3 - num7] = (uint)(num & PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num3 - num7]);
                }
            }
            testMemJustEdited = true;
            UpdateMainFormGUI();
        }
Example #21
0
 public static Constants.FileRead ImportBINFile(string filePath)
 {
     try
     {
         FileInfo fileInfo = new FileInfo(filePath);
         LastWriteTime = fileInfo.LastWriteTime;
         FileStream fileStream      = File.OpenRead(filePath);
         int        progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
         int        num             = 0;
         int        num2            = 0;
         byte[]     array           = new byte[1];
         while (fileStream.Read(array, 0, 1) > 0)
         {
             if (num >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem)
             {
                 return(Constants.FileRead.largemem);
             }
             uint num3 = (uint)(-256 | array[0]);
             for (int i = 0; i < num2; i++)
             {
                 num3 <<= 8;
                 num3  |= 0xFF;
             }
             PICkitFunctions.DeviceBuffers.ProgramMemory[num] &= num3;
             if (++num2 >= progMemHexBytes)
             {
                 num++;
                 num2 = 0;
             }
         }
         fileStream.Close();
     }
     catch
     {
         return(Constants.FileRead.failed);
     }
     return(Constants.FileRead.success);
 }
Example #22
0
        public DialogUnitSelect()
        {
            InitializeComponent();
            base.Size = new Size(base.Size.Width, (int)(FormPICkit2.ScalefactH * (float)base.Size.Height));
            ushort num = 0;

            while (num < 8)
            {
                Constants.PICkit2USB pICkit2USB = PICkitFunctions.DetectPICkit2Device(num, readFW: false);
                if (pICkit2USB != Constants.PICkit2USB.notFound)
                {
                    string text = PICkitFunctions.GetSerialUnitID();
                    if (text == "PIC18F2550")
                    {
                        text = "<bootloader>";
                    }
                    listBoxUnits.Items.Add("  " + num.ToString() + "                " + text);
                    num = (ushort)(num + 1);
                    continue;
                }
                break;
            }
        }
 private void setupClearButtons()
 {
     if (PICkitFunctions.isCalibrated())
     {
         buttonClearCal.Enabled = true;
         buttonClearCal.Text    = "Clear Calibration";
     }
     else
     {
         buttonClearCal.Enabled = false;
         buttonClearCal.Text    = "Unit Not Calibrated";
     }
     if (PICkitFunctions.UnitIDRead().Length > 0)
     {
         buttonClearUnitID.Enabled = true;
         buttonClearUnitID.Text    = "Clear Unit ID";
     }
     else
     {
         buttonClearUnitID.Enabled = false;
         buttonClearUnitID.Text    = "No Assigned ID";
     }
 }
 private void buttonNext_Click(object sender, EventArgs e)
 {
     if (panelIntro.Visible)
     {
         panelIntro.Visible = false;
         panelSetup.Visible = true;
         buttonBack.Enabled = true;
     }
     else if (panelSetup.Visible)
     {
         panelSetup.Visible      = false;
         panelCal.Visible        = true;
         buttonCalibrate.Enabled = true;
         labelGoodCal.Visible    = false;
         labelBadCal.Visible     = false;
         textBoxVDD.Text         = "4.000";
         textBoxVDD.Focus();
         textBoxVDD.SelectAll();
         PICkitFunctions.SetVoltageCals(256, 0, 128);
         PICkitFunctions.SetVDDVoltage(4f, 3.4f);
         PICkitFunctions.VddOn();
     }
     else if (panelCal.Visible)
     {
         panelCal.Visible        = false;
         panelUnitID.Visible     = true;
         buttonSetUnitID.Enabled = true;
         labelAssignedID.Visible = false;
         textBoxUnitID.Text      = PICkitFunctions.UnitIDRead();
         textBoxUnitID.Focus();
         textBoxVDD.SelectAll();
         buttonNext.Enabled = false;
         buttonCancel.Text  = "Finished";
         PICkitFunctions.VddOff();
     }
 }
        private void progMemEdit(object sender, DataGridViewCellEventArgs e)
        {
            int    rowIndex    = e.RowIndex;
            int    columnIndex = e.ColumnIndex;
            string p_value     = "0x" + dataGridProgramMemory[columnIndex, rowIndex].FormattedValue.ToString();
            int    num         = 0;

            try
            {
                num = Utilities.Convert_Value_To_Int(p_value);
            }
            catch
            {
                num = 0;
            }
            int num2 = dataGridProgramMemory.ColumnCount - 1;

            if (comboBoxProgMemView.SelectedIndex >= 1)
            {
                num2 /= 2;
            }
            uint num3 = 255u;

            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 65535)
            {
                num3 = 65535u;
            }
            else if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 4095)
            {
                num3 = 4095u;
            }
            PICkitFunctions.DeviceBuffers.EEPromMemory[rowIndex * num2 + columnIndex - 1] = (uint)(num & num3);
            TellMainFormProgMemEdited();
            progMemJustEdited = true;
            TellMainFormUpdateGUI();
        }
        private void updateDisplay()
        {
            int  num              = dataGridProgramMemory.RowCount - 1;
            int  num2             = dataGridProgramMemory.ColumnCount - 1;
            int  addressIncrement = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement;
            uint blankValue       = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue;

            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                num2 /= 2;
            }
            int programMem = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem;
            int bootFlash  = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash;

            programMem -= bootFlash;
            programMem /= num2;
            int num3 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem % num2;

            if (num3 == 0)
            {
                num3 = num2;
            }
            int num4 = num * num2;

            if (blankValue == uint.MaxValue)
            {
                int num5 = 0;
                for (int i = 1; i <= programMem; i++)
                {
                    for (int j = 0; j < num2; j++)
                    {
                        dataGridProgramMemory[j + 1, i].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]);
                    }
                }
                for (int k = programMem + 2; k < dataGridProgramMemory.RowCount - 1; k++)
                {
                    for (int l = 0; l < num2; l++)
                    {
                        dataGridProgramMemory[l + 1, k].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]);
                    }
                }
                num3 = bootFlash % num2;
                if (num3 == 0)
                {
                    num3 = num2;
                }
                for (int m = 1; m <= num2; m++)
                {
                    if (m <= num3)
                    {
                        dataGridProgramMemory[m, num].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]);
                        continue;
                    }
                    dataGridProgramMemory[m, num].Value    = "";
                    dataGridProgramMemory[m, num].ReadOnly = true;
                }
            }
            else
            {
                int n    = 0;
                int num6 = 0;
                int num7 = 0;
                for (; n < num; n++)
                {
                    for (int num8 = 1; num8 <= num2; num8++)
                    {
                        dataGridProgramMemory[num8, n].Value       = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num6++]);
                        dataGridProgramMemory[num8, n].ToolTipText = string.Format(addrFormat, num7);
                        num7 += addressIncrement;
                    }
                }
                for (int num9 = 1; num9 <= num2; num9++)
                {
                    if (num9 <= num3)
                    {
                        dataGridProgramMemory[num9, num].Value       = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num4]);
                        dataGridProgramMemory[num9, num].ToolTipText = string.Format(addrFormat, num4++ *addressIncrement);
                    }
                    else
                    {
                        dataGridProgramMemory[num9, num].Value       = "";
                        dataGridProgramMemory[num9, num].ToolTipText = "";
                        dataGridProgramMemory[num9, num].ReadOnly    = true;
                    }
                }
            }
            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                for (int num10 = num2 + 1; num10 <= 2 * num2; num10++)
                {
                    dataGridProgramMemory.Columns[num10].ReadOnly = true;
                }
                if (comboBoxProgMemView.SelectedIndex == 1)
                {
                    int num11 = 0;
                    int num12 = 0;
                    int num13 = 0;
                    for (; num11 < num; num11++)
                    {
                        for (int num14 = num2 + 1; num14 <= 2 * num2; num14++)
                        {
                            dataGridProgramMemory[num14, num11].Value       = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num12++], asciiBytes);
                            dataGridProgramMemory[num14, num11].ToolTipText = string.Format(addrFormat, num13);
                            num13 += addressIncrement;
                        }
                    }
                    num4 = num * num2;
                    for (int num15 = num2 + 1; num15 <= 2 * num2; num15++)
                    {
                        if (num15 <= num2 + num3)
                        {
                            dataGridProgramMemory[num15, num].Value       = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num4++], asciiBytes);
                            dataGridProgramMemory[num15, num].ToolTipText = string.Format(addrFormat, num4 * addressIncrement);
                        }
                        else
                        {
                            dataGridProgramMemory[num15, num].Value       = "";
                            dataGridProgramMemory[num15, num].ToolTipText = "";
                            dataGridProgramMemory[num15, num].ReadOnly    = true;
                        }
                    }
                }
                else
                {
                    int num16 = 0;
                    int num17 = 0;
                    int num18 = 0;
                    for (; num16 < num; num16++)
                    {
                        for (int num19 = num2 + 1; num19 <= 2 * num2; num19++)
                        {
                            dataGridProgramMemory[num19, num16].Value       = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num17++], asciiBytes);
                            dataGridProgramMemory[num19, num16].ToolTipText = string.Format(addrFormat, num18);
                            num18 += addressIncrement;
                        }
                    }
                    num4 = num * num2;
                    for (int num20 = num2 + 1; num20 <= 2 * num2; num20++)
                    {
                        if (num20 <= num2 + num3)
                        {
                            dataGridProgramMemory[num20, num].Value       = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num4++], asciiBytes);
                            dataGridProgramMemory[num20, num].ToolTipText = string.Format(addrFormat, num4 * addressIncrement);
                        }
                        else
                        {
                            dataGridProgramMemory[num20, num].Value       = "";
                            dataGridProgramMemory[num20, num].ToolTipText = "";
                            dataGridProgramMemory[num20, num].ReadOnly    = true;
                        }
                    }
                }
            }
            if (dataGridProgramMemory.FirstDisplayedCell != null && !progMemJustEdited)
            {
                int rowIndex = dataGridProgramMemory.FirstDisplayedCell.RowIndex;
                dataGridProgramMemory.MultiSelect           = false;
                dataGridProgramMemory[0, rowIndex].Selected = true;
                dataGridProgramMemory[0, rowIndex].Selected = false;
                dataGridProgramMemory.MultiSelect           = true;
            }
            else if (dataGridProgramMemory.FirstDisplayedCell == null && dataGridProgramMemory.RowCount > 0)
            {
                dataGridProgramMemory.MultiSelect    = false;
                dataGridProgramMemory[0, 0].Selected = true;
                dataGridProgramMemory[0, 0].Selected = false;
                dataGridProgramMemory.MultiSelect    = true;
            }
            progMemJustEdited = false;
        }
        public void ReCalcMultiWinProgMem()
        {
            uint programMem = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem;

            if (programMem == 0 || base.WindowState == FormWindowState.Minimized)
            {
                return;
            }
            uint blankValue = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue;

            if (blankValue == uint.MaxValue)
            {
                comboBoxProgMemView.SelectedIndex = 0;
                comboBoxProgMemView.Enabled       = false;
            }
            else
            {
                comboBoxProgMemView.Enabled = true;
            }
            uint num  = programMem * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement - 1;
            int  num2 = 32;

            addrFormat = "{0:X3}";
            if (blankValue == uint.MaxValue)
            {
                num2       = 65;
                addrFormat = "{0:X8}";
            }
            else if (num > 65535)
            {
                num2       = 44;
                addrFormat = "{0:X5}";
            }
            else if (num > 4095)
            {
                num2       = 38;
                addrFormat = "{0:X4}";
            }
            num2 = (int)((float)num2 * FormPICkit2.ScalefactW);
            int num3 = 24;
            int num4 = 16;

            asciiBytes = 1;
            dataFormat = "{0:X2}";
            if (blankValue == uint.MaxValue)
            {
                num3       = 65;
                num4       = 58;
                asciiBytes = 4;
                dataFormat = "{0:X8}";
            }
            else if (blankValue > 65535)
            {
                num3       = 50;
                num4       = 43;
                asciiBytes = 3;
                dataFormat = "{0:X6}";
            }
            else if (blankValue > 4095)
            {
                num3       = 36;
                num4       = 28;
                asciiBytes = 2;
                dataFormat = "{0:X4}";
            }
            else if (blankValue > 255)
            {
                num3       = 28;
                num4       = 28;
                asciiBytes = 2;
                dataFormat = "{0:X3}";
            }
            float num5 = 1f;

            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                num5  = (float)num4 / ((float)num4 + (float)num3);
                num3 += num4;
            }
            num3 = (int)((float)num3 * FormPICkit2.ScalefactW);
            int num6 = dataGridProgramMemory.Size.Width - num2 - (int)(20f * FormPICkit2.ScalefactW);
            int num7 = num6 / num3;

            for (int num8 = 1; num8 <= 256; num8 *= 2)
            {
                if (num8 > num7)
                {
                    num7 = num8 / 2;
                    break;
                }
            }
            if (num7 > (int)programMem)
            {
                num7 = (int)programMem;
            }
            num3 = num6 / num7;
            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                num4  = (int)(num5 * (float)num3);
                num3 -= num4;
            }
            dataGridProgramMemory.Rows.Clear();
            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                dataGridProgramMemory.ColumnCount = 2 * num7 + 1;
            }
            else
            {
                dataGridProgramMemory.ColumnCount = num7 + 1;
            }
            dataGridProgramMemory.Columns[0].Width = num2;
            for (int i = 1; i <= num7; i++)
            {
                dataGridProgramMemory.Columns[i].Width = num3;
            }
            if (comboBoxProgMemView.SelectedIndex > 0)
            {
                for (int j = num7 + 1; j <= 2 * num7; j++)
                {
                    dataGridProgramMemory.Columns[j].Width = num4;
                }
            }
            int num9 = (int)programMem / num7;

            if ((long)programMem % (long)num7 > 0)
            {
                num9++;
            }
            if (blankValue == uint.MaxValue)
            {
                num9 += 2;
            }
            dataGridProgramMemory.RowCount = num9;
            int num10 = num7 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement;

            if (blankValue == uint.MaxValue)
            {
                int programMem2 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem;
                int bootFlash   = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash;
                programMem2 -= bootFlash;
                programMem2 /= num7;
                dataGridProgramMemory.ShowCellToolTips = false;
                dataGridProgramMemory[0, 0].Value      = "Program";
                dataGridProgramMemory[1, 0].Value      = "Flash";
                for (int k = 0; k < dataGridProgramMemory.ColumnCount; k++)
                {
                    dataGridProgramMemory[k, 0].Style.BackColor = SystemColors.ControlDark;
                    dataGridProgramMemory[k, 0].ReadOnly        = true;
                }
                int l     = 1;
                int num11 = 486539264;
                for (; l <= programMem2; l++)
                {
                    dataGridProgramMemory[0, l].Value           = string.Format(addrFormat, num11);
                    dataGridProgramMemory[0, l].Style.BackColor = SystemColors.ControlLight;
                    num11 += num10;
                }
                dataGridProgramMemory[0, programMem2 + 1].Value = "Boot";
                dataGridProgramMemory[1, programMem2 + 1].Value = "Flash";
                for (int m = 0; m < dataGridProgramMemory.ColumnCount; m++)
                {
                    dataGridProgramMemory[m, programMem2 + 1].Style.BackColor = SystemColors.ControlDark;
                    dataGridProgramMemory[m, programMem2 + 1].ReadOnly        = true;
                }
                int n     = programMem2 + 2;
                int num12 = 532676608;
                for (; n < dataGridProgramMemory.RowCount; n++)
                {
                    dataGridProgramMemory[0, n].Value           = string.Format(addrFormat, num12);
                    dataGridProgramMemory[0, n].Style.BackColor = SystemColors.ControlLight;
                    num12 += num10;
                }
            }
            else
            {
                dataGridProgramMemory.ShowCellToolTips = true;
                int num13 = 0;
                int num14 = 0;
                for (; num13 < num9; num13++)
                {
                    dataGridProgramMemory[0, num13].Value           = string.Format(addrFormat, num14);
                    dataGridProgramMemory[0, num13].ReadOnly        = true;
                    dataGridProgramMemory[0, num13].Style.BackColor = SystemColors.ControlLight;
                    num14 += num10;
                }
            }
            updateDisplay();
        }
Example #28
0
        public static bool ExportHexFile(string filePath, bool progMem, bool eeMem)
        {
            if (filePath.Length > 4 && filePath.Substring(filePath.Length - 4).ToUpper() == ".BIN" && PICkitFunctions.FamilyIsEEPROM())
            {
                return(ExportBINFile(filePath));
            }
            StreamWriter streamWriter = new StreamWriter(filePath);

            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215)
            {
                streamWriter.WriteLine(":020000041D00DD");
            }
            else
            {
                streamWriter.WriteLine(":020000040000FA");
            }
            int num  = 0;
            int num2 = 0;
            int num3 = PICkitFunctions.DeviceBuffers.ProgramMemory.Length;

            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215)
            {
                num   = 7424;
                num2  = 0;
                num3 -= (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash;
            }
            int num4            = 0;
            int progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
            int num5            = 16 / progMemHexBytes;

            if (progMem)
            {
                do
                {
                    string text = $":10{num2:X4}00";
                    for (int i = 0; i < num5; i++)
                    {
                        string text2 = "00000000";
                        if (num4 + i < PICkitFunctions.DeviceBuffers.ProgramMemory.Length)
                        {
                            text2 = $"{PICkitFunctions.DeviceBuffers.ProgramMemory[num4 + i]:X8}";
                        }
                        for (int j = 0; j < progMemHexBytes; j++)
                        {
                            text += text2.Substring(6 - 2 * j, 2);
                        }
                    }
                    text += $"{computeChecksum(text):X2}";
                    streamWriter.WriteLine(text);
                    num2 += 16;
                    num4 += num5;
                    if (num2 > 65535 && num4 < PICkitFunctions.DeviceBuffers.ProgramMemory.Length)
                    {
                        num  += num2 >> 16;
                        num2 &= 0xFFFF;
                        string text3 = $":02000004{num:X4}";
                        text3 += $"{computeChecksum(text3):X2}";
                        streamWriter.WriteLine(text3);
                    }
                }while (num4 < num3);
            }
            if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash != 0 && PICkitFunctions.FamilyIsPIC32())
            {
                streamWriter.WriteLine(":020000041FC01B");
                num4 = num3;
                num3 = PICkitFunctions.DeviceBuffers.ProgramMemory.Length;
                num  = 8128;
                num2 = 0;
                if (progMem)
                {
                    do
                    {
                        string text4 = $":10{num2:X4}00";
                        for (int k = 0; k < num5; k++)
                        {
                            string text5 = $"{PICkitFunctions.DeviceBuffers.ProgramMemory[num4 + k]:X8}";
                            for (int l = 0; l < progMemHexBytes; l++)
                            {
                                text4 += text5.Substring(6 - 2 * l, 2);
                            }
                        }
                        text4 += $"{computeChecksum(text4):X2}";
                        streamWriter.WriteLine(text4);
                        num2 += 16;
                        num4 += num5;
                        if (num2 > 65535 && num4 < PICkitFunctions.DeviceBuffers.ProgramMemory.Length)
                        {
                            num  += num2 >> 16;
                            num2 &= 0xFFFF;
                            string text6 = $":02000004{num:X4}";
                            text6 += $"{computeChecksum(text6):X2}";
                            streamWriter.WriteLine(text6);
                        }
                    }while (num4 < num3);
                }
            }
            if (eeMem)
            {
                int eEMem = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem;
                num4 = 0;
                if (eEMem > 0)
                {
                    uint eEAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr;
                    if (((int)eEAddr & -65536) != 0)
                    {
                        string text7 = $":02000004{eEAddr >> 16:X4}";
                        text7 += $"{computeChecksum(text7):X2}";
                        streamWriter.WriteLine(text7);
                    }
                    num2 = (int)(eEAddr & 0xFFFF);
                    int eEMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes;
                    num5 = 16 / eEMemHexBytes;
                    do
                    {
                        string text8 = $":10{num2:X4}00";
                        for (int m = 0; m < num5; m++)
                        {
                            string text9 = $"{PICkitFunctions.DeviceBuffers.EEPromMemory[num4 + m]:X8}";
                            for (int n = 0; n < eEMemHexBytes; n++)
                            {
                                text8 += text9.Substring(6 - 2 * n, 2);
                            }
                        }
                        text8 += $"{computeChecksum(text8):X2}";
                        streamWriter.WriteLine(text8);
                        num2 += 16;
                        num4 += num5;
                    }while (num4 < PICkitFunctions.DeviceBuffers.EEPromMemory.Length);
                }
            }
            if (progMem)
            {
                int num6 = progMemHexBytes;
                if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215)
                {
                    num6 = 2;
                }
                int configWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords;
                if (configWords > 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr > PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem * progMemHexBytes)
                {
                    uint configAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr;
                    if (((int)configAddr & -65536) != 0)
                    {
                        string text10 = $":02000004{configAddr >> 16:X4}";
                        text10 += $"{computeChecksum(text10):X2}";
                        streamWriter.WriteLine(text10);
                    }
                    num2 = (int)(configAddr & 0xFFFF);
                    int num7 = 0;
                    for (int num8 = 0; num8 < (configWords * num6 - 1) / 16 + 1; num8++)
                    {
                        int num9 = configWords - num7;
                        if (num9 >= 16 / num6)
                        {
                            num9 = 16 / num6;
                        }
                        string text11 = $":{num9 * num6:X2}{num2:X4}00";
                        num2 += num9 * num6;
                        for (int num10 = 0; num10 < num9; num10++)
                        {
                            uint num11 = PICkitFunctions.DeviceBuffers.ConfigWords[num7 + num10];
                            if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215)
                            {
                                num11  = (uint)((int)num11 | ~PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num7 + num10]);
                                num11 &= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num7 + num10];
                            }
                            string text12 = $"{num11:X8}";
                            for (int num12 = 0; num12 < num6; num12++)
                            {
                                text11 += text12.Substring(8 - (num12 + 1) * 2, 2);
                            }
                        }
                        text11 += $"{computeChecksum(text11):X2}";
                        streamWriter.WriteLine(text11);
                        num7 += num9;
                    }
                }
            }
            if (progMem)
            {
                int userIDWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords;
                num4 = 0;
                if (userIDWords > 0)
                {
                    uint userIDAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr;
                    if (((int)userIDAddr & -65536) != 0)
                    {
                        string text13 = $":02000004{userIDAddr >> 16:X4}";
                        text13 += $"{computeChecksum(text13):X2}";
                        streamWriter.WriteLine(text13);
                    }
                    num2 = (int)(userIDAddr & 0xFFFF);
                    int userIDHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].UserIDHexBytes;
                    num5 = 16 / userIDHexBytes;
                    do
                    {
                        int    num13 = (userIDWords - num4) * userIDHexBytes;
                        string text14;
                        if (num13 < 16)
                        {
                            text14 = $":{num13:X2}{num2:X4}00";
                            num5   = userIDWords - num4;
                        }
                        else
                        {
                            text14 = $":10{num2:X4}00";
                        }
                        for (int num14 = 0; num14 < num5; num14++)
                        {
                            string text15 = $"{PICkitFunctions.DeviceBuffers.UserIDs[num4 + num14]:X8}";
                            for (int num15 = 0; num15 < userIDHexBytes; num15++)
                            {
                                text14 += text15.Substring(6 - 2 * num15, 2);
                            }
                        }
                        text14 += $"{computeChecksum(text14):X2}";
                        streamWriter.WriteLine(text14);
                        num2 += 16;
                        num4 += num5;
                    }while (num4 < PICkitFunctions.DeviceBuffers.UserIDs.Length);
                }
            }
            if (FormPICkit2.TestMemoryEnabled && FormPICkit2.TestMemoryOpen && FormPICkit2.formTestMem.HexImportExportTM())
            {
                int testMemoryWords = FormPICkit2.TestMemoryWords;
                num4 = 0;
                if (testMemoryWords > 0)
                {
                    uint testMemoryStart = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart;
                    if (((int)testMemoryStart & -65536) != 0)
                    {
                        string text16 = $":02000004{testMemoryStart >> 16:X4}";
                        text16 += $"{computeChecksum(text16):X2}";
                        streamWriter.WriteLine(text16);
                    }
                    num2 = (int)(testMemoryStart & 0xFFFF);
                    int progMemHexBytes2 = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
                    num5 = 16 / progMemHexBytes2;
                    do
                    {
                        string text17 = $":10{num2:X4}00";
                        for (int num16 = 0; num16 < num5; num16++)
                        {
                            string text18 = $"{FormTestMemory.TestMemory[num4 + num16]:X8}";
                            for (int num17 = 0; num17 < progMemHexBytes2; num17++)
                            {
                                text17 += text18.Substring(6 - 2 * num17, 2);
                            }
                        }
                        text17 += $"{computeChecksum(text17):X2}";
                        if (num2 != (int)(testMemoryStart & 0xFFFF) || PICkitFunctions.GetActiveFamily() != 3)
                        {
                            streamWriter.WriteLine(text17);
                        }
                        num2 += 16;
                        num4 += num5;
                    }while (num4 < FormPICkit2.TestMemoryWords);
                }
            }
            streamWriter.WriteLine(":00000001FF");
            streamWriter.Close();
            return(true);
        }
Example #29
0
 public static Constants.FileRead ImportHexFile(string filePath, bool progMem, bool eeMem)
 {
     if (filePath.Length > 4 && filePath.Substring(filePath.Length - 4).ToUpper() == ".BIN" && PICkitFunctions.FamilyIsEEPROM())
     {
         return(ImportBINFile(filePath));
     }
     try
     {
         FileInfo fileInfo = new FileInfo(filePath);
         LastWriteTime = fileInfo.LastWriteTime;
         TextReader textReader      = fileInfo.OpenText();
         int        progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes;
         int        eEMemHexBytes   = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes;
         uint       eEAddr          = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr;
         int        num             = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem * progMemHexBytes;
         int        num2            = 0;
         bool       flag            = false;
         bool       flag2           = true;
         bool       flag3           = false;
         int        userIDWords     = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords;
         uint       num3            = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr;
         if (num3 == 0)
         {
             num3 = uint.MaxValue;
         }
         int    userIDHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].UserIDHexBytes;
         int    configWords    = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords;
         bool[] array          = new bool[configWords];
         for (int i = 0; i < configWords; i++)
         {
             PICkitFunctions.DeviceBuffers.ConfigWords[i] = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue;
             if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[i] == 0)
             {
                 array[i] = true;
             }
             else
             {
                 array[i] = false;
             }
         }
         int  num4      = progMemHexBytes;
         uint num5      = 0u;
         uint num6      = 0u;
         uint bootFlash = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash;
         if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215)
         {
             num5 = 486539264u;
             num6 = 532676608u;
             num -= (int)bootFlash * progMemHexBytes;
             num += (int)num5;
             num4 = 2;
         }
         uint num7 = (uint)((int)num6 + (int)bootFlash * progMemHexBytes);
         int  num8 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem - bootFlash);
         for (string text = textReader.ReadLine(); text != null; text = textReader.ReadLine())
         {
             if (text[0] == ':' && text.Length >= 11)
             {
                 int num9  = int.Parse(text.Substring(1, 2), NumberStyles.HexNumber);
                 int num10 = num2 + int.Parse(text.Substring(3, 4), NumberStyles.HexNumber);
                 int num11 = int.Parse(text.Substring(7, 2), NumberStyles.HexNumber);
                 if (num11 == 0)
                 {
                     if (text.Length >= 11 + 2 * num9)
                     {
                         for (int j = 0; j < num9; j++)
                         {
                             int  num12 = num10 + j;
                             int  num13 = (num12 - (int)num5) / progMemHexBytes;
                             int  num14 = num12 % progMemHexBytes;
                             uint num15 = (uint)(-256 | (int)uint.Parse(text.Substring(9 + 2 * j, 2), NumberStyles.HexNumber));
                             for (int k = 0; k < num14; k++)
                             {
                                 num15 <<= 8;
                                 num15  |= 0xFF;
                             }
                             flag2 = true;
                             if (num12 >= num5 && num12 < num)
                             {
                                 if (progMem)
                                 {
                                     PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= num15;
                                 }
                                 flag2 = false;
                             }
                             if (bootFlash != 0 && num12 >= num6 && num12 < num7)
                             {
                                 num13 = (int)(num8 + (num12 - num6) / progMemHexBytes);
                                 if (progMem)
                                 {
                                     PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= num15;
                                 }
                                 flag2 = false;
                             }
                             if (num12 >= eEAddr && eEAddr != 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem > 0)
                             {
                                 int num16 = (int)(num12 - eEAddr) / eEMemHexBytes;
                                 if (num16 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem)
                                 {
                                     flag2 = false;
                                     if (eeMem)
                                     {
                                         if (eEMemHexBytes == progMemHexBytes)
                                         {
                                             PICkitFunctions.DeviceBuffers.EEPromMemory[num16] &= num15;
                                         }
                                         else
                                         {
                                             int num17 = num14 / eEMemHexBytes * eEMemHexBytes;
                                             for (int l = 0; l < num17; l++)
                                             {
                                                 num15 >>= 8;
                                             }
                                             PICkitFunctions.DeviceBuffers.EEPromMemory[num16] &= num15;
                                         }
                                     }
                                 }
                             }
                             else if (num12 >= eEAddr && eEAddr != 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem == 0)
                             {
                                 flag2 = false;
                             }
                             if (num12 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr && configWords > 0)
                             {
                                 int num18 = (num12 - (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr) / num4;
                                 if (num4 != progMemHexBytes && num14 > 1)
                                 {
                                     num15 = ((num15 >> 16) & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue);
                                 }
                                 if (num18 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords)
                                 {
                                     flag2        = false;
                                     flag         = true;
                                     array[num18] = true;
                                     if (progMem)
                                     {
                                         PICkitFunctions.DeviceBuffers.ConfigWords[num18] &= num15;
                                         if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 4095)
                                         {
                                             PICkitFunctions.DeviceBuffers.ConfigWords[num18] |= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[5];
                                         }
                                         if (num12 < num)
                                         {
                                             uint num19 = 0u;
                                             num19 = (uint)((PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue != 65535) ? (0xFF0000 | (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num18] & ~PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num18])) : 61440);
                                             PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= (num15 & PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num18]);
                                             PICkitFunctions.DeviceBuffers.ProgramMemory[num13] |= num19;
                                         }
                                     }
                                 }
                             }
                             if (userIDWords > 0 && num12 >= num3)
                             {
                                 int num20 = (int)(num12 - num3) / userIDHexBytes;
                                 if (num20 < userIDWords)
                                 {
                                     flag2 = false;
                                     if (progMem)
                                     {
                                         if (userIDHexBytes == progMemHexBytes)
                                         {
                                             PICkitFunctions.DeviceBuffers.UserIDs[num20] &= num15;
                                         }
                                         else
                                         {
                                             int num21 = num14 / userIDHexBytes * userIDHexBytes;
                                             for (int m = 0; m < num21; m++)
                                             {
                                                 num15 >>= 8;
                                             }
                                             PICkitFunctions.DeviceBuffers.UserIDs[num20] &= num15;
                                         }
                                     }
                                 }
                             }
                             if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreBytes > 0 && num12 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreAddress && num12 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreAddress + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreBytes)
                             {
                                 flag2 = false;
                             }
                             if (FormPICkit2.TestMemoryEnabled && FormPICkit2.TestMemoryOpen && FormPICkit2.formTestMem.HexImportExportTM() && num12 >= PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart && PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart != 0 && FormPICkit2.TestMemoryWords > 0)
                             {
                                 int num22 = (int)(num12 - PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart) / progMemHexBytes;
                                 if (num22 < FormPICkit2.TestMemoryWords)
                                 {
                                     flag2 = false;
                                     FormTestMemory.TestMemory[num22] &= num15;
                                 }
                             }
                         }
                     }
                     if (flag2)
                     {
                         flag3 = true;
                     }
                 }
                 if (num11 == 2 || num11 == 4)
                 {
                     if (text.Length >= 11 + 2 * num9)
                     {
                         num2 = int.Parse(text.Substring(9, 4), NumberStyles.HexNumber);
                     }
                     num2 = ((num11 != 2) ? (num2 << 16) : (num2 << 4));
                 }
                 if (num11 == 1 || fileInfo.Extension.ToUpper() == ".NUM")
                 {
                     break;
                 }
             }
         }
         textReader.Close();
         if (configWords > 0)
         {
             if (!flag)
             {
                 return(Constants.FileRead.noconfig);
             }
             for (int n = 0; n < configWords; n++)
             {
                 if (!array[n])
                 {
                     if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 16777215 && configWords > 7)
                     {
                         PICkitFunctions.DeviceBuffers.ConfigWords[7] &= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[7];
                     }
                     return(Constants.FileRead.partialcfg);
                 }
             }
         }
         if (flag3)
         {
             return(Constants.FileRead.largemem);
         }
         return(Constants.FileRead.success);
     }
     catch
     {
         return(Constants.FileRead.failed);
     }
 }
Example #30
0
        private void Form1_Load(object sender, EventArgs e)
        {
            this.InitializeComponent();
            float num = this.loadINI();

            this.initializeGUI();
            if (this.loadDeviceFile())
            {
                if (this.toolStripMenuItemManualSelect.Checked)
                {
                    this.ManualAutoSelectToggle(false);
                }
                this.buildDeviceMenu();
                if (!this.allowDataEdits)
                {
                    this.dataGridProgramMemory.ReadOnly = true;
                    this.dataGridViewEEPROM.ReadOnly    = true;
                }
                PICkitFunctions.ResetBuffers();
                this.testConnected = this.checkForTest();
                if (this.testConnected)
                {
                    this.testConnected = this.testMenuBuild();
                }
                this.uartWindow.VddCallback = new DelegateVddCallback(this.SetVddState);
                if (!this.detectPICkit2(true, true))
                {
                    if (this.bootLoad)
                    {
                        return;
                    }
                    if (this.oldFirmware)
                    {
                        FormPICusb.TestMemoryOpen = false;
                        this.timerDLFW.Enabled    = true;
                        return;
                    }
                    Thread.Sleep(3000);
                    if (!this.detectPICkit2(true, true))
                    {
                        return;
                    }
                }
                this.partialEnableGUIControls();
                PICkitFunctions.ExitUARTMode();
                PICkitFunctions.VddOff();
                PICkitFunctions.SetVDDVoltage(3.3f, 0.85f);
                if (this.autoDetectToolStripMenuItem.Checked)
                {
                    this.lookForPoweredTarget(false);
                }
                if (this.searchOnStartup && PICkitFunctions.DetectDevice(16777215, true, this.chkBoxVddOn.Checked))
                {
                    this.setGUIVoltageLimits(true);
                    PICkitFunctions.SetVDDVoltage((float)this.numUpDnVDD.Value, 0.85f);
                    this.displayStatusWindow.Text = this.displayStatusWindow.Text + "\nPIC Device Found.";
                    this.fullEnableGUIControls();
                }
                else
                {
                    for (int i = 0; i < PICkitFunctions.DevFile.Info.NumberFamilies; i++)
                    {
                        if (PICkitFunctions.DevFile.Families[i].FamilyName == this.lastFamily)
                        {
                            PICkitFunctions.SetActiveFamily(i);
                            if (!PICkitFunctions.DevFile.Families[i].PartDetect)
                            {
                                this.buildDeviceSelectDropDown(i);
                                this.comboBoxSelectPart.Visible       = true;
                                this.comboBoxSelectPart.SelectedIndex = 0;
                                this.displayDevice.Visible            = true;
                            }
                        }
                    }
                    for (int j = 1; j < PICkitFunctions.DevFile.Info.NumberParts; j++)
                    {
                        if ((int)PICkitFunctions.DevFile.PartsList[j].Family == PICkitFunctions.GetActiveFamily())
                        {
                            PICkitFunctions.DevFile.PartsList[0].VddMax = PICkitFunctions.DevFile.PartsList[j].VddMax;
                            PICkitFunctions.DevFile.PartsList[0].VddMin = PICkitFunctions.DevFile.PartsList[j].VddMin;
                            break;
                        }
                    }
                    this.setGUIVoltageLimits(true);
                }
                if (num != 0f && PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].FamilyName == this.lastFamily && !FormPICusb.selfPoweredTarget)
                {
                    if (num > (float)this.numUpDnVDD.Maximum)
                    {
                        num = (float)this.numUpDnVDD.Maximum;
                    }
                    if (num < (float)this.numUpDnVDD.Minimum)
                    {
                        num = (float)this.numUpDnVDD.Minimum;
                    }
                    this.numUpDnVDD.Value = (decimal)num;
                    PICkitFunctions.SetVDDVoltage((float)this.numUpDnVDD.Value, 0.85f);
                }
                this.checkForPowerErrors();
                if (FormPICusb.TestMemoryEnabled)
                {
                    this.toolStripMenuItemTestMemory.Visible = true;
                    if (FormPICusb.TestMemoryOpen)
                    {
                        this.openTestMemory();
                    }
                }
                if (!PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].PartDetect)
                {
                    this.disableGUIControls();
                }
                this.updateGUI(true);
            }
        }