BasedHardware / omi

AI wearables
https://omi.me
MIT License
3.29k stars 389 forks source link

Add Device Service with discover to desireable device #833

Closed beastoin closed 3 days ago

beastoin commented 5 days ago

Issue: #787

Summary by Entelligence.AI

github-actions[bot] commented 5 days ago

Image description Entelligence.AI

Walkthrough

This pull request introduces a new DeviceService class for managing Bluetooth devices, refactors existing code to improve readability and maintainability, and updates function visibility. It also includes changes to how device connections are handled, with the introduction of a DeviceConnectionFactory class and modifications to various providers and services.

Changes

Files Summary
app/lib/services/devices.dart,
app/lib/services/services.dart,
app/lib/providers/onboarding_provider.dart,
app/lib/services/device_connections.dart,
app/lib/providers/speech_profile_provider.dart
Introduced a DeviceService class for managing Bluetooth devices and handling subscriptions. Updated ServiceManager to use this new service. Added a DeviceConnectionFactory class for creating device connections based on device types. Updated OnboardingProvider and SpeechProfileProvider classes to incorporate these changes.
app/lib/main.dart Added a TODO comment to move a function call to app start in the _init function.
app/lib/pages/home/device.dart,
app/lib/pages/home/device_settings.dart,
app/lib/pages/home/firmware_mixin.dart,
app/lib/utils/ble/connect.dart
Introduced a new method _bleDisconnectDevice to handle disconnection of a Bluetooth device. Renamed bleConnectDevice and bleDisconnectDevice to _bleConnectDevice and _bleDisconnectDevice, making them private.
app/lib/providers/capture_provider.dart,
app/lib/pages/capture/logic/openglass_mixin.dart
Refactored the code by moving certain functionality into private methods. Introduced new functions in OpenGlassMixin mixin to handle interactions with device connections.
app/lib/backend/schema/bt_device.dart,
app/lib/pages/home/device.dart
Modified the getDeviceInfo method to accept a DeviceConnection parameter. Updated the code to use the provided conn object to interact with Bluetooth services.
app/lib/pages/memories/widgets/capture.dart,
app/lib/pages/onboarding/wrapper.dart,
app/lib/pages/speaker_id/page.dart
Replaced direct usage of Communication with ServiceManager for device connection. Added _getAudioCodec method to retrieve audio codec.
app/lib/services/device_connections.dart Introduced a new DeviceConnectionFactory class for creating device connections based on device types.
app/lib/utils/ble/gatt_utils.dart Renamed and updated the visibility of several functions in the Bluetooth service handling code, making them private.

🎉 Here's to the code that we've refactored,
To the bugs that we've battled and slaughtered.
With each line that we tweak,
It's perfection we seek,
In the realm of Bluetooth devices ordered. 🎉


Uplevel your code reviews with Entelligence.AI Pro ### Entelligence.AI Pro If you like this project, please support us by purchasing the [Pro version](https://Entelligence.AI.ai). The Pro version has advanced context, superior noise reduction and several proprietary improvements compared to the open source version. Moreover, Entelligence.AI Pro is free for open source projects.