Skip to content

feat: cross-platform NetFinder for CS203XL discovery on iOS/Android/Windows#2

Merged
mephist-cne merged 3 commits into
developfrom
feat/netfinder-integration
Apr 17, 2026
Merged

feat: cross-platform NetFinder for CS203XL discovery on iOS/Android/Windows#2
mephist-cne merged 3 commits into
developfrom
feat/netfinder-integration

Conversation

@mephist-cne
Copy link
Copy Markdown
Contributor

@mephist-cne mephist-cne commented Apr 16, 2026

Summary

Adds CSLibrary.NetFinder.NetFinder for discovering CS203XL readers over UDP (port 3000) on Windows, Android, and iOS.

What changed

NEW: Source/Properties/AndroidPermissions.cs

  • [assembly: Android.Runtime.UsesPermission] attributes for:
    • ACCESS_WIFI_STATE, ACCESS_NETWORK_STATE, CHANGE_WIFI_MULTICAST_STATE, INTERNET — required for NetFinder UDP broadcast on Android
    • BLUETOOTH_* permissions — Plugin.BLE coverage
  • Only compiles when targeting Android (#if ANDROID)

NEW: Source/HAL/TCPIP/NetFinder.cs — CSLibrary.NetFinder namespace

  • Wraps CSLibrary.NetFinder.CS203XL.NetFinder (UDP port 3000)
  • Singleton pattern, static SearchDevice() / StopSearch() / ClearDeviceList()
  • OnSearchCompleted event with DeviceFinderArgs (IP, MAC, name, port)

MODIFIED: Source/HAL/TCPIP/ClassDeviceFinder.cs

  • Changed #if __MwwmCrossPluginBLE#if TCP
  • Removed Windows-only DeviceWatcher code
  • Now wires DeviceFinder.SearchDevice()CSLibrary.NetFinder.NetFinder

MODIFIED: Source/CSLibrary.cs

  • Added using CSLibrary.NetFinder;

MODIFIED: CSLibrary2026.csproj TargetFrameworks

  • Added: net10.0-android, net10.0-ios, net10.0-maccatalyst

Usage (MAUI app)

using CSLibrary.NetFinder;

// Discover CS203XL devices (UDP broadcast port 3000)
NetFinder.SearchDevice();
NetFinder.OnSearchCompleted += (s, e) => {
    Console.WriteLine($"Found: {e.IPAddress}, {e.DeviceName}");
};

// Connect
var reader = new CSLibrary.RFIDReader.ClassRFID();
await reader.ConnectAsync(e.IPAddress, 5000);  // TCP port 5000

Platform Notes

  • Windows: ✅ NetFinder UDP broadcast works natively
  • Android: ✅ Requires ACCESS_WIFI_STATE, CHANGE_WIFI_MULTICAST_STATE — declared via assembly attributes in this PR; also add to your app AndroidManifest.xml as fallback
  • iOS: ⚠️ Apple blocks UDP multicast/broadcast at OS level — NetFinder will not work on iOS without a network permission entitlement (rarely approved by Apple)

Next Steps

  • Merge PR, publish 1.0.0-beta.3 to NuGet from Windows/macOS build machine with Android/iOS SDKs

OpenClaw and others added 3 commits April 16, 2026 13:35
…/Android/Windows

- NEW: Source/HAL/TCPIP/NetFinder.cs — CSLibrary.NetFinder namespace wrapper
  - Wraps CSLibrary.NetFinder.CS203XL.NetFinder (UDP port 3000)
  - Singleton pattern, static SearchDevice() / StopSearch()
  - Cross-platform: System.Net.Sockets works on iOS, Android, Windows
- MODIFIED: Source/HAL/TCPIP/ClassDeviceFinder.cs
  - Changed #if __MwwmCrossPluginBLE to #if TCP
  - Removed Windows-only DeviceWatcher code
  - Wires to CSLibrary.NetFinder.NetFinder for discovery
- MODIFIED: Source/CSLibrary.cs
  - Added: using CSLibrary.NetFinder;
- ConnectAsync(string ip, int port) already wired in CodeFileTCPIP.cs
- NEW: Source/Properties/AndroidPermissions.cs
  - [assembly: Android.Runtime.UsesPermission] for ACCESS_WIFI_STATE,
    ACCESS_NETWORK_STATE, CHANGE_WIFI_MULTICAST_STATE, INTERNET
  - Also BLUETOOTH_* permissions (Plugin.BLE coverage)
  - Only compiles when targeting Android (#if ANDROID)
- UPDATED: CSLibrary2026.csproj TargetFrameworks
  - Added: net10.0-android, net10.0-ios, net10.0-maccatalyst
  - (netstandard2.0, net10.0, net10.0-windows already present)
Co-authored-by: OpenClaw <openclaw@openclaw>
@mephist-cne mephist-cne merged commit 16d2a1a into develop Apr 17, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant