﻿using global::System;
using global::System.Windows.Forms;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;

namespace USBrelayTest
{
    public partial class MainForm : Form
    {
        private string myvid;
        private string mypid;
        public string man;
        public int dev_count;

        public MainForm()
        {
            this.InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dev_count = 0;
            var devs = USBrelayTest.HIDBrowse.Browse();

            // display VID and PID for every device found 
            foreach (var dev in devs)
            {
                myvid = Conversions.ToString(dev.Vid.ToString()[Conversions.ToInteger("X4")]);
                mypid = Conversions.ToString(dev.Pid.ToString()[Conversions.ToInteger("X4")]);
                man = Conversions.ToString(dev.Manufacturer);
                int sd = Conversions.ToInteger(Math.Abs(dev.Pid));
                if (Equals(myvid, "0000") && Equals(man, "EtherTek") && sd <= 32768)
                {

                    // pid = dev.Pid.ToString("X4");
                    this.textBox1.Text += "VID = " + dev.Vid.ToString()[Conversions.ToInteger("X4")] + "  PID = " + dev.Pid.ToString()[Conversions.ToInteger("X4")] + "  " + dev.Product + Constants.vbCrLf;
                    this.button2.Enabled = true;
                    this.button3.Enabled = true;
                    this.button4.Enabled = true;
                    this.button5.Enabled = true;
                    this.button6.Enabled = true;
                    this.button7.Enabled = true;
                    this.button8.Enabled = true;
                    this.button9.Enabled = true;
                    this.button10.Enabled = true;
                    this.button11.Enabled = true;
                    this.button12.Enabled = true;
                    this.heartbeatLED.Enabled = true;
                    break;
                }

                dev_count += 1;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.textBox1.Text += "Manufacturer: " + man + Constants.vbCrLf;
            // GetManufacturer(dev);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            // Energize Relay 1
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek2
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x01; // 1
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 1 Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            // De-Energize Relay 1
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek1
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x00; // 0
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 1 De-Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            // Energize Relay 2
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek2
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x03; // 3
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 2 Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            // De-Energize Relay 2
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek1
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x02; // 2
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 2 De-Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            // Energize Relay 3
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek2
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x05; // 5
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 3 Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            // De-Energize Relay 3
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek1
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x04; // 4
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 3 De-Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button9_Click(object sender, EventArgs e)
        {
            // Energize Relay 4
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek2
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x07; // 7
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 4 Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button10_Click(object sender, EventArgs e)
        {
            // De-Energize Relay 4
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek1
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x06; // 6
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 4 De-Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button11_Click(object sender, EventArgs e)
        {
            // Energize Relay 5
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek2
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x09; // 9
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 5 Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void button12_Click(object sender, EventArgs e)
        {
            // De-Energize Relay 5
            var dev = new USBrelayTest.HIDDev();
            var devs = USBrelayTest.HIDBrowse.Browse();
            dev.Open(devs[dev_count]);
            // ETek1
            var report = new byte[33];
            report[0] = 0x00; // 0
            report[1] = 0x45; // E
            report[2] = 0x54; // T
            report[3] = 0x65; // e
            report[4] = 0x6B; // k
            report[5] = 0x08; // 8
            report[6] = 0x00; // 0
            // send report 
            dev.Write(report);
            this.textBox1.Text += "Relay 5 De-Energized" + Constants.vbCrLf;
            dev.Close();
        }

        private void heartbeatLED_CheckedChanged(object sender, EventArgs e)
        {
            if (this.heartbeatLED.Checked == true)
            {
                // HEARTBEAT LED ON
                var dev = new USBrelayTest.HIDDev();
                var devs = USBrelayTest.HIDBrowse.Browse();
                dev.Open(devs[dev_count]);
                // ETek1
                var report = new byte[33];
                report[0] = 0x00; // 0
                report[1] = 0x45; // E
                report[2] = 0x54; // T
                report[3] = 0x65; // e
                report[4] = 0x6B; // k
                report[5] = 0x0B; // 11
                report[6] = 0x20; // 32 = bit 6

                // send report 
                dev.Write(report);
                this.textBox1.Text += "HEARTBEAT LED ON" + Constants.vbCrLf;
                dev.Close();
            }
            else
            {
                // HEARTBEAT LED OFF
                var dev = new USBrelayTest.HIDDev();
                var devs = USBrelayTest.HIDBrowse.Browse();
                dev.Open(devs[dev_count]);
                // ETek1
                var report = new byte[33];
                report[0] = 0x00; // 0
                report[1] = 0x45; // E
                report[2] = 0x54; // T
                report[3] = 0x65; // e
                report[4] = 0x6B; // k
                report[5] = 0x0B; // 11
                report[6] = 0x00; // 00 = bit 6 off

                // send report 
                dev.Write(report);
                this.textBox1.Text += "HEARTBEAT LED OFF" + Constants.vbCrLf;
                dev.Close();
            }
        }
    }
}