This commit is contained in:
2026-04-17 14:55:32 -04:00
commit bc3ac1d4c9
18017 changed files with 4371742 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
---
source_files:
- Common/DTS.Common.IConnection/USBConnection/HIDUSBConnection/HIDUSBConnection.cs
generated_at: "2026-04-17T15:42:39.330640+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "7d6d1a6f53e67671"
---
# HIDUSBConnection Documentation
## 1. Purpose
`HIDUSBConnection` implements the `IConnection` interface to provide asynchronous communication with USB Human Interface Device (HID) hardware. It targets specific DTS devices identified by Vendor ID `0x1CB9` and Product ID `0x0003`. The class wraps Windows HID API calls for device discovery, connection management, and bidirectional data transfer using input/output reports.
---
## 2. Public Interface
### Constants
| Name | Value | Description |
|------|-------|-------------|
| `HIDSLICE_PID` | `0x0003` | Product ID for target HID device |
| `DTS_VID` | `0x1CB9` | Vendor ID for DTS devices |
### Properties
| Signature | Description |
|-----------|-------------|
| `bool Connected { get; }` | Returns current connection state |
| `string ConnectString { get; }` | Returns the device path name set via `Create()` |
| `System.Net.Sockets.SocketFlags Flags { get; set; }` | Socket flags property (purpose unclear in HID context) |
### Events
| Signature | Description |
|-----------|-------------|
| `event EventHandler OnDisconnected` | Event raised when device disconnects (defined but never invoked in source) |
### Methods
| Signature | Description |
|-----------|-------------|
| `void Create(string ConnectString)` | Stores device path in `Device_Name` |
| `void Dispose()` | Public disposal method implementing IDisposable pattern |
| `IAsyncResult BeginConnect(AsyncCallback cb, object state)` | Queues async connect operation via ThreadPool |
| `void EndConnect(IAsyncResult ar)` | Opens handles to device, retrieves capabilities, initializes buffers |
| `static string GetFirstConnectString()` | Enumerates HID devices to find first matching VID/PID; returns device path or empty string |
| `IAsyncResult BeginDisconnect(bool reuseSocket, AsyncCallback cb, Object state)` | Queues async disconnect operation |
| `void EndDisconnect(IAsyncResult asyncResult)` | Closes `_HIDHandle`, `_ReadHandle`, `_WriteHandle`; sets `_Connected = false` |
| `IAsyncResult BeginSend(byte[] buffer, int offset, int size, AsyncCallback cb, object state)` | Queues async send operation; validates handles first |
| `int EndSend(IAsyncResult ar)` | Writes data to device via HID output reports; returns total bytes sent |
| `IAsyncResult BeginReceive(byte[] buffer, int offset, int size, AsyncCallback cb, object state)` | Queues async receive operation; validates handles first |
| `int EndReceive(IAsyncResult ar)` | Reads HID input report; copies to buffer (skipping first byte); returns bytes read or 0 on failure |
| `double GetCurrentDownloadRate()` | Returns `0D` (stub) |
| `double GetCurrentUploadRate()` | Returns `0D` (stub) |
| `string GetConnectionData()` | Returns empty string (stub) |
| `void Bind(int port)` | Throws `NotSupportedException` |
| `void Listen(int backlog)` | Throws `NotSupportedException` |
| `IAsyncResult BeginAccept(AsyncCallback callback, Object state)`