Commit Graph

38 Commits

Author SHA1 Message Date
Foti Dim 8c75e3965f Integrate SharedPreferencesAsync for improved preferences handling
- Added a new `prefs_async.dart` file to encapsulate the usage of `SharedPreferencesAsync`.
- Updated `ScanController`, `StorageService`, and `ScannerScreen` to utilize the new async preferences methods, enhancing performance and code clarity.
- Modified `devtools_options.yaml` to enable the `shared_preferences` extension.
- Refactored the `FlashOnUpdateWidget` to improve the outline animation and added a customizable border radius.
- Adjusted the favorite services loading mechanism in `PeripheralDetailPage` to be asynchronous, ensuring better state management.
2026-02-09 22:24:41 +01:00
Foti Dim 485c0808ad Refactor Bluetooth availability handling in ScannerScreen and AppDrawer
- Removed the tooltip for Bluetooth availability from ScannerScreen and integrated the BleAvailabilityIcon directly into the AppDrawer.
- Updated the AppDrawer to accept Bluetooth availability state and a callback for state changes.
- Simplified button labels in ScannerScreen and ScannedDevicesPlaceholderWidget for clarity.
- Adjusted padding for buttons to enhance UI consistency.
2026-02-09 21:47:50 +01:00
Foti Dim 061e0ae633 Make scan button persistent 2026-02-09 21:23:29 +01:00
Foti Dim fc6ae39a53 Display advertisements 2026-02-07 13:01:32 +01:00
Foti Dim bcf65e4573 Improve example app (#210)
* Improve example app

- Introduced utility functions for sorting BLE services and filtering characteristics based on properties.
- Updated the peripheral detail page to support reading all characteristics and improved value formatting for better readability.
- Added navigation functionality for adjacent characteristics and integrated property filters in the services list widget.
- Enhanced the services side widget to manage selected properties and provide a clearer UI for service interactions.
- Implemented copy functionality for logs and improved overall user experience in the peripheral details section.

* Remove expandable

* Automatically start scanning on launch

* Show loading indicator for discovering services

* Decrease the height of TextFormField
2026-01-23 07:29:28 +01:00
Foti Dim 1334057a8a Show and filter by company name (#208)
* Update company identifier handling and enhance scanning features

- Updated `pubspec.lock` to version 1.2.0 and added `yaml` dependency.
- Introduced `CompanyIdentifierService` for loading and querying company identifiers from a new YAML file.
- Enhanced scanning functionality to support filtering by company names and IDs.
- Updated UI components to display company names alongside manufacturer data in scanned items.
- Improved search functionality to include company names in the filter criteria.

* Address AI comments

* Address AI comments

* Allow searching by company id

* Remove redundant loading state update in CompanyIdentifierService

* Enhance company ID parsing in CompanyIdentifierService

- Updated the `_parseCompanyId` method to support additional formats for company IDs, including non-prefixed strings interpreted as decimal or hexadecimal based on their content.
- Improved parsing logic to first attempt hexadecimal conversion if the string contains hex characters, enhancing flexibility in input handling.
2026-01-19 05:35:19 +01:00
Foti Dim bcfb0adc6a Improve format for discovered services (#209)
* Update the peripheral detail page to format and display discovered services more clearly, including characteristics.

* Address AI comments

* Refactor characteristic display format in peripheral detail page for improved clarity
2026-01-19 05:34:50 +01:00
Foti Dim 8557a46d05 Add auto-connect support (#206)
* Add autoConnect support

* Enhance autoConnect functionality for Bluetooth devices

- Added support for managing a set of auto-connect devices in both Android and iOS implementations.
- Updated connection and disconnection logic to handle auto-reconnect scenarios appropriately.
- Improved cleanup processes to prevent unwanted reconnections when devices are manually disconnected.

* Refactor connection button and add auto-reconnect toggle

- Updated the connection button layout for better UI consistency.
- Introduced an auto-reconnect toggle to manage automatic reconnections when devices become available.
- Enhanced connection and disconnection logic to respect the auto-connect setting.

* Update version to 1.2.0 and add CHANGELOG for new features

- Bumped version to 1.2.0.
- Added CHANGELOG.md detailing new features including support for `autoConnect` and UI updates for automatic reconnection.

* Improve readme

* Refactor variable naming for clarity in Bluetooth connection logic

- Changed variable name from `isAutoConnect` to `shouldAutoConnect` for better readability and understanding of its purpose in the connection state handling.

* Refactor connection handling in UniversalBlePlugin

- Simplified connection logic by always cleaning up internal state before sending connection change callbacks.
- Ensured GATT resources are only closed when autoConnect is disabled, allowing for better management of Bluetooth connections.

* Refactor disconnection handling in UniversalBlePlugin

- Introduced a new method `handlePeripheralDisconnection` to encapsulate disconnection logic, improving code readability and maintainability.
- Updated the `centralManager` methods to utilize the new disconnection handler, ensuring consistent behavior across connection state changes.

* Update darwin/Classes/UniversalBlePlugin.swift

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Foti Dim <fotios.dimanidis@a2zebra.de>
Co-authored-by: Navideck Labs <130186950+navidecklabs@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-16 11:36:24 +05:30
EricKwok 1adfa9b485 Implement readRSSI on Android and Darwin (#203) 2026-01-05 17:49:55 +01:00
Rohit Sangwan 895dcbe343 Improve example app UI (#193)
* Improve example app ui

* Store favorite services in local storage

* Use Text instead of SelectableText

* Improve colors

* Fix flutter analyzer issues

* Revert example app minimum sdk requirement

* Implement hasPermission api and improve ui flow

* More ui improvements

* Improve ScannedItem ui

* Improve control ui

* Change color theme to blue

* Minor improvements wip

* improve responsive ui and flow

* More improvements

* More improvements

* Update Mac podfile

* Fix home page scroll view

* Update app and package name

* Revert changelog

* Resolve Ai comments

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2025-12-21 08:51:36 +01:00
Rohit Sangwan 89abb3bf03 Implement Logging (#199)
* Implement Logging

* Add timestamp in OnValueChanged

* improve web and linux logging

* Implement windows and format pigeon

* Fix windows build and unity log level

* Log commands with timestamp

* Fix code doc

* Remove unnecessary import

* Update docs

* Fix crash on windows 11 because of failed pairing

* Update changelog

* Fix native code formatting
2025-12-12 18:56:43 +05:30
Rohit Sangwan 3116962e8c Implement characteristic descriptor discovery (#196)
* Implement characteristic descriptor discovery

* Improve Darwin services discovery

* Minor mac fix

* Implement Windows support

* discover descriptors in DiscoverServicesAsync api on windows

* Add withDescriptors in discoverServices api

* Implement withDescriptors for Apple and Android

* Fix ai comment and format pigeon generated file

* Resolve Ai comment

* Capitalize API

* Handle empty services scenario

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2025-12-10 11:36:04 +05:30
Rohit Sangwan 09bb22750a Improve disconnect api (#192)
* Improve disconnect api

* Get disconnection event on Web from callback

* Wait for disconnection result on calling disconnect

* Improve linux disconnection

* Update Changelog

* Fix Ai comments
2025-11-14 20:20:22 +05:30
Rohit Sangwan d56851cbfb Wait for writeWithoutResponse completion (#166)
* Wait for writeWithoutResponse request completion on Android

* Wait for writeWithoutResponse request completion on Darwin

* Add WriteWithoutResponse button in example app

* Update changelog and bump version

* Apply suggestions from code review

Co-authored-by: Foti Dim <foti@navideck.com>

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2025-06-26 08:05:59 +02:00
Rohit Sangwan 0758f5e91d Add high level API (#160)
* Add high-level api extensions for BleDevice and Characteristic

* Add doc comments and move few files to utils

* Add advance documentation

* Make the high level APIs the new default in the readme

* More readme cleanups

* Add pair api, improve notifications apis and deprecate writeValue

* Use highLevel apis in Example

* Rename HighLevel isPaired api to hasPairing api

* Update Readme

* Rename low level readValue api to read and update Readme

* Update UniversalBle to use new apis instead of deprecated internally

* Split queueCommand and queueCommandWithoutTimeout

* Split setNotifiable into subscribeNotifications, subscribeIndications and unsubscribe

* Fix web imports

* Update changelog

* Switch back to isPaired

Co-authored-by: Rohit Sangwan <rohitsangwan647@gmail.com>

* Fix BleDevice toString method

* Switch back to isPaired

* Change peripheral to device

* Rename cached to preferCached

* Remove preferCached from discoverServices()

* Update changelog

* Use cached services

* Add ///

* Reverse withoutResponse to withResponse to avoid negation

* Link to low level API

* Move connectionState to public readme

* Rename disableSubscriptions to unsubscribe

* Improve documentation

* Fix getService cache

* Add NotFoundException

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2025-06-19 13:02:14 +02:00
Foti Dim fa98d2989b Switch to flutter_lints: ^6.0.0 2025-05-29 21:35:04 +02:00
Jonas Greifenhain 5124bcdfcf example: Don't disconnect on leaving the details page 2025-05-29 08:32:03 +02:00
Foti Dim dd75894244 Only show ScanFilter warning on web 2024-12-18 10:33:31 +01:00
Foti Dim 62c0fc8fb3 Print discovered services 2024-10-23 17:49:06 +03:00
Rohit Sangwan b77d0aaeb4 Add error in connection updates (#89)
* Add error in connection updates

* implement windows

* Update changelog and Docs

* minor fix in connect()

* Add default timeout in connect

* Document new pair and connect API

* Fix Connect and Pair apis to throw proper errors and Improve logging

* remove import

* Rename PairingException and update Exception doc

* Update changelog

* Update comments

---------

Co-authored-by: Foti Dim <fdimanidis@gmail.com>
2024-09-26 23:08:25 +02:00
Foti Dim 3ecbcb9b43 Rename in-app pairing capabilities (#88) 2024-09-23 07:13:41 +02:00
Rohit Sangwan 7dc22c58a5 Improve scan filter api (#78)
* Improve scan filter api

* Implement Windows filters

* Add manufacturerDataList and deprecate manufacturerData

* Fix Windows

* Update Readme and changelog

* Remove import

* Fix Linux

* Update readme and changelog

* Cleanup Todo

* Improve ManufacturerData

* Rename webConfig and Manufacturer.data

* Return false for receivesAdvertisements on Linux/Web

* Add delay in discoverServices on Linux

* Remove import

* Update changelog

---------

Co-authored-by: fotidim <foti@navideck.com>
2024-09-16 23:43:51 +02:00
fotidim 639384af30 Make pair button disabled if not supported
Co-authored-by: Rohit Sangwan <rohitsangwan647@gmail.com>
2024-08-17 18:50:27 +02:00
Rohit Sangwan f7c05b2490 Remove error from onPairingStateChange (#75)
* Remove error from onPairingStateChange

* Update ChangeLog and Readme

* Update Changelog
2024-08-13 16:19:21 +02:00
Foti Dim 40819d5796 Return pair result 2024-08-12 21:15:56 +02:00
Foti Dim 7606e8fd29 Implement pairing on Apple (#59) 2024-08-09 22:42:40 +02:00
Rohit Sangwan 5ce6c3d362 Improve web support (#66)
* Improve web support

* Rename to _hasSelectedCharacteristicProperty

* Update comment

* Make _bleService private

---------

Co-authored-by: Foti Dim <fdimanidis@gmail.com>
2024-07-31 09:28:50 +02:00
Rohit Sangwan 28b0bc6b7c Add platform specific options in start scan (#65)
* Add platform specific options in start scan

* Add code level doc and ChangeLog

* Minor improvements
2024-07-21 17:05:29 +02:00
Rohit Sangwan 0d6b612497 Receive advertisement events on web (#63)
* Fix web manufacturer discovery

* Minor Fixes

* Cleanups

* Add canWatchAdvertisements api

* Improve Cleanups

* Improve code level documentation

* Improve documentation

---------

Co-authored-by: Foti Dim <fdimanidis@gmail.com>
2024-07-19 10:39:49 +02:00
Rohit Sangwan 44412508e7 Implement scan filter in example app (#61)
* Implement scan filter in example app

* Remove Fixed FlutterVersion from Workflow and improve ScanFilterWidget

* Update example/lib/home/widgets/scan_filter_widget.dart

* Update example/lib/home/widgets/scan_filter_widget.dart

* Update example/lib/peripheral_details/peripheral_detail_page.dart

* Improve text

---------

Co-authored-by: Foti Dim <foti@navideck.com>
Co-authored-by: Foti Dim <fdimanidis@gmail.com>
2024-07-12 17:24:00 +02:00
Rohit Sangwan 8d0cfe98d9 Add connecting and disconnecting states to BleConnectionState (#54)
* Add connecting and disconnecting state

* Replace BleConnectionState with boolean in onConnectionChanged callback

* Improve Docs and Changelog

* Implement GetConnectionState in Windows

* Update CHANGELOG.md

Co-authored-by: Foti Dim <foti@navideck.com>

* Add  code level doc of connectionState getter

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2024-06-20 20:47:02 +02:00
Foti Dim 15453eb28f Rename onConnectionChanged and onValueChanged
Update changelog
Format files
2024-06-15 09:13:01 +02:00
Foti Dim 6361574b77 Add connection properties in BleDevice (#50)
* Rename to BleDevice

* Add isConnected property

* Make isConnected true

* Add isConnected api

* Implement Windows

* Merge add-isConnected-api

* Rename getConnectedDevices to getSystemDevices

* Add code level Doc for isConnected

* Add isPaired

* Revert isPaired

* Add isSystemDevice property in BleDevice

* Return enum instead of bool

---------

Co-authored-by: Rohit Sangwan <rohitsangwan647@gmail.com>
2024-06-13 16:14:54 +02:00
Rohit Sangwan b74191bb97 Implement pairing with dialog on windows (#46)
* Implement pairing with dialog on windows

* Minor fix

* Add pin pairing request for windows 10

* Implement native windows dialog for asking pin pairing

* Cleanups

* Improve pairing dialog ui

* Use PairAsync for Windows 11

* Fix OK button text

* Improve pin entry layout

Co-authored-by: Rohit Sangwan <rohitsangwan647@gmail.com>

* Dialog adjustments

* Make dialog non resizable

* Make window topmost

* Final adjustments

* Update changelog

* Release dialog resources properly

* Release dialog resources properly

* Remove duplicate import

* Minor Fix

---------

Co-authored-by: fotidim <foti@navideck.com>
2024-06-11 12:28:25 +02:00
Foti Dim 3be945c3d5 Improve manufacturer data discovery on Windows (#38)
* Improve manufacturer data discovery on Windows

* Switch pairing protection level to encrypted in Windows

* Minor UI improvement in example app

* Update windows/src/universal_ble_plugin.h

* Remove minimum DevicePairingProtectionLevel

* Improve logging

* Bump version

---------

Co-authored-by: Rohit Sangwan <rohitsangwan647@gmail.com>
2024-05-02 00:09:44 +02:00
fotidim 56f2a09a67 Show device name in details page
Allows service and characteristic to be selectable
2024-05-01 23:18:05 +02:00
Rohit Sangwan 2326e598cf Improve web (#3)
* Improve web example app

* Improve readme

* Minor improvements

* add github workflow for example app

* Fix flutter version in github action

* Fix flutter version in github action

* Fix flutter version in github action

* Fix flutter version in github action

* Minor fix

* Minor fixes

* Update readme and version

* Update Changelog

* Improve wording

* Update CHANGELOG.md

Co-authored-by: Foti Dim <foti@navideck.com>

---------

Co-authored-by: Foti Dim <fdimanidis@gmail.com>
Co-authored-by: Foti Dim <foti@navideck.com>
2024-01-26 14:05:48 +01:00
Rohit Sangwan 531b6139c4 Improve example app (#2)
* Improve example app

* Accept list of hex values in write value field

* Minor fix

---------

Co-authored-by: Foti Dim <foti@navideck.com>
2024-01-25 18:55:49 +01:00