# Module: network-probe — 探頭連接與網絡

探頭連接（USB / Wi-Fi）與 DICOM 網絡是 SonoiQ 的兩條外部通路。

## 探頭連接（`handprobe.application.usb` + `wlan`）

7 種連接類型（`ultrasys.probe.ConnectType`）：

| 常量 | 值 | 含義 |
|---|---|---|
| `NONE_CONNECT_TYPE` | 0 | 未連接 |
| `SIMU_CONNECT_TYPE` | 1 | 模擬（無探頭演示） |
| `WLAN_CONNECT_TYPE` | 2 | Wi-Fi 探頭 |
| `WUSB_CONNECT_TYPE` | 3 | 無線 USB |
| `USB_CONNECT_TYPE` | 4 | USB 有線 |
| `UWLAN_CONNECT_TYPE` | 5 | 另一種無線模式 |
| `RGBIF_CONNECT_TYPE` | 6 | RGB 接口機（`HS5pRGBIf`） |
| `BROADCAST_CONNECT_TYPE` | 7 | 廣播 |

切換時 `ConnectType.SetConnType()` 同步 `HSysctrlIf.SetProbeConnType(int)` 並刷新 UI 搜索按鈕狀態、發送 `AMSG_CONNECT_CHANGE`。

### Key Files

- `usb/UsbProbeManager.java` — USB bulk 傳輸單例（`Write`/`Read`/`ReadEncImg`/`GetImgPack`）
- `usb/jnitojava.java` — native 回調入口（見 kernel-jni 模組）
- `wlan/protocol/` — 探頭通信協議（`Tools`、`JsonParam`）
- `wlan/wlanprobe/WlanProbe.java` + `ProbeWifiInfo.java` — Wi-Fi 探頭發現/連接
- `wlan/wifi/` — Wi-Fi 管理

## DICOM 網絡（`handprobe.components.dicom`）

全部 DICOM 邏輯在 native `libdoppler` 內（`JDicom*` 類為 JNI 包裝）：

- `JDicomServer` — 本地 DICOM 服務
- `JDicomStorageService` — 存儲（SCU 上傳 PACS）
- `JDicomWorklistService` — 工作列表（Modality Worklist）
- `JDicomMPPSService` — 檢查狀態回報（MPPS）
- `JDicomPrintService` — DICOM 打印
- `JDicomLocal` / `JDicomService` — 本地/服務基類
- 參數：`handprobe.application.preset.DicomPresetPara`、`DicomMPPSServicePara`

## 其他網絡

- `application/network/` — 通用網絡（激活/升級類）
- `components/network/` — 網絡工具
- Manifest 權限：INTERNET、CHANGE_WIFI_STATE、ACCESS_WIFI_STATE、CHANGE_NETWORK_STATE（無 BLUETOOTH 實際使用——聲明遺留）

## Dependencies

- **Used by:** `Ultrasys`（連接狀態）、`SplashActivity`（啟動 DICOM 服務）、`BaseActivity`（offWifi）
- **Uses:** `jni.HSysctrlIf`、`kernel.*`

## Notable Patterns / Gotchas

- `MyApplication.onActivityDestroyed` 會在 BaseActivity 銷毀時 `mMainActivity.offWifi()`——離開主界面即斷 Wi-Fi 探頭
- `ThirdPartyManageActivity` 回傳時 `ProbeWifiInfo.DisconnectWifi()` 強制斷開，防止第三方 App 期間佔用探頭
- `ReadEncImg` 表明 USB 影像流是**加密/編碼**傳輸（`WUsbReadImg`），細節在 native 側
