Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/hakchi2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-01-07 19:18:29 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2017-01-07 19:18:29 +0300
commitbaebd293c5e8cc41ebcd11464868e73c0a8044db (patch)
treeee1ec4f7d85863099b3d1d7656935295973e352d /FelLib/AWUSBRequest.cs
First commit
Diffstat (limited to 'FelLib/AWUSBRequest.cs')
-rw-r--r--FelLib/AWUSBRequest.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/FelLib/AWUSBRequest.cs b/FelLib/AWUSBRequest.cs
new file mode 100644
index 00000000..6984c457
--- /dev/null
+++ b/FelLib/AWUSBRequest.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace com.clusterrr.FelLib
+{
+ public class AWUSBRequest
+ {
+ public enum RequestType { AW_USB_READ = 0x11, AW_USB_WRITE = 0x12 };
+ public UInt32 Tag = 0;
+ public UInt32 Len;
+ public RequestType Cmd;
+ public byte CmdLen = 0x0C;
+
+ public AWUSBRequest()
+ {
+ }
+
+ public AWUSBRequest(byte[] data)
+ {
+ if (data[0] != 'A' || data[1] != 'W' || data[2] != 'U' || data[3] != 'C')
+ throw new FelParseException();
+ Tag = (UInt32)(data[4] | (data[5] * 0x100) | (data[6] * 0x10000) | (data[7] * 0x1000000));
+ Len = (UInt32)(data[8] | (data[9] * 0x100) | (data[10] * 0x10000) | (data[11] * 0x1000000));
+ CmdLen = data[15];
+ Cmd = (RequestType)data[16];
+ }
+
+ public byte[] Data
+ {
+ get
+ {
+ var data = new byte[32];
+ data[0] = (byte)'A';
+ data[1] = (byte)'W';
+ data[2] = (byte)'U';
+ data[3] = (byte)'C';
+ data[4] = (byte)(Tag & 0xFF); // tag
+ data[5] = (byte)((Tag >> 8) & 0xFF); // tag
+ data[6] = (byte)((Tag >> 16) & 0xFF); // tag
+ data[7] = (byte)((Tag >> 24) & 0xFF); // tag
+ data[8] = (byte)(Len & 0xFF); // len
+ data[9] = (byte)((Len >> 8) & 0xFF); // len
+ data[10] = (byte)((Len >> 16) & 0xFF); // len
+ data[11] = (byte)((Len >> 24) & 0xFF); // len
+ data[12] = data[13] = 0; // reserved1
+ data[14] = 0; // reserved2
+ data[15] = CmdLen; // cmd_len
+ data[16] = (byte)Cmd;
+ data[17] = 0; // reserved3
+ data[18] = (byte)(Len & 0xFF); // len
+ data[19] = (byte)((Len >> 8) & 0xFF); // len
+ data[20] = (byte)((Len >> 16) & 0xFF); // len
+ data[21] = (byte)((Len >> 24) & 0xFF); // len
+ return data;
+ }
+ }
+ }
+}