From 0fb23abb1870daafbb41e49c8e8aa71b0f149c9d Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Wed, 10 Sep 2025 16:54:28 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D0=BA=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B1=D1=83=D1=82=D0=BB=D0=BE=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- botterm/.vs/botterm/v16/.suo | Bin 0 -> 63488 bytes botterm/botterm.sln | 25 + botterm/botterm/App.config | 6 + botterm/botterm/BootloaderCommands.cs | 25 + botterm/botterm/CanInterface.cs | 238 ++++++++ botterm/botterm/LowLevelBoot.cs | 121 +++++ botterm/botterm/Program.cs | 245 +++++++++ botterm/botterm/Properties/AssemblyInfo.cs | 36 ++ .../botterm/Properties/Resources.Designer.cs | 70 +++ botterm/botterm/Properties/Resources.resx | 117 ++++ .../botterm/Properties/Settings.Designer.cs | 29 + botterm/botterm/Properties/Settings.settings | 7 + botterm/botterm/bin/Debug/botterm.exe | Bin 0 -> 17920 bytes botterm/botterm/bin/Debug/botterm.exe.config | 6 + botterm/botterm/bin/Debug/botterm.pdb | Bin 0 -> 52736 bytes botterm/botterm/bin/Debug/slcan.dll | Bin 0 -> 240640 bytes botterm/botterm/bin/Debug/slcan.h | 510 ++++++++++++++++++ botterm/botterm/bin/Debug/slcan.lib | Bin 0 -> 12884 bytes botterm/botterm/botterm.csproj | 80 +++ ...ework,Version=v4.7.2.AssemblyAttributes.cs | 4 + .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 277 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7163 bytes .../botterm.Properties.Resources.resources | Bin 0 -> 180 bytes .../botterm.csproj.AssemblyReference.cache | Bin 0 -> 11 bytes .../botterm.csproj.CoreCompileInputs.cache | 1 + .../Debug/botterm.csproj.FileListAbsolute.txt | 9 + .../botterm.csproj.GenerateResource.cache | Bin 0 -> 954 bytes botterm/botterm/obj/Debug/botterm.exe | Bin 0 -> 17920 bytes botterm/botterm/obj/Debug/botterm.pdb | Bin 0 -> 52736 bytes firm.bin | 1 + 30 files changed, 1530 insertions(+) create mode 100644 botterm/.vs/botterm/v16/.suo create mode 100644 botterm/botterm.sln create mode 100644 botterm/botterm/App.config create mode 100644 botterm/botterm/BootloaderCommands.cs create mode 100644 botterm/botterm/CanInterface.cs create mode 100644 botterm/botterm/LowLevelBoot.cs create mode 100644 botterm/botterm/Program.cs create mode 100644 botterm/botterm/Properties/AssemblyInfo.cs create mode 100644 botterm/botterm/Properties/Resources.Designer.cs create mode 100644 botterm/botterm/Properties/Resources.resx create mode 100644 botterm/botterm/Properties/Settings.Designer.cs create mode 100644 botterm/botterm/Properties/Settings.settings create mode 100644 botterm/botterm/bin/Debug/botterm.exe create mode 100644 botterm/botterm/bin/Debug/botterm.exe.config create mode 100644 botterm/botterm/bin/Debug/botterm.pdb create mode 100644 botterm/botterm/bin/Debug/slcan.dll create mode 100644 botterm/botterm/bin/Debug/slcan.h create mode 100644 botterm/botterm/bin/Debug/slcan.lib create mode 100644 botterm/botterm/botterm.csproj create mode 100644 botterm/botterm/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs create mode 100644 botterm/botterm/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 botterm/botterm/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 botterm/botterm/obj/Debug/botterm.Properties.Resources.resources create mode 100644 botterm/botterm/obj/Debug/botterm.csproj.AssemblyReference.cache create mode 100644 botterm/botterm/obj/Debug/botterm.csproj.CoreCompileInputs.cache create mode 100644 botterm/botterm/obj/Debug/botterm.csproj.FileListAbsolute.txt create mode 100644 botterm/botterm/obj/Debug/botterm.csproj.GenerateResource.cache create mode 100644 botterm/botterm/obj/Debug/botterm.exe create mode 100644 botterm/botterm/obj/Debug/botterm.pdb create mode 100644 firm.bin diff --git a/botterm/.vs/botterm/v16/.suo b/botterm/.vs/botterm/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..f5ecd227e48b0ccac1543e36d068e8a3a2b98dd0 GIT binary patch literal 63488 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 + + + + + \ No newline at end of file diff --git a/botterm/botterm/BootloaderCommands.cs b/botterm/botterm/BootloaderCommands.cs new file mode 100644 index 0000000..c32c9d1 --- /dev/null +++ b/botterm/botterm/BootloaderCommands.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BootloaderGUI +{ + public static class BootloaderCommands + { + // Bootloader settings + public const byte ERASE = 0x01; + public const byte RECEIVE = 0x02; + public const byte WRITE = 0x03; + public const byte VERIFY = 0x04; + public const byte JUMP = 0x05; + public const byte RESET = 0x06; + public const byte GO_TO_BOOT = 0x07; + + public const int PAGE_SIZE = 2048; + public const int CAN_ID_BOOTLOADER = 0x123; + // Если нужно, можно добавить дополнительные команды + // public const byte CUSTOM = 0x08; + } +} diff --git a/botterm/botterm/CanInterface.cs b/botterm/botterm/CanInterface.cs new file mode 100644 index 0000000..3e66893 --- /dev/null +++ b/botterm/botterm/CanInterface.cs @@ -0,0 +1,238 @@ +using System; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace BootloaderGUI +{ + public class CanInterface + { + private const string DLL_NAME = "slcan.dll"; + public IntPtr hDevice { get; private set; } = IntPtr.Zero; + private bool slcanLoaded = false; + + + public const ushort SLCAN_BR_CIA_1000K = 0x8000; + public const ushort SLCAN_BR_CIA_800K = 0x8001; + public const ushort SLCAN_BR_CIA_500K = 0x8002; + public const ushort SLCAN_BR_CIA_250K = 0x8003; + public const ushort SLCAN_BR_CIA_125K = 0x8004; + + public const uint SLCAN_MODE_CONFIG = 0x00; + public const uint SLCAN_MODE_NORMAL = 0x01; + public const uint SLCAN_MODE_LISTENONLY = 0x02; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + private struct SLCAN_MESSAGE + { + public byte Info; + public uint ID; + public byte DataCount; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] + public byte[] Data; + } + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_Load(IntPtr deviceCallback, IntPtr listCallback); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_Free([MarshalAs(UnmanagedType.Bool)] bool bDoCallBack); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern uint SlCan_GetDeviceCount(); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern IntPtr SlCan_GetDevice(uint dwIndex); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_DeviceOpen(IntPtr hDevice); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_DeviceClose(IntPtr hDevice); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_DeviceWriteMessages(IntPtr hDevice, [In] SLCAN_MESSAGE[] pMsg, uint dwCount, out byte pbStatus); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + public static extern bool SlCan_DeviceSetMode(IntPtr hDevice, uint mode); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_DeviceEnaRec(IntPtr hDevice, byte bValue); + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + private struct SLCAN_STATE + { + public byte BusMode; + public byte Dummy1; + public byte ErrCountRX; + public byte ErrCountTX; + } + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + private static extern bool SlCan_DeviceGetState(IntPtr hDevice, out SLCAN_STATE state); + + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct SLCAN_BITRATE + { + public ushort BRP; + public byte TSEG1; + public byte TSEG2; + public byte SJW; + public byte SAM; + } + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + public static extern bool SlCan_DeviceSetBitRate(IntPtr hDevice, ref SLCAN_BITRATE bitrate); + + [DllImport(DLL_NAME, CallingConvention = CallingConvention.StdCall)] + public static extern bool SlCan_DeviceGetBitRate(IntPtr hDevice, ref SLCAN_BITRATE bitrate); + + + public bool Load() + { + if (slcanLoaded) return true; + slcanLoaded = SlCan_Load(IntPtr.Zero, IntPtr.Zero); + return slcanLoaded; + } + + public void Free() + { + if (slcanLoaded) + { + SlCan_Free(false); + slcanLoaded = false; + } + } + + public bool ConnectFirstDevice(out string statusText) + { + statusText = ""; + + if (!slcanLoaded && !Load()) + { + statusText = "slcan.dll not loaded"; + return false; + } + + uint count = SlCan_GetDeviceCount(); + if (count == 0) + { + MessageBox.Show("No SLCAN devices found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "No devices"; + return false; + } + + IntPtr dev = SlCan_GetDevice(0); + if (dev == IntPtr.Zero) + { + MessageBox.Show("Failed to get device 0", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "GetDevice failed"; + return false; + } + + if (!SlCan_DeviceOpen(dev)) + { + MessageBox.Show("Failed to open device", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "Device open failed"; + return false; + } + + hDevice = dev; + + // Включаем приём сообщений + SlCan_DeviceEnaRec(hDevice, 1); + + // Получаем состояние шины (если у тебя есть функция SlCan_DeviceGetState) + SLCAN_STATE state; + if (!SlCan_DeviceGetState(hDevice, out state)) + { + statusText = "Failed to read bus state"; + } + + // Перевести устройство в конфиг-режим + if (!SlCan_DeviceSetMode(hDevice, SLCAN_MODE_CONFIG)) + { + MessageBox.Show("Failed to set CAN mode", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "Device open failed"; + return false; + } + + SLCAN_BITRATE br = new SLCAN_BITRATE + { + BRP = SLCAN_BR_CIA_250K, + TSEG1 = 0, + TSEG2 = 0, + SJW = 0, + SAM = 0 + }; + + // Установить скорость CAN + if (!SlCan_DeviceSetBitRate(hDevice, ref br)) + { + MessageBox.Show("Failed to set CAN speed", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "Device open failed"; + return false; + } + + // Перевести устройство в нормальный режим + if (!SlCan_DeviceSetMode(hDevice, SLCAN_MODE_NORMAL)) + { + MessageBox.Show("Failed to set CAN mode", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + statusText = "Device open failed"; + return false; + } + + statusText = $"Connected to device 0 (devices: {count})"; + return true; + } + + + public bool SendCmd(byte cmd) + { + if (hDevice == IntPtr.Zero) return false; + SLCAN_MESSAGE msg = new SLCAN_MESSAGE + { + Info = 0, + ID = BootloaderCommands.CAN_ID_BOOTLOADER, + DataCount = 8, + Data = new byte[8] + }; + msg.Data[0] = cmd; + + return SlCan_DeviceWriteMessages(hDevice, new SLCAN_MESSAGE[] { msg }, 1, out _); + } + + public bool SendData(byte[] data) + { + if (hDevice == IntPtr.Zero) return false; + int totalBytes = data.Length; + int step = 8; + + for (int offset = 0; offset < totalBytes; offset += step) + { + int chunkLen = Math.Min(step, totalBytes - offset); + SLCAN_MESSAGE msg = new SLCAN_MESSAGE + { + Info = 0, + ID = BootloaderCommands.CAN_ID_BOOTLOADER, + DataCount = 8, + Data = new byte[8] + }; + Array.Copy(data, offset, msg.Data, 0, chunkLen); + + if (!SlCan_DeviceWriteMessages(hDevice, new SLCAN_MESSAGE[] { msg }, 1, out _)) + return false; + } + return true; + } + + public void Disconnect() + { + if (hDevice != IntPtr.Zero) + { + SlCan_DeviceClose(hDevice); + hDevice = IntPtr.Zero; + } + } + } +} diff --git a/botterm/botterm/LowLevelBoot.cs b/botterm/botterm/LowLevelBoot.cs new file mode 100644 index 0000000..3c0892b --- /dev/null +++ b/botterm/botterm/LowLevelBoot.cs @@ -0,0 +1,121 @@ +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace BootloaderGUI +{ + public class LowLevelBootloaderTab + { + public TabPage Tab { get; private set; } + + private Label lblStatus; + private Button btnSelect, btnErase, btnReceive, btnWrite, btnVerify, btnJump, btnConnect; + private Button btnReset, btnGoBoot; + private NumericUpDown numPage; + private ProgressBar progressBar; + private Action connectAction; + + private byte[] fwData = null; + + // Сюда нужно передавать делегаты или интерфейс для CAN + private Func readFirmware; + private Func sendCmdSync; + private Action sendReceivePage; + + public LowLevelBootloaderTab( + Func readFirmwareDelegate, + Func sendCmdSyncDelegate, + Action sendReceivePageDelegate, + Label statusLabel, + Action connectCANDelegate) + { + readFirmware = readFirmwareDelegate; + sendCmdSync = sendCmdSyncDelegate; + sendReceivePage = sendReceivePageDelegate; + lblStatus = statusLabel; + connectAction = connectCANDelegate; + InitializeUI(); + } + + private void InitializeUI() + { + Tab = new TabPage("Low-Level Bootloader"); + + int left = 10; + int top = 10; + int wBtn = 200; + int hBtn = 30; + int gap = 10; + + lblStatus = new Label() { Top = top, Left = left, Width = 520, Text = "Select firmware file" }; + Tab.Controls.Add(lblStatus); + + top += 30; + btnSelect = new Button() { Top = top, Left = left, Width = wBtn, Text = "Select Firmware" }; + btnConnect = new Button() { Top = top, Left = left + wBtn + gap, Width = wBtn, Text = "Connect CAN" }; + Tab.Controls.AddRange(new Control[] { btnSelect, btnConnect }); + + top += hBtn + gap; + numPage = new NumericUpDown() { Top = top, Left = left, Width = 120, Minimum = 0, Maximum = 0 }; + Tab.Controls.Add(numPage); + + top += numPage.Height + gap; + btnErase = new Button() { Top = top, Left = left, Width = wBtn, Text = "ERASE" }; + btnReceive = new Button() { Top = top, Left = left + wBtn + gap, Width = wBtn, Text = "RECEIVE Page" }; + Tab.Controls.AddRange(new Control[] { btnErase, btnReceive }); + + top += hBtn + gap; + btnWrite = new Button() { Top = top, Left = left, Width = wBtn, Text = "WRITE" }; + btnVerify = new Button() { Top = top, Left = left + wBtn + gap, Width = wBtn, Text = "VERIFY" }; + Tab.Controls.AddRange(new Control[] { btnWrite, btnVerify }); + + top += hBtn + gap; + btnJump = new Button() { Top = top, Left = left, Width = wBtn, Text = "JUMP" }; + btnReset = new Button() { Top = top, Left = left + wBtn + gap, Width = wBtn, Text = "RESET" }; + btnGoBoot = new Button() { Top = top + hBtn + gap, Left = left, Width = wBtn, Text = "GO TO BOOT" }; + Tab.Controls.AddRange(new Control[] { btnJump, btnReset, btnGoBoot }); + + top += 2 * hBtn + 2 * gap; + progressBar = new ProgressBar() { Top = top, Left = left, Width = 520, Height = 22 }; + Tab.Controls.Add(progressBar); + + // события + btnSelect.Click += (s, e) => + { + int pageMax = readFirmware(); + numPage.Maximum = pageMax; + }; + btnConnect.Click += (s, e) => connectAction?.Invoke(); + btnErase.Click += (s, e) => sendCmdSync(BootloaderCommands.ERASE); + btnReceive.Click += (s, e) => sendReceivePage((int)numPage.Value); + btnWrite.Click += (s, e) => sendCmdSync(BootloaderCommands.WRITE); + btnVerify.Click += (s, e) => sendCmdSync(BootloaderCommands.VERIFY); + btnJump.Click += (s, e) => sendCmdSync(BootloaderCommands.JUMP); + btnReset.Click += (s, e) => sendCmdSync(BootloaderCommands.RESET); + btnGoBoot.Click += (s, e) => sendCmdSync(BootloaderCommands.GO_TO_BOOT); + + } + + + // Методы обновления UI из MainForm + public void UpdateStatus(string text) + { + if (Tab.InvokeRequired) + Tab.Invoke(new Action(() => lblStatus.Text = text)); + else + lblStatus.Text = text; + } + + public void UpdateProgress(int percent) + { + if (percent < 0) percent = 0; + if (percent > 100) percent = 100; + if (Tab.InvokeRequired) + Tab.Invoke(new Action(() => progressBar.Value = percent)); + else + progressBar.Value = percent; + } + } +} diff --git a/botterm/botterm/Program.cs b/botterm/botterm/Program.cs new file mode 100644 index 0000000..1323527 --- /dev/null +++ b/botterm/botterm/Program.cs @@ -0,0 +1,245 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace BootloaderGUI +{ + static class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } + + public class MainForm : Form + { + // UI + private LowLevelBootloaderTab llTab; + private Label lblStatus; + private ProgressBar progressBar; + + + // CAN SETTINGS + private CanInterface can; + + + private byte[] fwData = null; + private int totalPages = 0; + + + private TabControl tabControl; + + public MainForm() + { + InitializeUI(); + can = new CanInterface(); + + llTab = new LowLevelBootloaderTab( + readFirmwareDelegate: ReadFirmware, + sendCmdSyncDelegate: SendCmdSync, + sendReceivePageDelegate: SendReceivePage, + statusLabel: lblStatus, + connectCANDelegate: ConnectCan + ); + tabControl.TabPages.Add(llTab.Tab); + } + + + private void InitializeUI() + { + this.Text = "Bootloader Tool"; + this.Width = 520; + this.Height = 420; + this.FormBorderStyle = FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + + // Label статуса сверху + lblStatus = new Label() + { + Top = 10, + Left = 10, + Width = 480, + Height = 20, + Text = "Ready" + }; + this.Controls.Add(lblStatus); + + // создаём TabControl + tabControl = new TabControl() + { + Top = 40, + Left = 10, + Width = 480, + Height = 300 // уменьшаем, чтобы помещался ProgressBar снизу + }; + this.Controls.Add(tabControl); + + // создаём ProgressBar под вкладками + progressBar = new ProgressBar() + { + Top = tabControl.Bottom + 10, // сразу под TabControl + Left = 10, + Width = 480, + Height = 22, + Value = 0 + }; + this.Controls.Add(progressBar); + } + + + + private void MainForm_FormClosing(object sender, FormClosingEventArgs e) + { + try + { + can?.Disconnect(); + can?.Free(); + } + catch { } + } + + + private void ConnectCan() + { + if (can.ConnectFirstDevice(out string status)) + { + lblStatus.Text = status; + } + else + { + MessageBox.Show(status, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + lblStatus.Text = status; + } + } + + private int ReadFirmware() + { + int page_max = 0; + + using (OpenFileDialog dlg = new OpenFileDialog()) + { + dlg.Filter = "Binary Files (*.bin)|*.bin"; + if (dlg.ShowDialog() == DialogResult.OK) + { + fwData = File.ReadAllBytes(dlg.FileName); + int totalPages = (fwData.Length + BootloaderCommands.PAGE_SIZE - 1) / BootloaderCommands.PAGE_SIZE; + page_max = Math.Max(0, totalPages - 1); + progressBar.Value = 0; + lblStatus.Text = $"File loaded. Total pages: {totalPages}"; + } + } + + return page_max; + } + + + private void SendReceivePage(int pageNum) + { + try + { + if (fwData == null) return; + + int start = pageNum * BootloaderCommands.PAGE_SIZE; + byte[] page = new byte[BootloaderCommands.PAGE_SIZE]; + int copyLen = Math.Min(BootloaderCommands.PAGE_SIZE, fwData.Length - start); + if (copyLen > 0) + Array.Copy(fwData, start, page, 0, copyLen); + if (copyLen < BootloaderCommands.PAGE_SIZE) + { + for (int i = copyLen; i < BootloaderCommands.PAGE_SIZE; ++i) + page[i] = 0xFF; + } + + // CRC32 (можно оставить заглушкой, как у тебя) + uint crc = 123; + byte[] crcBE = new byte[4]; + crcBE[0] = (byte)((crc >> 24) & 0xFF); + crcBE[1] = (byte)((crc >> 16) & 0xFF); + crcBE[2] = (byte)((crc >> 8) & 0xFF); + crcBE[3] = (byte)(crc & 0xFF); + + byte[] full = new byte[BootloaderCommands.PAGE_SIZE + 4]; + Array.Copy(page, 0, full, 0, BootloaderCommands.PAGE_SIZE); + Array.Copy(crcBE, 0, full, BootloaderCommands.PAGE_SIZE, 4); + + // Send RECEIVE command + if (!SendCmdSync(BootloaderCommands.RECEIVE)) + { + UpdateStatusOnUI("Failed to send RECEIVE command"); + return; + } + + // Отправляем данные через CanInterface + int totalBytes = full.Length; + int step = 8; + int sentBytes = 0; + + for (int offset = 0; offset < totalBytes; offset += step) + { + int chunkLen = Math.Min(step, totalBytes - offset); + byte[] chunk = new byte[8]; + Array.Copy(full, offset, chunk, 0, chunkLen); + + if (!can.SendData(chunk)) + { + UpdateStatusOnUI($"Failed to send data chunk at offset {offset}"); + return; + } + + sentBytes += chunkLen; + int percent = (int)((sentBytes * 100L) / totalBytes); + UpdateProgressOnUI(percent); + + Thread.Sleep(1); // throttle + } + + UpdateProgressOnUI(100); + UpdateStatusOnUI($"Page {pageNum} sent (RECEIVE)"); + } + catch (Exception ex) + { + UpdateStatusOnUI("Error during RECEIVE: " + ex.Message); + } + } + + private bool SendCmdSync(byte cmd) + { + if (can == null || !can.SendCmd(cmd)) + { + MessageBox.Show("CAN device not connected or send failed", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return false; + } + + UpdateStatusOnUI($"Command 0x{cmd:X2} sent"); + return true; + } + + + private void UpdateStatusOnUI(string text) + { + if (this.InvokeRequired) + this.Invoke(new Action(() => lblStatus.Text = text)); + else + lblStatus.Text = text; + } + + + private void UpdateProgressOnUI(int percent) + { + if (percent < 0) percent = 0; + if (percent > 100) percent = 100; + if (this.InvokeRequired) + this.Invoke(new Action(() => progressBar.Value = percent)); + else + progressBar.Value = percent; + } + + } +} diff --git a/botterm/botterm/Properties/AssemblyInfo.cs b/botterm/botterm/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b813935 --- /dev/null +++ b/botterm/botterm/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("botterm")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("botterm")] +[assembly: AssemblyCopyright("Copyright © 2025")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("248ba4e9-444c-4d5e-b605-c371546f8ad5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/botterm/botterm/Properties/Resources.Designer.cs b/botterm/botterm/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6bb0dd9 --- /dev/null +++ b/botterm/botterm/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace botterm.Properties +{ + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("botterm.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/botterm/botterm/Properties/Resources.resx b/botterm/botterm/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/botterm/botterm/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/botterm/botterm/Properties/Settings.Designer.cs b/botterm/botterm/Properties/Settings.Designer.cs new file mode 100644 index 0000000..0f06631 --- /dev/null +++ b/botterm/botterm/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace botterm.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/botterm/botterm/Properties/Settings.settings b/botterm/botterm/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/botterm/botterm/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/botterm/botterm/bin/Debug/botterm.exe b/botterm/botterm/bin/Debug/botterm.exe new file mode 100644 index 0000000000000000000000000000000000000000..cbcbe8d1279f1efc2e854ad2db13b6d0bb12dd32 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/botterm/botterm/bin/Debug/botterm.exe.config b/botterm/botterm/bin/Debug/botterm.exe.config new file mode 100644 index 0000000..56efbc7 --- /dev/null +++ b/botterm/botterm/bin/Debug/botterm.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/botterm/botterm/bin/Debug/botterm.pdb b/botterm/botterm/bin/Debug/botterm.pdb new file mode 100644 index 0000000000000000000000000000000000000000..941cf8afa93eccfa49007e40f7f8d81328ac5fea GIT binary patch literal 52736 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 + +#define STDCALL __stdcall +#ifdef SLCAN_EXPORT +#define SLCANAPI __declspec(dllexport) +#else +#define SLCANAPI __declspec(dllimport) +#endif + +#define SLCAN_PROPERTY_INDEX_LINKNAME 0 +#define SLCAN_PROPERTY_INDEX_INSTANCEID 1 + +#define SLCAN_PROPERTY_INDEX_DEVICEDESC 2 +#define SLCAN_PROPERTY_INDEX_FRIENDLYNAME 3 +#define SLCAN_PROPERTY_INDEX_PHOBJECTNAME 4 +#define SLCAN_PROPERTY_INDEX_MFG 5 +#define SLCAN_PROPERTY_INDEX_LOCATIONINFO 6 +#define SLCAN_PROPERTY_INDEX_ENUMERATOR 7 +#define SLCAN_PROPERTY_INDEX_CLASS 8 +#define SLCAN_PROPERTY_INDEX_CLASSGUID 9 +#define SLCAN_PROPERTY_INDEX_SERVICE 10 +#define SLCAN_PROPERTY_INDEX_DRIVER 11 +#define SLCAN_PROPERTY_INDEX_PORTNAME 12 +#define SLCAN_PROPERTY_INDEX_PRODUCT 13L +#define SLCAN_PROPERTY_INDEX_MANUFACTURER 14L +#define SLCAN_PROPERTY_INDEX_CONFIGURATION 15L +#define SLCAN_PROPERTY_INDEX_INTERFACE 16L +#define SLCAN_PROPERTY_INDEX_SERIAL 17L +#define SLCAN_PROPERTY_INDEX_ALIAS 18L +#define SLCAN_PROPERTY_INDEX_CHANNELLINK 19L +#define SLCAN_PROPERTY_INDEX_SERIALID 20L + + +#define SLCAN_MODE_CONFIG 0x00 +#define SLCAN_MODE_NORMAL 0x01 +#define SLCAN_MODE_LISTENONLY 0x02 +#define SLCAN_MODE_LOOPBACK 0x03 +#define SLCAN_MODE_SLEEP 0x04 + +#define SLCAN_BR_CIA_1000K 0x8000 +#define SLCAN_BR_CIA_800K 0x8001 +#define SLCAN_BR_CIA_500K 0x8002 +#define SLCAN_BR_CIA_250K 0x8003 +#define SLCAN_BR_CIA_125K 0x8004 +#define SLCAN_BR_CIA_50K 0x8005 +#define SLCAN_BR_CIA_20K 0x8006 +#define SLCAN_BR_CIA_10K 0x8007 +#define SLCAN_BR_400K 0x8008 +#define SLCAN_BR_200K 0x8009 +#define SLCAN_BR_100K 0x800A +#define SLCAN_BR_83333 0x800B +#define SLCAN_BR_33333 0x800C +#define SLCAN_BR_25K 0x800D +#define SLCAN_BR_5K 0x800E +#define SLCAN_BR_30K 0x800F +#define SLCAN_BR_300K 0x8010 +#define SLCAN_BR_LASTINDEX SLCAN_BR_300K + + + + + +#define SLCAN_CAP_MODE_NORMAL 0x01 +#define SLCAN_CAP_MODE_LISTEN_ONLY 0x02 +#define SLCAN_CAP_MODE_LOOP_BACK 0x04 +#define SLCAN_CAP_MODE_SLEEP 0x08 + +#define SLCAN_CAP_TXMODE_ONE_SHOT 0x01 +#define SLCAN_CAP_TXMODE_TIMESTAMP 0x02 + + +#define SLCAN_CAP_CONTR_EXTERNAL 0x00 +#define SLCAN_CAP_CONTR_MCP2515 0x01 +#define SLCAN_CAP_CONTR_SJA1000 0x02 + +#define SLCAN_CAP_CONTR_INTERNAL 0x80 +#define SLCAN_CAP_CONTR_LPC 0x81 +#define SLCAN_CAP_CONTR_STM32 0x82 +#define SLCAN_CAP_CONTR_STM8 0x83 +#define SLCAN_CAP_CONTR_PIC 0x84 +#define SLCAN_CAP_CONTR_PIC_ECAN 0x85 + +#define SLCAN_CAP_PHYS_HS 0x01 +#define SLCAN_CAP_PHYS_LS 0x02 +#define SLCAN_CAP_PHYS_SW 0x04 +#define SLCAN_CAP_PHYS_J1708 0x08 +#define SLCAN_CAP_PHYS_LIN 0x10 +#define SLCAN_CAP_PHYS_KLINE 0x20 + +#define SLCAN_CAP_PHYS_LOAD 0x01 + +#define SLCAN_CAP_BITRATE_INDEX 0x01 +#define SLCAN_CAP_BITRATE_CUSTOM 0x02 +#define SLCAN_CAP_BITRATE_AUTOMATIC 0x04 + + +#define SLCAN_EVT_LEVEL_RX_MSG 0 +#define SLCAN_EVT_LEVEL_TIME_STAMP 1 +#define SLCAN_EVT_LEVEL_TX_MSG 2 +#define SLCAN_EVT_LEVEL_BUS_STATE 3 +#define SLCAN_EVT_LEVEL_COUNTS 4 +#define SLCAN_EVT_LEVEL_ERRORS 5 + +#define SLCAN_EVT_TYPE_RX 0x0 +#define SLCAN_EVT_TYPE_START_TX 0x1 +#define SLCAN_EVT_TYPE_END_TX 0x2 +#define SLCAN_EVT_TYPE_ABORT_TX 0x3 +#define SLCAN_EVT_TYPE_BUS_STATE 0x4 +#define SLCAN_EVT_TYPE_ERROR_COUNTS 0x5 +#define SLCAN_EVT_TYPE_BUS_ERROR 0x6 +#define SLCAN_EVT_TYPE_ARBITRATION_ERROR 0x7 +#define SLCAN_EVT_STAMP_INC 0xF + +#define SLCAN_BUS_STATE_ERROR_ACTIVE 0x00 +#define SLCAN_BUS_STATE_ERROR_ACTIVE_WARN 0x01 +#define SLCAN_BUS_STATE_ERROR_PASSIVE 0x02 +#define SLCAN_BUS_STATE_BUSOFF 0x03 + +#define SLCAN_MES_INFO_EXT 0x01 +#define SLCAN_MES_INFO_RTR 0x02 +#define SLCAN_MES_INFO_ONESHOT 0x04 + + + +#define SLCAN_DEVOP_CREATE 0x00000000 +#define SLCAN_DEVOP_CREATEHANDLE 0x00000001 +#define SLCAN_DEVOP_OPEN 0x00000002 +#define SLCAN_DEVOP_CLOSE 0x00000003 +#define SLCAN_DEVOP_DESTROYHANDLE 0x00000004 +#define SLCAN_DEVOP_DESTROY 0x00000005 + + +#define SLCAN_INVALID_HANDLE_ERROR 0xE0001001 +#define SLCAN_DEVICE_INVALID_HANDLE_ERROR 0xE0001120 +#define SLCAN_HANDLE_INIT_ERROR 0xE0001017 +#define SLCAN_DEVICE_NOTOPEN_ERROR 0xE0001121 + +#define SLCAN_EVT_ERR_TYPE_BIT 0x00 +#define SLCAN_EVT_ERR_TYPE_FORM 0x01 +#define SLCAN_EVT_ERR_TYPE_STUFF 0x02 +#define SLCAN_EVT_ERR_TYPE_OTHER 0x03 + +#define SLCAN_EVT_ERR_DIR_TX 0x00 +#define SLCAN_EVT_ERR_DIR_RX 0x01 + +#define SLCAN_EVT_ERR_FRAME_SOF 0x03 +#define SLCAN_EVT_ERR_FRAME_ID28_ID21 0x02 +#define SLCAN_EVT_ERR_FRAME_ID20_ID18 0x06 +#define SLCAN_EVT_ERR_FRAME_SRTR 0x04 +#define SLCAN_EVT_ERR_FRAME_IDE 0x05 +#define SLCAN_EVT_ERR_FRAME_ID17_ID13 0x07 +#define SLCAN_EVT_ERR_FRAME_ID12_ID5 0x0F +#define SLCAN_EVT_ERR_FRAME_ID4_ID0 0x0E +#define SLCAN_EVT_ERR_FRAME_RTR 0x0C +#define SLCAN_EVT_ERR_FRAME_RSRV0 0x0D +#define SLCAN_EVT_ERR_FRAME_RSRV1 0x09 +#define SLCAN_EVT_ERR_FRAME_DLC 0x0B +#define SLCAN_EVT_ERR_FRAME_DATA 0x0A +#define SLCAN_EVT_ERR_FRAME_CRC_SEQ 0x08 +#define SLCAN_EVT_ERR_FRAME_CRC_DEL 0x18 +#define SLCAN_EVT_ERR_FRAME_ACK_SLOT 0x19 +#define SLCAN_EVT_ERR_FRAME_ACK_DEL 0x1B +#define SLCAN_EVT_ERR_FRAME_EOF 0x1A +#define SLCAN_EVT_ERR_FRAME_INTER 0x12 +#define SLCAN_EVT_ERR_FRAME_AER_FLAG 0x11 +#define SLCAN_EVT_ERR_FRAME_PER_FLAG 0x16 +#define SLCAN_EVT_ERR_FRAME_TDB 0x13 +#define SLCAN_EVT_ERR_FRAME_ERR_DEL 0x17 +#define SLCAN_EVT_ERR_FRAME_OVER_FLAG 0x1C + +#define SLCAN_TX_STATUS_OK 0x00 +#define SLCAN_TX_STATUS_TIMEOUT 0x01 +#define SLCAN_TX_STATUS_BUSOFF 0x02 +#define SLCAN_TX_STATUS_ABORT 0x03 +#define SLCAN_TX_STATUS_NOT_ENA 0x04 +#define SLCAN_TX_STATUS_ERROR_ONE_SHOT 0x05 +#define SLCAN_TX_STATUS_INVALID_MODE 0x06 +#define SLCAN_TX_STATUS_UNKNOWN 0x0F + +#define SLCAN_PURGE_TX_ABORT 0x01 +#define SLCAN_PURGE_RX_ABORT 0x02 +#define SLCAN_PURGE_TX_CLEAR 0x04 +#define SLCAN_PURGE_RX_CLEAR 0x08 + +#pragma pack(push,1) + +#ifdef __cplusplus +extern "C"{ +#endif + +typedef PVOID HSLCAN; + +typedef struct _SLCAN_CAPABILITIES{ + + BYTE bModes; + BYTE bTXModes; + BYTE bMaxEventLevel; + BYTE bController; + BYTE bPhysical; + BYTE bPhysicalLoad; + BYTE bBitrates; + BYTE bAdvancedModes; + DWORD dwCanBaseClk; + DWORD dwTimeStampClk; + WORD wMaxBRP; +}SLCAN_CAPABILITIES,*PSLCAN_CAPABILITIES; + +typedef struct _SLCAN_BITRATE { + WORD BRP; + BYTE TSEG1; + BYTE TSEG2; + BYTE SJW; + BYTE SAM; +}SLCAN_BITRATE,*PSLCAN_BITRATE; + + +typedef void (STDCALL* SLCAN_DEVICE_CALLBACK)( + HSLCAN hDevice, + DWORD dwIndex, + DWORD dwOperation, + PVOID pContext, + DWORD dwContextSize +); + +typedef VOID (STDCALL* SLCAN_DEVICELIST_CALLBACK)( + HSLCAN hDevice, + DWORD dwIndex, + PVOID pContext, + DWORD dwContextSize +); + +typedef struct _SLCAN_MESSAGE{ + BYTE Info; + DWORD ID; + BYTE DataCount; + BYTE Data[8]; +}SLCAN_MESSAGE,*PSLCAN_MESSAGE; + +typedef struct _SLCAN_TXMESSAGE{ + LONG dwDelay; + SLCAN_MESSAGE Msg; +}SLCAN_TXMESSAGE,*PSLCAN_TXMESSAGE; + +typedef struct _SLCAN_EVENT{ + BYTE EventType; + DWORD TimeStampLo; + union { + SLCAN_MESSAGE Msg; + DWORD TimeStamp[2]; + DWORD64 TimeStamp64; + struct { + BYTE BusMode; + BYTE Dummy1; + BYTE ErrCountRx; + BYTE ErrCountTx; + BYTE ErrType; + BYTE ErrDir; + BYTE ErrFrame; + BYTE LostArbitration; + }; + }; +}SLCAN_EVENT,*PSLCAN_EVENT; + +typedef struct _SLCAN_STATE{ + BYTE BusMode; + BYTE Dummy1; + BYTE ErrCountRX; + BYTE ErrCountTX; +}SLCAN_STATE,*PSLCAN_STATE; + +typedef union _SLCAN_TIMESTAMP{ + UINT64 Value; + DWORD dwValue[2]; + USHORT wValue[4]; + BYTE bValue[8]; +}SLCAN_TIMESTAMP,*PSLCAN_TIMESTAMP; + + + +SLCANAPI BOOL STDCALL SlCan_Load( + SLCAN_DEVICE_CALLBACK DeviceProc, + SLCAN_DEVICELIST_CALLBACK DeviceListProc +); + +SLCANAPI BOOL STDCALL SlCan_Free( + BOOL bDoCallBack +); + +SLCANAPI BOOL STDCALL SlCan_Update(); + +SLCANAPI HSLCAN STDCALL SlCan_GetDevice( + DWORD dwIndex +); + +SLCANAPI DWORD STDCALL SlCan_GetDeviceCount(); + + +SLCANAPI HANDLE STDCALL SlCan_DeviceGetHandle( + DWORD dwIndex +); + +SLCANAPI DWORD STDCALL SlCan_DeviceGetProperty( + HSLCAN hDevice, + DWORD dwIndex, + PCHAR pBuf, + DWORD dwSize +); + +SLCANAPI DWORD STDCALL SlCan_DeviceGetPropertyW( + HSLCAN hDevice, + DWORD dwIndex, + PWCHAR pBuf, + DWORD dwSize +); + +SLCANAPI HKEY STDCALL SlCan_DeviceGetRegKey( + HSLCAN hDevice, + DWORD dwIndex +); + +SLCANAPI PVOID STDCALL SlCan_DeviceSetContext( + HSLCAN hDevice, + PVOID pBuf, + DWORD dwBufSize +); + +SLCANAPI PVOID STDCALL SlCan_DeviceGetContext( + HSLCAN hDevice +); + +SLCANAPI DWORD STDCALL SlCan_DeviceGetContextSize( + HSLCAN hDevice +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetAlias( + HSLCAN hDevice, + PCHAR pBuf +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetAliasW( + HSLCAN hDevice, + PWCHAR pBuf +); + +SLCANAPI DWORD STDCALL SlCan_DeviceGetAlias( + HSLCAN hDevice, + PCHAR pBuf, + DWORD dwSize +); + +SLCANAPI DWORD STDCALL SlCan_DeviceGetAliasW( + HSLCAN hDevice, + PWCHAR pBuf, + DWORD dwSize +); +SLCANAPI BOOL STDCALL SlCan_DeviceGetCapabilities( + HSLCAN hDevice, + PSLCAN_CAPABILITIES pCapabilities +); + +SLCANAPI BOOL STDCALL SlCan_DeviceOpen( + HSLCAN hDevice +); + +SLCANAPI BOOL STDCALL SlCan_DeviceClose( + HSLCAN hDevice +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetMode( + HSLCAN hDevice, + DWORD dwMode +); +SLCANAPI BOOL STDCALL SlCan_DeviceGetMode( + HSLCAN hDevice, + PDWORD pdwMode +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetState( + HSLCAN hDevice, + PSLCAN_STATE pState +); + + +SLCANAPI BOOL STDCALL SlCan_DeviceSetTXTimeOut( + HSLCAN hDevice, + DWORD dwMillisecond +); +SLCANAPI BOOL STDCALL SlCan_DeviceGetTXTimeOut( + HSLCAN hDevice, + PDWORD pdwMillisecond +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetBitRate( + HSLCAN hDevice, + PSLCAN_BITRATE pBitRate +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetBitRate( + HSLCAN hDevice, + PSLCAN_BITRATE pBitRate +); + + +SLCANAPI BOOL STDCALL SlCan_DeviceEnaRec( + HSLCAN hDevice, + BYTE bValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetLatency( + HSLCAN hDevice, + BYTE bValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetLatency( + HSLCAN hDevice, + PBYTE pbValue +); + +SLCANAPI BOOL STDCALL SlCan_DevicePurge( + HSLCAN hDevice, + BYTE bValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetEventLevel( + HSLCAN hDevice, + BYTE bValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetEventLevel( + HSLCAN hDevice, + PBYTE pbValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetStartTimeStamp( + HSLCAN hDevice, + PSLCAN_TIMESTAMP pValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetStartTimeStamp( + HSLCAN hDevice, + PSLCAN_TIMESTAMP pValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetTimeStamp( + HSLCAN hDevice, + PSLCAN_TIMESTAMP pValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetTimeStampPeriod( + HSLCAN hDevice, + LONG lValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetTimeStampPeriod( + HSLCAN hDevice, + PLONG plValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceSetExMode( + HSLCAN hDevice, + BYTE bValue +); + +SLCANAPI BOOL STDCALL SlCan_DeviceGetExMode( + HSLCAN hDevice, + PBYTE pbValue +); + + +SLCANAPI BOOL STDCALL SlCan_DeviceWriteMessages( + HSLCAN hDevice, + PSLCAN_MESSAGE pMsg, + DWORD dwCount, + PBYTE pbStatus +); + +SLCANAPI BOOL STDCALL SlCan_DeviceWriteMessagesEx( + HSLCAN hDevice, + PSLCAN_TXMESSAGE pMsg, + DWORD dwCount, + PBYTE pbStatus, + PDWORD pdwCount +); + +SLCANAPI BOOL STDCALL SlCan_DeviceReadMessages( + HSLCAN hDevice, + DWORD dwTimeOut, + PSLCAN_MESSAGE pMsg, + DWORD dwCount, + PDWORD pdwCount +); + +SLCANAPI BOOL STDCALL SlCan_DeviceReadEvents( + HSLCAN hDevice, + DWORD dwTimeOut, + PSLCAN_EVENT pEvent, + DWORD dwCount, + PDWORD pdwCount +); + +#ifdef __cplusplus +} +#endif + +#pragma pack(pop) + +#endif //__SLCAN_H diff --git a/botterm/botterm/bin/Debug/slcan.lib b/botterm/botterm/bin/Debug/slcan.lib new file mode 100644 index 0000000000000000000000000000000000000000..04cd3c6ce45ce7b4b7aa1d6c318ed01a5cb15929 GIT binary patch literal 12884 zcmdT~%Wqp%8voJ&p`nzJ7D!)-^G=#a^Rg4rXs}5$O%*4#>{Nv!5>I&7O1gD>B~L$e2?FG ze&>AO&EQ{3)twLi+I=Mv{>?8gr&5c{%X5q2`nlkBac(&%-svWy_lV9d5M9_Ny7&>% zd|yD1@C04C8_>6Sg64nWH1`>iPb+wWhGB})L@%fQDiNcR+W~!tCunq?)8vmtj0W*LJ|(`TlLksh@qeN?rnGI^p$JPFE~1?*t(vucPk#wXX|Z7w8uJf^$C65tt81Zk+i!1|?|U~M)a;t3gszQt*3mX44DGkd zwR~KgHNLKiHffyb5QX`==GuNK@9o%os(88vY-Q2J{T;`q4)b+Q^gUKH%-1z@532VZ z6De7`Jle2!w2&prx#-D zdbg_Onz!j49+vLGU)xX8h|HT#3%JIl-?_G)%e} zCHe%4dCrtK#poQC~kDHzrZpmt#E+Y35zw?4*JH#bv}b8NRR=!H)-LsdCNgP~#?gP|Se z21mGMqq^}Z!%(!x2z%PJCedv;A^7J#?#Z!luE@2DUtoIYZR-k8JD_}U51UR-Of$I1Pgn)CR7*9-;eKI1a zanMIsrh$(DRuw-3Rd_F}WCDSUigbv2(~}%34H3<=)Jwzg3`^_&EP5}JUM;lAwuI%aph_aEFFDTp}YO%#y+5B<{A^VVz`$?($1f?(j&0(}GePf*c`XPV}| z4CGQlHSXs`{{;y-R-dNCmnZP-!QGwxPRdS=)0v(w)G%x8$FwU)y_@BoYUQwUx0aa5 zPbRY0w>EsP@#hrYnIbbl2ntxK2Y;XSOA>?9JC*wfXlLctSL+KPXOH2k8BxRDShSej=lRsviXj#59tS!8??_)~0>}Z24WMOGVTOlX> z74k1Mi8qz3D`Z#e04r)MWKpo#3i+pa37%|)FuQG@`9@|GF*8Ql@nNdzFu)P~L3S!(;3a_9fw2fhQu0o% z0A;Dc-Jf)f{V?!On0Pqke8!u{DAe3D@2ce$Iw0BOe7SOO5tc{Bwq}a#@nH%Z(XCQxdJ|QBJ;Y zUrk7w;+7K~<GiLG`0^33iO$#;o0! zEVwe{ZvivqnA0hYaE}Eu5+JsKofOwKV|Ist{jwd~PfjRES!#4NTM7cHRTvxe6qrKp6K3*M(oGOPC8B<7IeL0Vh72d7SJ3gI=cS_hov5wd-J!j$~^CR+S3R0FD-K8;p z@VpC=<>VyLF??^#d3wQu*^ZlNGG-lJv|wt69gaxzpTTlq$%whdXZ+jFAEoo&N5RB@upj}B@B$x?&fDdjlZSVT2q zVn;IE5=}X)262}hez*^~V+uFOnzw-C*fZyWGaknAGx04TIXn?d3Qi~_nZ!qSUx77$ zYCFb{onw<0H1WwmLCR7aW{mwGO^`JTK0`?Bs*{c4#LU=K7{~v#@pO=;6_Wg1qLBUs DkSig* literal 0 HcmV?d00001 diff --git a/botterm/botterm/botterm.csproj b/botterm/botterm/botterm.csproj new file mode 100644 index 0000000..1f4608f --- /dev/null +++ b/botterm/botterm/botterm.csproj @@ -0,0 +1,80 @@ + + + + + Debug + AnyCPU + {248BA4E9-444C-4D5E-B605-C371546F8AD5} + WinExe + botterm + botterm + v4.7.2 + 512 + true + true + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + BootloaderGUI.Program + + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/botterm/botterm/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/botterm/botterm/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..3871b18 --- /dev/null +++ b/botterm/botterm/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/botterm/botterm/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/botterm/botterm/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000000000000000000000000000000000000..6af2086f186e193566089edbd1be0dbe07ebbbdf GIT binary patch literal 277 zcmeZu3JP{+WMpDsU|>vhwu%WT%1}CBiya*W-_tMq~gNeNG}^H{7WV>o~=E}HeBXuN$q4}$E(=f{Dn1( z;+VM`mDECYsk%~4r>&(FU7*7Vx%vsDpFD0`h_~fxCPjTu(t4dqBTwa)Tlchj0+XLm z+ZGLGy;X`i6}!24s+o&csc{&c5pI>&a@=OqCUq@tQO!Cdu~*GiJ=@Mn>ad28$DLb6 zT7i30m+s|+ZNYkkFf>%*YZ-Wx`iq~8rS(a5PxMIsy8tm&@*HZl5?SoqC zT0_^X%hjjPHYF-Tx;Tv6ed$j z$hTlU*RUoCx%L!hL9m?g$ z`Cw>4OYYW^2}hYi+Pu;|V~ck_Vk;|j$y{1auPrRH)aqI}d7B;g)YLHiQ0}c;@432Y zv>&2jL{V^>!cczCW2(mos2`wV#85v#d-dWhN0A4|20@I*hOjw|0_Z>__5cKYji893 z7)3D#Vw5}t86o2!vS;}=b6PI|k#11QN&(p|8QYu1fI}uv7L65SKG~t5ZMwO6dQKjJ zrgCn*vjlc=CQ>T_rho~|yFDQJvBXUbSeEu`0CU%>y7 z(KtF3KV%w((crFQk;l*;GA!FBGk%MmvN-x27f+Dr=kD$S@Dbz*8hCE0z_bQNr3@hG zeuK<{uEo3SdRwm>rk_QSIhe^a>$n9q$QTlS0+DzPD}7T6Jep{4AcA+dI&jzJO)s@P z)*WbM3WrqIeLp+}I2sCEhh6$G&j7{>1ty@slKDu_0qG=6q%76cKmohn%>#Yx7h$i` z$HwqY0Mb#Yt7LUsG#%z@e`PNL?;uP(T-28UQVSC#D=9n&YW|A80Wzd5!K^i9~FM4=bbU_O)9OX9 zQzD;u96;5`QNss{|G`EMPFiJ5xbyc=@Xoqk)#;aPuz>r?>QWeS-|NlqaRR$v9vO*! z3s1ey7028FOWNc$h+ji_#K$r9@G;&%V<-pZ=qRQker|Hnm?-8Y*LvfasNfaHWCiUd z--DPr%iLHWKPO4JJ9+kwyBaH^SSsCu!*fo4fd1LD;?2e1<~cFoesA)hA3@XjS)MkK zaASG+oTQ-Ze~|bJciSmZ95WqE>qr_zI6Fkis@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/botterm/botterm/obj/Debug/botterm.csproj.AssemblyReference.cache b/botterm/botterm/obj/Debug/botterm.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..f5e894aea93a73e58fa9d4feab241bc197ee1a40 GIT binary patch literal 11 QcmeZu3JP{+WMlvW01Ze1dH?_b literal 0 HcmV?d00001 diff --git a/botterm/botterm/obj/Debug/botterm.csproj.CoreCompileInputs.cache b/botterm/botterm/obj/Debug/botterm.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..1e128e0 --- /dev/null +++ b/botterm/botterm/obj/Debug/botterm.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +bc27571c42487534b7297bfdef2c705a3d0dd908 diff --git a/botterm/botterm/obj/Debug/botterm.csproj.FileListAbsolute.txt b/botterm/botterm/obj/Debug/botterm.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..b684c82 --- /dev/null +++ b/botterm/botterm/obj/Debug/botterm.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.csproj.AssemblyReference.cache +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.Properties.Resources.resources +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.csproj.GenerateResource.cache +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.csproj.CoreCompileInputs.cache +F:\Work\Projects\bootterm\botterm\botterm\bin\Debug\botterm.exe.config +F:\Work\Projects\bootterm\botterm\botterm\bin\Debug\botterm.exe +F:\Work\Projects\bootterm\botterm\botterm\bin\Debug\botterm.pdb +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.exe +F:\Work\Projects\bootterm\botterm\botterm\obj\Debug\botterm.pdb diff --git a/botterm/botterm/obj/Debug/botterm.csproj.GenerateResource.cache b/botterm/botterm/obj/Debug/botterm.csproj.GenerateResource.cache new file mode 100644 index 0000000000000000000000000000000000000000..e8bae4bcbb7ba104c6be611dada62204d2883bfc GIT binary patch literal 954 zcma)4!D`z;5S3!dv1A9FLkXoln9@VRMpy*XQZR)$qzz3VtwZRcw5+rvvUsgEJF61+ zUg!t(_xb~+hyFo3Ba#pjQ8I_oYWB^(eY4N=JdX_=e~ zTwpRY7Dj_Ju&7KqO(#j3jFa(bFsrnyEKEzNoE3UBIH@wN^0%-)H47-G*?6~@6wiw^ zm6Ng96(N&7YvynT8{kSz&2^Clg42(=K@j-fljd98B$?STaV{!bg-nEYfXA+;F!D-cwTF-X+rApnWpAz(<0!~e;YRm5FZ&K4+PI>^KufM znOUxc1>0wenUQc}%@-xXcDOL7p#}7s*gg}w0wl_o7lz$V6W8I@Sx*}j9Nszq_q!Lb zSbZGVGWdc~hmy~NSPui}a|MWK8O46(XF}`=#Gt4g#!8D j)*f6abl4_QTYmk-TSOAEydS^5yqe4 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 literal 0 HcmV?d00001 diff --git a/botterm/botterm/obj/Debug/botterm.pdb b/botterm/botterm/obj/Debug/botterm.pdb new file mode 100644 index 0000000000000000000000000000000000000000..941cf8afa93eccfa49007e40f7f8d81328ac5fea GIT binary patch literal 52736 zcmeI53xHKsz5n+fh7lB$Q9wY{0S5$uVO~5#9cG3R6qKjWNjS`$fze@Rm^q;M>Og>~ zd85+AS7~XtZfN+I(##Z#%+ktIv)i?~Y*jT)6RYhFdpguMLx-UkmVpBLaVf*=HzK$~=d ztFn;(`(e<)``OfD+fh3Y3xYS^PrHwr1}1tNPB;EXt?5mD-(EcD!h54m;yx!E;OWqV`lH-Gb{C13u^_clMV^D|T8YkqO+_ouz*%`A-vmIk`2 z{g*UtzAyRXhvx41`B$%ccEzx!AAWQD-K%yME`EOe?bE*Y*D;SCShY@<#%rLf+JEzr z+rC};YW8n`_Nyf)y|n&+n=k+3JFlJb>?eM5%WvW)0AX za*1%77%~lZOZk0x6isCM&j(rq>GuCXH{X62zP!B;Ec8 zYzUG8*#U88}nYX8OAH!iqh4t);$7XN6@5S>TytdC_ zOa5B>g&mDuQ`&ScU9EwxYX2>lzqe@gn}1pNrx(xu(!9opAFrG|C(It6yZq>^_2(5e z+*;Yyo`*zJ{6NI&uVD8uyS@&!v*oGM04fhhK58U-n5L1)<}xR zcvGS_-ds61-rTUFsVd%_R~~P!T~Z%!%ByM)f||*d7b&mCJ?2FUpI1{Vuj)u%ohsJ6 zcp_0-zod1kI#sAG{u(fn>gCuGwr=3)vB%`Rvm9DYgo1{R$tw`Z$ec!%U>1Y z-+TEDi!Z1wk1t-aq%!aHY4aJ(DFI!xHN(tp&}gUzdV+^bS8%#)7V&t4hq%txD1__F^$che*T08$avir1qZA#?G=F#f zqq9tDw=Wtv>i7BKR;k~)$fXb3E%qSxP)K}t541_uQX{xj-XnIDJg}5&wV+x}adDf> z{8g*_v`g-Mrbub8aA_46P5XP|eA=;B9lt?oWg*H}anZE0B%k)atE*psN@-=;N~^eNTJ;W} z_S7@CPE}g<7Nu2OG%Z10=G5Wxf)h-~>5CjW-(z(>Ita3^J=p3am=&w7C#-+a&2-e~ zTv{K0aFCn5VBV_cM0^=Gk-E;CaYhgfjrixTs87@`i|3hXv7vEZylG`E>j&~};hDd* zDITk40yi?+3D27!Yre3VvbMyXRa;-(a8Yw!MMKjvRv;W*%?b*G%*-F1{K}*Ep7YBY z4-V^@@tv=4T|^Y^T25RLWKw78K##s@5;!d1o8WxN)-6owq&s2LAvx?mDV1?_GI5sjQDcOvg6S2e!j9R*!yeIu*SF&rb|4fWp*Wvh#KGC)q z>}J%@N6K12S-c13zx+% z*0uOX!}BC`4gN=6{{7)2JN2U!Uv=FQlfIg?Pe30h{zaEwa#ZAK`b0w_RyP}APB*Hb zsI(J0QvVD4hNomC9}ZW~>mOQO+p#f60|O3YPC3SptaE52)ghP{udkjPuZq{MjH@^b zQoVC1@Er^q;`3=0UP*Wz;V-~^uFJ!>JL5@8AGCW@g1i(bIng-jSaKAnVnySs8X8y4 zjLXKX&RWGaRT&=j{WjsH(_DTOtyNsjin=<20=0ou5#=*&P`Zi*t}Tnk!e~4bLZj!^ zSl22pUY~HRMqdf^@*o8}j&$3cUQ`E6pcP*&ezlKuDW0Vi_-4Y^U>wqubb_2#JPkE9 z+{@W^*@ld2crGW+)s9DXV+?P_Q?+zO{e@B_PI;Fv_D z{cXrThV&(5rt+$e{o3%y={=rrWhd-e^HjJbOnxIw{v}-VY`Er~aBUE-?;EZ!3)e5s zD9%_tD`WLN;hIA;)^yKUcW}7=+Hn0V;g#dV4fkYRd1uD@wc%AeB;SwSn_M55Prlw2 zVcH8_9ZVl6TUI@9RehD>J3CHg^l9Dqs%22PQ!JRj#mK$a%U#e|9ZSULnIZCwdNXfG z&$m$CzVM3AryYu(l>zOX>SJZ|a;Ka$apA(chN@UybH35}se95lHrL)5du*7|C-a~n z!`M+6hG)?+rNhZ?ekgX6{c=+a`)3?=d8c(<%*}MXx!Kf4by-S1o`=Ne)B3tlk=@qi z^iI@8WSIKAiGM9**9Kv*o@=?DkQwyBA*_EWGHXA(E;=5R zjgJ8PgCoJCL5`Lu3Da6(z4|pam0SnX#;l))lV>h82+~?=Ff<%G49YiQD$7>Lt|7v} zuPqopg0Dhy6Uj^cY!ayO$)MI~9|MPhQ@}Cci6HF}lmx+*3};&FnX;Tl+4K-=F8(LL z1;igthRjdNT=0C*mTwg0ItDrxDuH}iPvBZ*R=jX@s_fFEU6X`bpBNX_Bb~{VJq}_{ zK@Hd!TmlXUmxAarKzB)WX>gRoJn#a-ZP^aRP>zF+M*gAD;lUBCI{PvDC|-J$zU(?A zG;0#PX6!tOQHI zi@>QMHsi`ji{MngY%E0B;y*tX=F9sok#-#tnl*{isvK|V0(U9-(mcUsAYC@N!pI4N zPk=0IgCzfDi>tvL(3f`&ewFu=pzMJ*O3nna%jB6L_MW6&f-6Dt3O0aA@G1}`8FDw(6O`G%!PJ%9mra+^h*(TiULg{+bhF%A`RLrg| z!qoaiIvqf`+(u+d2cHFHKa?Y>KA^g4;E-QBxE|D;^m$PBbOU%2xCtx=m7e|(+=%~d z@FsAv3&$ok|0c1?09#37b0&Qqcq@L|-GtK~2GO61zZ(1k@md$&4oX*F0x3iAW$;e$ z4p9A@>*V*quYf-VvDM_S!LNa@fd2vh9lQ%XhzhH`hk$qE?*)DX8~|$yc?AKZ#w)gsC>7Bj}!hAkntz^0{9c~k0828z6|~hdM3M>Nu6Py4(2c8c82Am827PPu9#OKGcPn!DnX4dIV zO?+7-)2>Ux)Y_&8Vd^t-lC5$6_vG0R{2wq{rWf!_iqaK>FXFEN{|Ev`PH*%ir*^h@ zd`kW{0_<8MH0uh*9}20j$$9yIB0tH06_hR%KGgYT9j_5C`3jd#1KfeX z()rH^|BSy8d=ms*d5_j5)}i@Q(gIpu`zO90Gfh}_2YV?RpGHF^(AiJ|`V>T;S3e8T zS@15TaUdU>4K0P%LbpHdy@rRneMP8o>*8OuZgXwQ@7fu`#bov*oVsK1z&$Wx+n7c&WxePX^ipiAkr_w zW8~&lnT^MN*_V?%$zW_Tvze_!n5vshJ0Ft6_RW|-5Y${S2()v@2*#a5O&+;~FM>k; z`Esgk>Nj#n7~apN_I5YfV6(5xrdy!>uX3o;^(`0uF9)^1zcYsT}e3;Vcs zm=e9wK56m7h55|R_F2Go$LG`T?peTru+NWO8yl2;sBLYz!&Kd)ZOdAgd&AOH+uml3 z((c@DUzh7=THU4P(v$D$iWSjQ)n-kUo_U(Cq?8)~_>D}htzTPPh zdY|5|-nXE0?L(*C{%Jt%@5kY#E-Q_J-f0}wwJ~}3{AXXDsre;@+T7b&iR(Xh)ovxx zlv$E%qBPI=V@0!K^=xxDDV4^WI#A=3czt?>Z^r*NG!*I&DIdRQ&b4lHjpNy5qb^h) zTc$lcU!q`{WT1Hq&>Uv=!ZP}X$s`k*^6>NL{Su0c&Y#pjtCTPkrFxYyd9E;zQ}%oQ z^m214qnz#?yrW&SX5le%+4YXf-Jf|>`D+gJHWHmjbLg+k+h*TSWuYyYPwhU1zvo#? zxNW!4-L+Z&#e~a^f=6W@4IT{Y-k~=*2EXo2^1u<`SdeSY;YqH!BeeHpg`l0g$q8rg zEAM8`9$~I^|Lf=UDa6~hX@6aCB6+DS+`&?hAmEripDK@hF12RRUa5F|I{yrXu_mR<{e2$f>T2eU=<}cfJU>}L8KU(lakij+ zQSXLQkNVd2@JlXJkBh0ptB`nnI$sawp54}CU!Dc|da(T4v=pfPuZQ!;{B63#Z6#QnT#)43w9@S-2Tbj z(vHlL$gJ9(%<=mtGuKVH(R!YM%;me2$qm^4wCARFWU|uA`o!*JvaslkOn+}~*B@cv z*Cpzcnn&aq?|5c4G_^-#*BmWtv9@WCW96uPH$rwD5xS=x0Z%~fGi`upb9TLU6jQJC zI|Tn>AY*e<_ZN(7N%bSfi6o@m=_G4b^(V6zj*TZjh9A32+Gp5y-@P|0)!vk$H#;lZ z)7CR=J=6B4B-vU`fCr5M(g44ls!P%hB3eN$r z2j_yD!38wYc98Wz@;UH4@GYA;q5$C7{zF#mTSuQ=PvOybxLr&4a|Z81m-;%D6rw zLUXvD<@^g$c5yLnW7jNUYR#jrSO>}JJ_(yOX8~jnwbXBj3(o~Fz^}El($SXUOQK^+ z8YBTDr?=S&(_~94;<72Lx65t#?OG!=>kh@MUu@L{&dYBkKgnMXGXI$Hq0Y~EXwC%` zyKrpK_)i9#NsmpK^w@woFHqzBOTm@IUjkkP0Cu{+MrY7T6o4&zO3gWBhu4s%MvKyOw=nyG{sG>j&`+J3$tZG#y$5t%YuZwn4vw-i7+IPMHYJh7!=Hpe>NrFRwx$R)>00`&YgX z_<2@!W{k;N0m}9Q-TyBwkL$F)ywUp@wT+y{B=1=EXI+NJ@M;gB4X@t^m~Rr8In1+i zPY`6S^}I8A*^6u4!zsT$q}QI0kB{yH?9F=ydwOT!BrI#U?+h?sNpF21F11w?aBpkw z_x#yKU$^b9Zi7kV-I3JoUOXnMqA4zA?#sQ5bb~zeEG>gV*n1&+PWdGj2=|VYt82!h zte=4<$elmuSa);6HKp|W7?Eq?6`xN#$n7&wwQS`hSJlAF8=&83h{jdNSElwEqTxEb zt~!cGx{AgvZnEV+e{Xb7*?O6LZ2j}O4wFxZYr=3{zwpWt8Tp(WT^(ku8IkeHu^H<| zW~}>5kg?%}jH}jI8GgU&Iu!!PoRV?_Db|muztNG-a&wMVk_hxjP%V^S=*l3R$kF~e`Z^G>KwpV$@3P{#GG8&20^WOqUWn~h`a+zlBU-2s2r+J zR8I7KwRDPYw2JpSm5qz$?z^3I%O%h7v~Z=g8zwh}$=AZwQ-X{&mj)ThPZOtny=`3V z^ex-+j(dQtZq&u-yS%o!%D%#}-+k7P5zjf9v}?*SUSt({nVop=Mq`BP<>zKQhPQtY z#eENJ#bK$m8e_G`@5gf0+plMob~xHnzFK>(b!jyo%W3XdqzhanX~nDchw{=I@et=f z4AfdfZKHL>7;q72*W}T4ozBqaq}HLDXYAM+a@S;?^7iZCD)NxbYA`A@j$dO(4R{2& z1eCs)g0!z$FGpqDX9zkgt9!IVQ}XX;EU@Eam>Odz!teKXDTk4-b+zO-fX9HU`%thE z|8d}Q@C1)kStdYf~nt3dP_Tmn)jy}yuD-LC+NGja$s z=UWL2lKlS+xEkC9t^scY*MVOLCFdL9di-0!E5YxB8^9lfSAo9(KL!38{51GS@N?k* zf#QD;ybk|P@OrR24e)s|3%n6zU)Q8N3cLybVDM&eEO-kz9=sJi3A~LWtN{N5|CONf zzXqhN$xnfs!7qY$fjT>RH~4k%|A9KYrS#iCY$W*z$o&a3ggxW=U*Na!KM#Hzd=q>C z)P3uBK;QnluamPjFb*5gd2ZdeTZ^;djf9VKabt*+C3_yl6}Y$&k?;n>id?wvIY&bu zi^NaDuXEXI`Dk9AN9V>TN8*-8^6QAF0-n}q4(%KkrshA{sccB@Vf27Hf^Fd8p!C_# z`3HiJU@9}g$B175Vk2fB;c?LF&(?P&t4e#$-QE)`?oHD7C38D3g{e7B`S*}e+)v3z zm-Mk#^5vKIp9FKjpMyier@&#L%BlYJH2zWGGvEa9my}m^`wjk2fd38N4l4bf;Pd#u z2L2Aj=1hL-2g>(8Q0X25e~CH{2XPuThZMfubhh>gXezYGg!g0jNbNg; z`|F|FiNUpP8#~X0+Q%_2+BPpDJ0z6;*Ge}p;qOoQ%b;}f3YZ7}2^%$$j@*#H)-tFD*A6;(1Px15JeHLv>IR z+5~NewnHyLVjKYFL(`!}&}Gnd&{v_f`^Re_6A}KIM6PSY0THo`PFXkiaciGe=fCu7 zQtLBd*qK=;`1H~HvJb=i;OYmqZtb5}dI2-fV<*)2iN5MQIGOS`{=9Sm+O*og)V-U= z8pF6~`=3br-`l4B{lmx>3)r{)ec4oWZEEvxU#B~aPG_{MQwE@51eA82*MPqDKd9%} zKX1cU=Xc}%H%P<4IgoG$1|qy1+ZF!Y`CrSj{y79H{ACxv-0^?S`FnS_@tWh6?njQV zpTqxj@z?tN91e5gFFSd+I)BXJIwv=Da+J3y?$ZCk`E_5R@YkrH@Msr*z2l2{epl`p z&VQpzcaJO2K$yk9nt4lD;Nl-~<++D2h3h>ap~NCP+XCkw=*o4ulefafKjZlCap5<*^gnQ@_pekA z-D3zRx$y1|7r63W- z>kP^7ZnCf;hNvO^4<~i=aA4 zbKP2KBg8$ZdGB>AxD9#&`W5s7^ak`Ur27-yyW~Jx>rRB0LJ24d>E3h`bO)sGdFWnL zd#bwkd>(og(mO?Zj;m+9gP{>nF;oK0gwBSlp+@L3XajT|bQ`4o1?@d-hn|Fy8H=uW+9yD-Y zDD6JH8aO-{maW>UnY+6WJoOJoM#A#P=i>^i^gW}Nw7k7z-pPrk%?e!FYMm*xX_u03 zRuDb+rG09fzm0P|ah|jgMkBPF04D-Oh<%Lf_-q<+HlMhdSHzrJDk z+@)tz){pbb=b)g~rjmc9EX8Znxbn5(?csU-;O4l!T=DjBb5hZy*7H}`&iuu$tC{Qa z8RvZ&wN?y`9(H{p$;+{69B*W-FK1q{ye%*Ncpe+)co^%w-nDKFgVrzXcpe+)co^rs z-c`>`Q%3ueg->t8ZTf=hmh@9h`j(e6e0m%1(la0X`95LNx1R59m`fX(f2%2fW(V`V zjk7$3k@E=Y={1h`~H#Xk!(I&n<%TY>Z(B6S=y~}FX zB{q%YrENU#yB+ctq>d zMbg`Fm!3NK^qc5^HoZN3;`6uREJv??7S3+q+wCMiz@6537xgSK`$|U#ga7TA;E2Sr%s|gm(WfEm6>P*dywh{W zfyVRtHXru>`}RtC>B{?U=m4|Nq3fmCC;wYH_rn5tsN8*pJkL+G%|TI7#kk_K@eGB= z`Fz`#(=T}5rAvZ)A!nZZu76NiFs-m6e<~xrb-R}{D0m*blxw8L+sbMAHvK6JX5>Y` z{T~#Lt0vKdf(bY%qkL+G&{=PrRFDxi5o;cn%%kJ~X zDqW^p!|Xo)cJ-Av<)o^G3mKjo>td_Q>iC9zVG*yURTNIlpESOhaZhgdWjHeR4XLgx zLosETRxxqh)bSOpefC_2qs%+9O1I}Scs=i0^#X~lC@#t`nmT@}k-De457zhfjN31{ z=lG~TL-ntxsDXEp4QXZ>cQpY!)%NwdzEaOY8%_kHV78Mm2Ev_CD zn>cRLnBsz1(U?j3RrzBkRoBD{@(XGTVw1+56ilcnEuUIg&ayEW^FZF8y*;(J-Jv*z zI}>RoUvZ@n=OuP=ikk(wZqX`UaSI^NC%<>PUIg`X0d3<}5YF<+xX7?=`h?oZ%WE6A zmN=aik!u@wFJXgC%&u{q%SoMsYs;r|Mk_nu(;1-c9mMGjj2l*VDT~gh4C;VS?}_=k zM{Pkm(mO!D?rq~LiId&RwT;ue1pa;PwsCqNXO3mtg-`FwT-rgL-fzw6AWrX+9MM6X z-W@r#gE+k_a&!lAdN-saKD`UlQJmiW=qOI_dUO=0cRMaacFLb|t?q~1Cw5)(D+x`wur!w)&+g3lzwf8wimr439puOjeR3x>O z?_?pO>t_{$Zxg!TD>J4Qu`gq^GT8Uu?-{vzAY;#l9*rohJM7(J+UrxW!2GrEn#hb_0bls1?88Q2j zD_b-6ci^JG-qxv1tJ?e=Tc^9AxYiky5$O09@@^z-J7Id(T|(0=Vqv0n^>kzEQKNNn{3UIyIx3R?VmTC3XpTo8PX9w1=g2=uwdFZM1ei209kX zfrdasq2r)jXc#mcIv!H}MnWe*GKbO77$^@K3*|!vknSIgpkheto$(OcwMM_XU(`JZ zXJO479h|e(Hx~4bv7iL{XSq}VS%T7X4oD4j)$jja^2~x8pE~Q&OKYC~&6~qd{oR$x zx{|(k6~FhxzU7k|->F*r>;YN%bfJQ-YX8Un_HbRIc<|g;mp|L<%xmtO^@oK=_Plge z?)=Sl(|T|D?8*nysy;9^&{gf<^O9HIFF!H=2d{6u^QF^<49Hk`bM-HO-1G8f5B%`i zw-c8>^SuMJ_UTe}Rr@c_zHz}78~@%v_Col?O*a%&JvMvmeJ`H(;I(}YTk_Z1FYIVc zYx=;{Kv%W@mdoE;H2TfItozf8XMbs4Gwa`GGr5qt*IdW{-@Q0p3O-g>GwZT zLW@gEC)#k#(pSx(KBo)FsBQx2d>Vow9pXv8MQ?`=6_=jsi^MCsM???Uo zZ|BUcL=WB4?gOoXoD97$)4ucf23qH&-~Vi1M<0&R^!fkv`Tv$zAJXUl)93&FxTgEv zdm){Xkz=|@ImP`9^4}V78<#%+Z&ju9P2Ndo>GS_q8_{)#^pZaRZ}p-xaNbETAEfjD zD)(v7^^nGfo>V}j>!@GfdcFes1N1LBS{^y2zMm)M+a6Ni`|9l18T*goixBDa|8%1+ zbvpmQ<({`5pc@7gzw^+Ak9_0xGuD3Lo)z|JNDxMNkaV+UG3jT