{"id":48550208,"url":"https://github.com/cslrfid/cslibrary2026","last_synced_at":"2026-04-08T08:04:19.532Z","repository":{"id":348642371,"uuid":"1196788850","full_name":"cslrfid/CSLibrary2026","owner":"cslrfid","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-02T10:32:28.000Z","size":2408,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T17:39:13.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cslrfid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-31T03:27:35.000Z","updated_at":"2026-04-02T04:35:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cslrfid/CSLibrary2026","commit_stats":null,"previous_names":["cslrfid/cslibrary2026"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cslrfid/CSLibrary2026","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cslrfid%2FCSLibrary2026","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cslrfid%2FCSLibrary2026/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cslrfid%2FCSLibrary2026/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cslrfid%2FCSLibrary2026/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cslrfid","download_url":"https://codeload.github.com/cslrfid/CSLibrary2026/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cslrfid%2FCSLibrary2026/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31545909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-08T08:04:02.658Z","updated_at":"2026-04-08T08:04:19.524Z","avatar_url":"https://github.com/cslrfid.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSLibrary2026\n\nCSL RFID Reader Library for .NET — supporting Bluetooth LE communication with CSL RFID readers.\n\n## Supported Readers\n\n| Reader | Connection | Description |\n|--------|-----------|-------------|\n| **CS108** | Bluetooth LE | Handheld UHF RFID Reader |\n| **CS710S** | Bluetooth LE | Fixed UHF RFID Reader |\n| **CS203XL** | TCP/IP | Fixed UHF RFID Reader |\n\n## Features\n\n- Bluetooth LE (BLE) communication via [Plugin.BLE](https://github.com/xabre/xamarin-bluetooth-le)\n- Multi-reader support (CS108, CS710S, CS203XL)\n- Barcode scanning integration\n- Battery \u0026 notification management\n- Rich RFID operations: inventory, read/write, lock/kill, filtering\n\n## Supported Platforms\n\n- **.NET Standard 2.0** — Xamarin.Forms, .NET MAUI, and other .NET Standard compatible frameworks\n- **.NET 10** — .NET 10+ applications\n\n## Installation\n\n```bash\ndotnet add package CSLibrary2026\n```\n\nOr add to your `.csproj`:\n\n```xml\n\u003cPackageReference Include=\"CSLibrary2026\" Version=\"0.0.1\" /\u003e\n```\n\n## Quick Start\n\n### 1. Connect to a Reader\n\n```csharp\nusing CSLibrary;\n\n// Create the RFID reader instance\nvar reader = new CSLibrary.RFIDReader.ClassRFID();\n\n// Discover devices via Bluetooth LE\nvar adapter = new Plugin.BLE.Adapter.Adapter();\nvar devices = await adapter.DiscoverDevicesAsync();\n\n// Connect to the first device\nawait reader.ConnectAsync(adapter, devices[0]);\n```\n\n### 2. Subscribe to Events\n\n```csharp\n// RFID tag inventory callback\nreader.OnAsyncCallback += (sender, e) =\u003e\n{\n    if (e.type == CSLibrary.Constants.CallbackType.TAG_RANGING)\n    {\n        Console.WriteLine($\"EPC: {e.info.epc}\");\n    }\n};\n\n// Reader state change callback\nreader.OnStateChanged += (sender, e) =\u003e\n{\n    Console.WriteLine($\"State: {e.state}\");\n};\n```\n\n### 3. Start Inventory\n\n```csharp\n// Set power level (0–3000 = 0–30.00 dBm)\nreader.SetPowerLevel(3000);\n\n// Start inventory\nreader.StartOperation(CSLibrary.RFIDReader.Operation.TAG_RANGING);\n\n// Stop after some time\nreader.StopOperation();\n```\n\n## API Overview\n\n### Connection\n\n| Method | Description |\n|--------|-------------|\n| `ConnectAsync(IAdapter, IDevice)` | Connect to a BLE reader |\n| `DisconnectAsync()` | Disconnect from the reader |\n\n### Battery \u0026 Notifications\n\n| Method | Description |\n|--------|-------------|\n| `GetCurrentBatteryLevel()` | Get battery level |\n| `ClearEventHandler()` | Clear all callback events |\n\n**Events:**\n- `OnVoltageEvent` — Battery level changes\n- `OnKeyEvent` — Hotkey presses\n\n### RFID Operations\n\n**Start operations:**\n```csharp\nreader.StartOperation(Operation.TAG_RANGING);       // Inventory\nreader.StartOperation(Operation.TAG_READ);           // Read tags\nreader.StartOperation(Operation.TAG_READ_TID);       // Read TID bank\nreader.StartOperation(Operation.TAG_READ_USER);      // Read USER bank\nreader.StartOperation(Operation.TAG_WRITE);         // Write tags\nreader.StartOperation(Operation.TAG_LOCK);           // Lock tag\nreader.StartOperation(Operation.TAG_KILL);           // Kill tag\nreader.StopOperation();                             // Stop continuous operation\n```\n\n**Power \u0026 Frequency:**\n```csharp\nreader.SetPowerLevel(uint pwrlevel);           // Set power (0–3000)\nreader.GetActiveMaxPowerLevel();               // Get max power\nreader.SetCurrentLinkProfile(uint profile);    // Set link profile\nreader.SetCountry(string countryName);         // Set country frequency\nreader.SetCountry(string countryName, int ch);// Set country + fixed channel\n```\n\n**Singulation Algorithms:**\n```csharp\nreader.SetCurrentSingulationAlgorithm(SingulationAlgorithm.FIXEDQ);\nreader.SetFixedQParms(FixedQParms parms);\nreader.SetDynamicQParms(DynamicQParms parms);\nreader.SetTagGroup(TagGroup tagGroup);\nreader.SetPostMatchCriteria(SingulationCriterion[] criteria);\n```\n\n**Callback Events:**\n- `OnAsyncCallback` — Inventory / tag data (`CallbackType.TAG_RANGING`, `TAG_SEARCHING`)\n- `OnAccessCompleted` — Read/write/lock result\n- `OnStateChanged` — RFID reader state (`RFState.IDLE`, `RFState.BUSY`, `INITIALIZATION_COMPLETE`)\n\n### Barcode Scanner\n\n```csharp\nvar barcode = new CSLibrary.Barcode.ClassBarCode();\nbarcode.OnCapturedNotify += (sender, e) =\u003e Console.WriteLine($\"Barcode: {e.Barcode}\");\nbarcode.Start();\nbarcode.Stop();\nbarcode.FactoryReset();\n```\n\n**Events:**\n- `OnCapturedNotify` — Captured barcode data\n- `OnStateChanged` — Scanner state (`BarcodeState.IDLE`, `BUSY`)\n\n### Reader Properties\n\n```csharp\nreader.SelectedChannel;           // Current channel\nreader.SelectedRegionCode;        // Current region code\nreader.IsHoppingChannelOnly;      // Hopping-only mode\nreader.IsFixedChannelOnly;        // Fixed-channel-only mode\nreader.DeviceType;                // Reader type (Machine enum)\nreader.ChipSetID;                 // Chipset ID\n```\n\n## Project Structure\n\n```\nCSLibrary2026/\n├── Source/\n│   ├── CSLibrary.cs                     # Main library entry point\n│   ├── BluetoothProtocol/               # BLE protocol (send/receive/connect)\n│   ├── BluetoothIC/                     # Bluetooth IC wrapper\n│   ├── BarcodeReader/                   # Barcode scanning (Class, Constants, Events, Structures)\n│   ├── Battery/                         # Battery management\n│   ├── Notification/                    # System notifications\n│   ├── HAL/\n│   │   ├── Plugin.BLE/                  # Primary BLE backend (active)\n│   │   ├── MvvmCross.Plugin.BLE/        # MvvmCross BLE backend\n│   │   └── btframework/                 # wclBluetoothFramework DLLs\n│   └── RFIDReader/\n│       └── CSLUnifiedAPI/\n│           └── Basic_API/\n│               ├── CS108/                # CS108 reader API\n│               └── CS710S/              # CS710S reader API\n└── Properties/\n```\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n## Links\n\n- **GitHub Repository:** https://github.com/cslrfid/CSLibrary2026\n- **NuGet Package:** https://www.nuget.org/packages/CSLibrary2026\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcslrfid%2Fcslibrary2026","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcslrfid%2Fcslibrary2026","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcslrfid%2Fcslibrary2026/lists"}