96 lines
4.0 KiB
Markdown
96 lines
4.0 KiB
Markdown
# External Integrations
|
|
|
|
**Analysis Date:** 2026-04-16
|
|
|
|
## Hardware/Device
|
|
|
|
**WCH CH34X Series USB-to-Serial Chips:**
|
|
- **CH340, CH341, CH342, CH343, CH344, CH347** - Standard USB-to-serial converters
|
|
- **CH9101, CH9102, CH9103, CH9104** - Newer generation USB-to-serial chips
|
|
- **CH9143** - Multi-port USB-to-serial chip
|
|
|
|
**SDK/Driver:**
|
|
- Library: `CH34XUARTDriver.jar` (local JAR, 140KB)
|
|
- Location: `android/libs/CH34XUARTDriver.jar`
|
|
- Package: `cn.wch.uartlib`
|
|
- Manager: `WCHUARTManager.getInstance()` - Singleton pattern
|
|
|
|
**USB Host Protocol:**
|
|
- Android USB Host API (`android.hardware.usb.UsbManager`)
|
|
- Feature declaration: `android.hardware.usb.host` (optional, in `android/src/main/AndroidManifest.xml`)
|
|
- Permission model: Runtime USB permission via `WCHUARTManager.requestPermission()`
|
|
|
|
**VID/PID:**
|
|
- Default VID/PID managed by WCH driver
|
|
- Custom VID/PID supported via `Ch34Manager.addNewHardware(vid, pid)` - maps to `WCHUARTManager.addNewHardware()`
|
|
|
|
## Communication Channels
|
|
|
|
**MethodChannel (`'ch34'`):**
|
|
- Location: `lib/src/ch34_method_channel.dart` (Dart), `android/src/main/java/com/example/ch34/Ch34Plugin.java` (Java)
|
|
- 33 methods mapped: `enumDevice`, `openDevice`, `requestPermission`, `writeData`, `readData`, `setDtr`, `setRts`, `setBreak`, `enableGpio`, `setGpioVal`, `getGpioVal`, etc.
|
|
- Error codes: `ENUM_DEVICE_FAILED`, `OPEN_DEVICE_FAILED`, `PERMISSION_DENIED`, `WRITE_DATA_FAILED`, `GPIO_CHECK_FAILED`, etc.
|
|
|
|
**EventChannel (`'ch34/data'`):**
|
|
- Location: `android/src/main/java/com/example/ch34/Ch34DataStreamHandler.java`
|
|
- Payload: `byte[]` serial data bytes
|
|
- Registered via `manager.registerDataCallback(device, callback)`
|
|
|
|
**EventChannel (`'ch34/modem'`):**
|
|
- Location: `android/src/main/java/com/example/ch34/Ch34ModemStreamHandler.java`
|
|
- Payload: Map with `cts`, `dsr`, `ri`, `dcd` boolean values
|
|
- Registered via `manager.registerModemStatusCallback(device, IModemStatus)`
|
|
|
|
**EventChannel (`'ch34/usb_state'`):**
|
|
- Location: `android/src/main/java/com/example/ch34/Ch34UsbStateStreamHandler.java`
|
|
- Payload: Map with `deviceName` (String) and `connected` (boolean)
|
|
- Triggered by Android broadcast receiver (`UsbManager.ACTION_USB_DEVICE_ATTACHED`, `UsbManager.ACTION_USB_DEVICE_DETACHED`)
|
|
|
|
## Data Sources
|
|
|
|
**Serial Data:**
|
|
- Read: `Ch34Manager.readData(deviceName, serialNumber)` -> `Uint8List` (blocking)
|
|
- Stream: `Ch34Manager.registerDataCallback(deviceName, serialNumber, onData)` -> EventChannel push
|
|
- Write: `Ch34Manager.writeData(deviceName, serialNumber, data)` -> `int` bytes written
|
|
|
|
**GPIO Data:**
|
|
- Query: `Ch34Manager.queryGpioStatus(deviceName, gpioIndex)` -> `GpioStatus`
|
|
- Query all: `Ch34Manager.queryAllGpioStatus(deviceName)` -> `List<GpioStatus>`
|
|
- Control: `Ch34Manager.setGpioVal(deviceName, gpioIndex, value)` / `Ch34Manager.getGpioVal(deviceName, gpioIndex)`
|
|
|
|
**Modem Status:**
|
|
- `ModemStatus` class with fields: `cts` (Clear To Send), `dsr` (Data Set Ready), `ri` (Ring Indicator), `dcd` (Data Carrier Detect)
|
|
- Registered via `Ch34Manager.registerModemStatusCallback(deviceName, onModemStatus)`
|
|
|
|
**Error Types:**
|
|
- `SerialErrorType.framingError` - Framing error
|
|
- `SerialErrorType.parityError` - Parity error
|
|
- `SerialErrorType.overrunError` - Overrun error
|
|
- `SerialErrorType.breakInterrupt` - Break interrupt
|
|
- Query via `Ch34Manager.querySerialErrorCount(deviceName, serialNumber, errorType)`
|
|
|
|
## Authentication
|
|
|
|
**USB Device Permission:**
|
|
- Android runtime USB permission dialog via `WCHUARTManager.requestPermission(context, device)`
|
|
- No API keys, tokens, or credentials required
|
|
- Permission flow: `openDevice` -> if no permission, auto-request -> retry after 2000ms delay
|
|
|
|
## Third-party Services
|
|
|
|
**None.** This is a pure hardware driver plugin with no external API integrations, cloud services, or network dependencies.
|
|
|
|
## CI/CD & Deployment
|
|
|
|
**Hosting:** Not applicable (Flutter plugin package, published to pub.dev)
|
|
**CI Pipeline:** Not detected (no `.github/`, `.gitlab-ci.yml`, or `.circleci/` found)
|
|
|
|
## Webhooks & Callbacks
|
|
|
|
**Incoming:** None
|
|
**Outgoing:** None
|
|
|
|
---
|
|
|
|
*Integration audit: 2026-04-16*
|