Files

765 lines
28 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.IO;
using Renci.SshNet;
// Based on, see below
// https://www.codeproject.com/Articles/678025/Serial-Comms-in-Csharp-for-Beginners
namespace uartTestGUI
{
public partial class Form1 : Form
{
SshClient ssh_client;
public Form1()
{
InitializeComponent();
// ssh_client = new SshClient(ipAddress.Text, "root", "");
}
public void backgroundTask()
{
// while (true == status_update_en.Checked)
while (true)
{
ssh_connect.Invoke(new delegateRegDump(RegDump),
new object[] { });
Thread.Sleep(1000);
}
}
public delegate void delegateRegDump();
string ssh_ReadReg(string addr)
{
SshCommand cmd;
string str = String.Empty;
string str1 = String.Empty;
if (true == ssh_client.IsConnected)
{
str1 = "devmem " + addr;
Console.WriteLine("ssh_ReadReg(): Command: "+str1);
// Console.WriteLine(str1);
cmd = ssh_client.RunCommand(str1);
str = cmd.Result;
Console.WriteLine("ssh_ReadReg(): Response:"+str);
// Console.WriteLine(str);
return str.Substring(2, 8);
}
return "FFFFFFFF";
}
void ssh_WriteReg(string addr, string val)
{
SshCommand cmd;
string str = String.Empty;
if (true == ssh_client.IsConnected)
{
str = "devmem " + addr + " 32 " + val;
Console.WriteLine("ssh_WriteReg(): Command:"+str);
// Console.WriteLine(str); // Get the command output
cmd = ssh_client.RunCommand(str);// Execute a command
Console.WriteLine("ssh_WriteReg(): Response:"+ cmd.Result);
// Console.WriteLine(cmd.Result); // Get the command output
}
}
private void RegDump()
{
if (true == ssh_client.IsConnected)
{
string str;
reg_0x00.Text = "";
reg_0x04.Text = "";
reg_0x14.Text = "";
reg_0x20.Text = "";
reg_0x28.Text = "";
reg_0x2C.Text = "";
reg_0x30.Text = "";
reg_0x34.Text = "";
reg_0x38.Text = "";
reg_0x3C.Text = "";
reg_0x40.Text = "";
reg_0xD4.Text = "";
reg_0xD8.Text = "";
reg_0xDC.Text = "";
reg_0xE0.Text = "";
reg_0xE4.Text = "";
reg_0xE8.Text = "";
reg_0xEC.Text = "";
reg_0xF0.Text = "";
reg_0x00.Text = ssh_ReadReg("0x80000000");
//
str = ssh_ReadReg("0x80000004");
uint val = (Convert.ToUInt32(str, 16));
reg_0x04.Text = str;
if (0x2 == (val & 0x02))
{
qsfp1_present.BackColor = Color.Red;
}
else
{
qsfp1_present.BackColor = Color.LightGreen;
}
if (0x20 == (val & 0x020))
{
qsfp2_present.BackColor = Color.Red;
}
else
{
qsfp2_present.BackColor = Color.LightGreen;
}
if (0x200 == (val & 0x0200))
{
qsfp3_present.BackColor = Color.Red;
}
else
{
qsfp3_present.BackColor = Color.LightGreen;
}
if (0x2000 == (val & 0x02000))
{
qsfp4_present.BackColor = Color.Red;
}
else
{
qsfp4_present.BackColor = Color.LightGreen;
}
reg_0x14.Text = ssh_ReadReg("0x80000014");
reg_0x20.Text = ssh_ReadReg("0x80000020");
//
reg_0x28.Text = ssh_ReadReg("0x80000028");
val = (Convert.ToUInt32(reg_0x28.Text, 16));
if (0 == (val & 0x300))
{
dac_data_src_quadsend_rcv.Checked = true;
}
else if (0x100 == (val & 0x300))
{
dac_data_src_cmac.Checked = true;
}
if (1 == (val & 3))
{
cmac_tx_en.Checked = true;
}
else if (2 == (val & 3))
{
cmac_rx_en.Checked = true;
}
else if(3 == (val & 3))
{
cmac_rxtx_en.Checked = true;
}
else
{
cmac_disable.Checked = true;
}
str = ssh_ReadReg("0x80000020"); // dummy register to flag that cmac has been initialized
val = (Convert.ToUInt32(str, 16));
if (0xCAFE == val)
{
// CMAC already init'ed
cmac_init.Text = "CMACs Initialized";
cmac_init.BackColor = Color.LightGreen;
cmac_read_all_regs.PerformClick();
}
else
{
cmac_init.Text = "CMAC_Init";
cmac_init.BackColor = Color.Gainsboro;
}
str = ssh_ReadReg("0x8000002C");
val = (Convert.ToUInt32(str, 16));
reg_0x2C.Text = val.ToString("D");
reg_0x30.Text = ssh_ReadReg("0x80000030");
//
str = ssh_ReadReg("0x80000034");
val = (Convert.ToUInt32(str, 16));
reg_0x34.Text = val.ToString("D");
reg_0x38.Text = ssh_ReadReg("0x80000038");
//
str = ssh_ReadReg("0x8000003C");
val = (Convert.ToUInt32(str, 16));
reg_0x3C.Text = val.ToString("D");
//
str = ssh_ReadReg("0x80000040");
val = (Convert.ToUInt32(str, 16));
reg_0x40.Text = val.ToString("D");
reg_0xD4.Text = ssh_ReadReg("0x800000D4");
reg_0xD8.Text = ssh_ReadReg("0x800000D8");
reg_0xDC.Text = ssh_ReadReg("0x800000DC");
reg_0xE0.Text = ssh_ReadReg("0x800000E0");
reg_0xE4.Text = ssh_ReadReg("0x800000E4");
reg_0xE8.Text = ssh_ReadReg("0x800000E8");
reg_0xEC.Text = ssh_ReadReg("0x800000EC");
reg_0xF0.Text = ssh_ReadReg("0x800000F0");
}
}
private void cmac_0_RegDump()
{
if (true == ssh_client.IsConnected)
{
cmac_0_reg_0x10000.Text = "";
cmac_0_reg_0x10004.Text = "";
cmac_0_reg_0x1000C.Text = "";
cmac_0_reg_0x10014.Text = "";
cmac_0_reg_0x10024.Text = "";
cmac_0_reg_0x10090.Text = "";
cmac_4_reg_0x10030.Text = "";
cmac_4_reg_0x10058.Text = "";
cmac_0_reg_0x00.Text = "";
cmac_0_reg_0x04.Text = "";
cmac_0_reg_0x08.Text = "";
cmac_0_reg_0x0C.Text = "";
cmac_0_reg_0x10.Text = "";
cmac_0_reg_0x14.Text = "";
cmac_0_reg_0x18.Text = "";
cmac_0_reg_0x1C.Text = "";
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
cmac_0_reg_0x10004.Text = ssh_ReadReg("0x81010004");
cmac_0_reg_0x1000C.Text = ssh_ReadReg("0x8101000C");
cmac_0_reg_0x10014.Text = ssh_ReadReg("0x81010014");
cmac_0_reg_0x10024.Text = ssh_ReadReg("0x81010024");
cmac_0_reg_0x10090.Text = ssh_ReadReg("0x81010090");
cmac_0_reg_0x10030.Text = ssh_ReadReg("0x81010030");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
cmac_0_reg_0x00.Text = ssh_ReadReg("0x81000000");
cmac_0_reg_0x04.Text = ssh_ReadReg("0x81000004");
cmac_0_reg_0x08.Text = ssh_ReadReg("0x81000008");
cmac_0_reg_0x0C.Text = ssh_ReadReg("0x8100000C");
cmac_0_reg_0x10.Text = ssh_ReadReg("0x81000010");
cmac_0_reg_0x14.Text = ssh_ReadReg("0x81000014");
cmac_0_reg_0x18.Text = ssh_ReadReg("0x81000018");
cmac_0_reg_0x1C.Text = ssh_ReadReg("0x8100001C");
}
}
private void cmac_4_RegDump()
{
if (true == ssh_client.IsConnected)
{
cmac_4_reg_0x10000.Text = "";
cmac_4_reg_0x10004.Text = "";
cmac_4_reg_0x1000C.Text = "";
cmac_4_reg_0x10014.Text = "";
cmac_4_reg_0x10024.Text = "";
cmac_4_reg_0x10090.Text = "";
cmac_4_reg_0x10030.Text = "";
cmac_4_reg_0x10058.Text = "";
cmac_4_reg_0x00.Text = "";
cmac_4_reg_0x04.Text = "";
cmac_4_reg_0x08.Text = "";
cmac_4_reg_0x0C.Text = "";
cmac_4_reg_0x10.Text = "";
cmac_4_reg_0x14.Text = "";
cmac_4_reg_0x18.Text = "";
cmac_4_reg_0x1C.Text = "";
cmac_4_reg_0x10000.Text = ssh_ReadReg("0x82010000");
cmac_4_reg_0x10004.Text = ssh_ReadReg("0x82010004");
cmac_4_reg_0x1000C.Text = ssh_ReadReg("0x8201000C");
cmac_4_reg_0x10014.Text = ssh_ReadReg("0x82010014");
cmac_4_reg_0x10024.Text = ssh_ReadReg("0x82010024");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010090");
cmac_4_reg_0x10030.Text = ssh_ReadReg("0x81010030");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x81010058");
cmac_4_reg_0x00.Text = ssh_ReadReg("0x82000000");
cmac_4_reg_0x04.Text = ssh_ReadReg("0x82000004");
cmac_4_reg_0x08.Text = ssh_ReadReg("0x82000008");
cmac_4_reg_0x0C.Text = ssh_ReadReg("0x8200000C");
cmac_4_reg_0x10.Text = ssh_ReadReg("0x82000010");
cmac_4_reg_0x14.Text = ssh_ReadReg("0x82000014");
cmac_4_reg_0x18.Text = ssh_ReadReg("0x82000018");
cmac_4_reg_0x1C.Text = ssh_ReadReg("0x8200001C");
}
}
private void Open_ssh_connection_Click(object sender, EventArgs e)
{
// if (false == ssh_client.IsConnected)
// {
try
{
ssh_client = new SshClient(ipAddress.Text, "root", "");
ssh_connect.Text = "Connecting...";
ssh_client.Connect();
Console.WriteLine($"Connected to {ssh_client.ConnectionInfo.Host} successfully.");
ssh_connect.BackColor = Color.LightGreen;
// SshCommand cmd = ssh_client.RunCommand("devmem 0x80000000"); // Execute a command
// Console.WriteLine("Command Output:");
// Console.WriteLine(cmd.Result); // Get the command output
// reg_0x00.Text = cmd.Result;
// read_all_regs.PerformClick();
// cmac_read_all_regs.PerformClick();
// reg_0x00.Text = ssh_ReadReg("0x80000000");
cmac_0_reg_0x10024.Text = ssh_ReadReg("0x81010024");
cmac_4_reg_0x10024.Text = ssh_ReadReg("0x82010024");
read_all_regs.PerformClick();
ssh_connect.Text = "Connected";
// ssh_client.Disconnect();
// Thread oThread = new Thread(new ThreadStart(backgroundTask));
// oThread.IsBackground = true;
// oThread.Start();
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
ssh_connect.Text = "Connect";
ssh_connect.BackColor = Color.Red;
}
// }
// else
// {
//
// }
}
private void reboot_fpga_Click(object sender, EventArgs e)
{
string str = String.Empty;
if (MessageBox.Show("Are you sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
str = String.Empty;
str += "XY";
str += "\n";
}
}
private void read_all_regs_Click(object sender, EventArgs e)
{
RegDump();
}
private void cmac_reg_read_Click(object sender, EventArgs e)
{
cmac_0_RegDump();
cmac_4_RegDump();
}
private void dac_data_src_cmac_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 |= 0x100; // bit8 = 1 <= CMAC
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void dac_data_src_quadsend_rcv_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFF_FEFF; // bit8 = 0 <= quadsendrecv
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void cmac_rx_en_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFF_FFFC; // bit1:0 = 0 <= cmac disabled
cntrl_reg28 |= 0x02; // bit0 = 1 <= Rx enable
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void cmac_tx_en_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFF_FFFC; // bit1:0 = 0 <= cmac disabled
cntrl_reg28 |= 0x01; // bit0 = 1 <= Tx enable
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void cmac_rxtx_en_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 |= 0x03; // bit1:0 = 1 <= Rx and Tx enable
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void cmac_disable_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFF_FFFC; // bit1:0 = 0 <= cmac disabled
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
}
private void cmac_init_Click(object sender, EventArgs e)
{
cmac_1_Init();
cmac_4_Init();
cmac_init.Text = "CMACs Initialized";
cmac_init.BackColor = Color.LightGreen;
cmac_read_all_regs.PerformClick();
ssh_WriteReg("0x80000020", "0xCAFE"); // init flag
}
private void cmac_1_Init()
{
cmac_init.Text = "CMAC_1 Initializing...";
// RESET - CMAC_1
ssh_WriteReg("0x81010000", "0x1");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
ssh_WriteReg("0x81010000", "0xFFFFFFFF");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
// await Task.Run(() =>
// {
// Sleep 5
Thread.Sleep(5000);
// });
// release RESET - CMAC_1
ssh_WriteReg("0x81010000", "0x0");
cmac_0_reg_0x10000.Text = ssh_ReadReg("0x81010000");
//#:: RX ENABLE
//#:: offset 0x14
//#:: Set bit(0) to 1 to enable, do not modify other bits
ssh_WriteReg("0x81010014", "0x1");
cmac_0_reg_0x10014.Text = ssh_ReadReg("0x81010014");
//#:: TX ENABLE
//#:: offset 0xC
//#:: Set bit(0) to 1 to enable, do not modify other bits
ssh_WriteReg("0x8101000C", "0x1");
cmac_0_reg_0x1000C.Text = ssh_ReadReg("0x8101000C");
//#:: LOOPBACK MODE
//#:: 1=LB, 0=No LB
ssh_WriteReg("0x81010090", "0x0");
cmac_0_reg_0x10090.Text = ssh_ReadReg("0x81010090");
// CONFIGURATION_TX_FLOW_CONTROL_CONTROL_REG1
// bits 8:0 - ctl_tx_pause_enable
ssh_WriteReg("0x81010030", "0x00000100");
cmac_0_reg_0x10030.Text = ssh_ReadReg("0x81010030");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000001");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
//#:: Set Destination MAC address
//#:: Broadcast (not multicast, but accepted everywhere): FF:FF:FF:FF:FF:FF
//#:: IPv4 multicast (All-hosts group): 01:00:5E:00:00:01
//#:: IPv6 multicast (All-nodes group): 33:33:00:00:00:01
ssh_WriteReg("0x81000000", "0x5E000001");
cmac_0_reg_0x00.Text = ssh_ReadReg("0x81000000");
ssh_WriteReg("0x81000004", "0x00000100");
cmac_0_reg_0x04.Text = ssh_ReadReg("0x81000004");
//#:: Set Source MAC address 02:00:00:00:00:01
ssh_WriteReg("0x81000008", "0x00000001");
cmac_0_reg_0x08.Text = ssh_ReadReg("0x81000008");
ssh_WriteReg("0x8100000C", "0x00000200");
cmac_0_reg_0x0C.Text = ssh_ReadReg("0x8100000C");
//#:: Set EtherType
//#:: 0x88B5 IEEE “local/experimental” Ethertype (commonly used for custom payloads)
//#:: 0x0800 IPv4 (often whitelisted by other stacks, even if the payload isnt fully IP)
ssh_WriteReg("0x81000010", "0x000088B5");
cmac_0_reg_0x10.Text = ssh_ReadReg("0x81000010");
// PROG_FULL_ON_THRESH - 0x18
ssh_WriteReg("0x81000018", "0x00000300"); //256
cmac_0_reg_0x18.Text = ssh_ReadReg("0x81000018");
//PROG_FULL_OFF_THRESH - 0x1C
ssh_WriteReg("0x8100001C", "0x00000100"); //768
cmac_0_reg_0x1C.Text = ssh_ReadReg("0x8100001C");
}
private void cmac_4_Init()
{
cmac_init.Text = "CMAC_4 Initializing...";
// RESET - CMAC_4
ssh_WriteReg("0x82010000", "0x1");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010000");
ssh_WriteReg("0x82010000", "0xFFFFFFFF");
cmac_4_reg_0x10000.Text = ssh_ReadReg("0x82010000");
// await Task.Run(() =>
// {
// Sleep 5
Thread.Sleep(5000);
// });
// release RESET - CMAC_4
ssh_WriteReg("0x82010000", "0x0");
cmac_4_reg_0x10000.Text = ssh_ReadReg("0x82010000");
//#:: RX ENABLE
//#:: offset 0x14
//#:: Set bit(0) to 1 to enable, do not modify other bits
ssh_WriteReg("0x82010014", "0x1");
cmac_4_reg_0x10014.Text = ssh_ReadReg("0x82010014");
//#:: TX ENABLE
//#:: offset 0xC
//#:: Set bit(0) to 1 to enable, do not modify other bits
ssh_WriteReg("0x8201000C", "0x1");
cmac_4_reg_0x1000C.Text = ssh_ReadReg("0x8201000C");
//#:: LOOPBACK MODE
//#:: 1=LB, 0=No LB
ssh_WriteReg("0x82010090", "0x0");
cmac_4_reg_0x10090.Text = ssh_ReadReg("0x82010090");
// CONFIGURATION_TX_FLOW_CONTROL_CONTROL_REG1
// bits 8:0 - ctl_tx_pause_enable
ssh_WriteReg("0x82010030", "0x00000100");
cmac_4_reg_0x10030.Text = ssh_ReadReg("0x82010030");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
//#:: Set Destination MAC address
//#:: Broadcast (not multicast, but accepted everywhere): FF:FF:FF:FF:FF:FF
//#:: IPv4 multicast (All-hosts group): 01:00:5E:00:00:01
//#:: IPv6 multicast (All-nodes group): 33:33:00:00:00:01
ssh_WriteReg("0x82000000", "0x5E000001");
cmac_4_reg_0x00.Text = ssh_ReadReg("0x82000000");
ssh_WriteReg("0x82000004", "0x00000100");
cmac_4_reg_0x04.Text = ssh_ReadReg("0x82000004");
//#:: Set Source MAC address 02:00:00:00:00:01
ssh_WriteReg("0x82000008", "0x00000001");
cmac_4_reg_0x08.Text = ssh_ReadReg("0x82000008");
ssh_WriteReg("0x8200000C", "0x00000200");
cmac_4_reg_0x0C.Text = ssh_ReadReg("0x8200000c");
//#:: Set EtherType
//#:: 0x88B5 IEEE “local/experimental” Ethertype (commonly used for custom payloads)
//#:: 0x0800 IPv4 (often whitelisted by other stacks, even if the payload isnt fully IP)
ssh_WriteReg("0x82000010", "0x000088B5");
cmac_4_reg_0x10.Text = ssh_ReadReg("0x82000010");
// PROG_FULL_ON_THRESH - 0x18
ssh_WriteReg("0x82000018", "0x00000300"); //256
cmac_4_reg_0x18.Text = ssh_ReadReg("0x82000018");
//PROG_FULL_OFF_THRESH - 0x1C
ssh_WriteReg("0x8200001C", "0x00000100"); //768
cmac_4_reg_0x1C.Text = ssh_ReadReg("0x8200001C");
}
private void reg_read_Click(object sender, EventArgs e)
{
reg_data.Text = ssh_ReadReg("0x"+reg_addr.Text);
}
private void reg_write_Click(object sender, EventArgs e)
{
ssh_WriteReg("0x"+reg_addr.Text, "0x"+reg_data.Text);
}
private void counters_rst_Click(object sender, EventArgs e)
{
reg_0x20.Text = ssh_ReadReg("0x80000020");
uint cntrl_reg20 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg20 |= 0x8000_0000; // bit31: 1 <= reset
ssh_WriteReg("0x80000020", "0x" + cntrl_reg20.ToString("X8"));
reg_0x20.Text = ssh_ReadReg("0x80000020");
reg_0x20.Text = ssh_ReadReg("0x80000020");
cntrl_reg20 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg20 &= 0x7FFF_FFFF; // bit31: 0 <= normal
ssh_WriteReg("0x80000020", "0x" + cntrl_reg20.ToString("X8"));
reg_0x20.Text = ssh_ReadReg("0x80000020");
}
private void cmac_rx_tx_debug_regs_Click(object sender, EventArgs e)
{
if (true == ssh_client.IsConnected)
{
cmac_0_reg_0x40.Text = "";
cmac_0_reg_0x44.Text = "";
cmac_0_reg_0x48.Text = "";
cmac_0_reg_0x4C.Text = "";
cmac_0_reg_0x50.Text = "";
cmac_0_reg_0x54.Text = "";
cmac_0_reg_0x58.Text = "";
cmac_4_reg_0x40.Text = "";
cmac_4_reg_0x44.Text = "";
cmac_4_reg_0x48.Text = "";
cmac_4_reg_0x4C.Text = "";
cmac_4_reg_0x50.Text = "";
cmac_4_reg_0x54.Text = "";
cmac_4_reg_0x58.Text = "";
cmac_0_reg_0x40.Text = ssh_ReadReg("0x81000040");
cmac_0_reg_0x44.Text = ssh_ReadReg("0x81000044");
cmac_0_reg_0x48.Text = ssh_ReadReg("0x81000048");
cmac_0_reg_0x4C.Text = ssh_ReadReg("0x8100004C");
cmac_0_reg_0x50.Text = ssh_ReadReg("0x81000050");
cmac_0_reg_0x54.Text = ssh_ReadReg("0x81000054");
cmac_0_reg_0x58.Text = ssh_ReadReg("0x81000058");
cmac_4_reg_0x40.Text = ssh_ReadReg("0x82000040");
cmac_4_reg_0x44.Text = ssh_ReadReg("0x82000044");
cmac_4_reg_0x48.Text = ssh_ReadReg("0x82000048");
cmac_4_reg_0x4C.Text = ssh_ReadReg("0x8200004C");
cmac_4_reg_0x50.Text = ssh_ReadReg("0x82000050");
cmac_4_reg_0x54.Text = ssh_ReadReg("0x82000054");
cmac_4_reg_0x58.Text = ssh_ReadReg("0x82000058");
}
}
private void cmac2_dac_chan_both_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16 0 <= both
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000001");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
}
private void cmac2_dac_chan_1_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16
cntrl_reg28 |= 0x1_0000; // bit17:16 1 <= chan 1
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x81010058", "0x00000007");
cmac_0_reg_0x10058.Text = ssh_ReadReg("0x81010058");
}
private void cmac2_dac_chan_2_Click(object sender, EventArgs e)
{
reg_0x28.Text = ssh_ReadReg("0x80000028");
uint cntrl_reg28 = (Convert.ToUInt32(reg_0x28.Text, 16));
cntrl_reg28 &= 0xFFFC_FFFF; // bit17:16
cntrl_reg28 |= 0x2_0000; // bit17:16 2 <= chan 2
ssh_WriteReg("0x80000028", "0x" + cntrl_reg28.ToString("X8"));
reg_0x28.Text = ssh_ReadReg("0x80000028");
// CONFIGURATION_TX_FLOW_CONTROL_QUANTA_REG5
// bit 15:0 - ctl_tx_pause_quanta8
ssh_WriteReg("0x82010058", "0x00000007");
cmac_4_reg_0x10058.Text = ssh_ReadReg("0x82010058");
}
}
}