From 6befb641f9a7014cb84c0bc6ffdbcb3f55eb9907 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 13:57:50 +0100 Subject: [PATCH 01/23] feat(apps/compatibility): enhance wearable compatibility logic with new AppRequirement structure --- .../lib/apps/widgets/app_compatibility.dart | 166 ++++++++++++++++-- open_wearable/lib/apps/widgets/app_tile.dart | 32 ++-- open_wearable/lib/apps/widgets/apps_page.dart | 49 +++--- .../lib/apps/widgets/select_earable_view.dart | 8 +- .../apps/widgets/app_compatibility_test.dart | 121 ++++++++++++- 5 files changed, 316 insertions(+), 60 deletions(-) diff --git a/open_wearable/lib/apps/widgets/app_compatibility.dart b/open_wearable/lib/apps/widgets/app_compatibility.dart index 8a0e85ff..a655f108 100644 --- a/open_wearable/lib/apps/widgets/app_compatibility.dart +++ b/open_wearable/lib/apps/widgets/app_compatibility.dart @@ -1,5 +1,14 @@ +import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:open_wearable/models/device_name_formatter.dart'; +typedef WearablePredicate = bool Function(Wearable wearable); +typedef CapabilityPredicate = bool Function(T capability, Wearable wearable); + +/// Returns whether [wearableName] matches the given user-facing [prefix]. +/// +/// Matching checks both the raw device name and the formatted display name so +/// aliases such as OpenRing `bcl-*` names remain compatible with prefix-based +/// app rules. bool wearableNameStartsWithPrefix(String wearableName, String prefix) { final normalizedPrefix = prefix.trim().toLowerCase(); final normalizedWearableName = wearableName.trim().toLowerCase(); @@ -20,21 +29,154 @@ bool wearableNameStartsWithPrefix(String wearableName, String prefix) { return formattedWearableName.startsWith(normalizedPrefix); } +/// A composable compatibility rule evaluated against a [Wearable]. +/// +/// Apps typically combine multiple requirements via [allOf] and [anyOf] and +/// then attach them to one or more [AppSupportOption] entries. +sealed class AppRequirement { + const AppRequirement(); + + /// Returns whether this requirement is satisfied by [wearable]. + bool matches(Wearable wearable); + + /// Matches every wearable. + const factory AppRequirement.always() = _AlwaysRequirement; + + /// Matches wearables whose raw or formatted name starts with [prefix]. + const factory AppRequirement.nameStartsWith(String prefix) = + _WearableNamePrefixRequirement; + + /// Matches wearables that satisfy every requirement in [requirements]. + const factory AppRequirement.allOf(List requirements) = + _AllOfRequirement; + + /// Matches wearables that satisfy at least one requirement in [requirements]. + /// + /// An empty [requirements] list matches every wearable. + const factory AppRequirement.anyOf(List requirements) = + _AnyOfRequirement; + + /// Matches wearables that expose capability [T]. + static AppRequirement hasCapability() => _HasCapabilityRequirement(); + + /// Matches wearables that expose capability [T] and satisfy [predicate]. + static AppRequirement capability(CapabilityPredicate predicate) { + return _CapabilityPredicateRequirement(predicate); + } + + /// Matches wearables for which [predicate] returns `true`. + /// + /// Prefer the typed helpers above when possible; this method is the escape + /// hatch for custom compatibility logic. + static AppRequirement custom(WearablePredicate predicate) { + return _CustomRequirement(predicate); + } +} + +final class _AlwaysRequirement extends AppRequirement { + const _AlwaysRequirement(); + + @override + bool matches(Wearable wearable) => true; +} + +final class _WearableNamePrefixRequirement extends AppRequirement { + final String prefix; + + const _WearableNamePrefixRequirement(this.prefix); + + @override + bool matches(Wearable wearable) { + return wearableNameStartsWithPrefix(wearable.name, prefix); + } +} + +final class _HasCapabilityRequirement extends AppRequirement { + const _HasCapabilityRequirement(); + + @override + bool matches(Wearable wearable) => wearable.hasCapability(); +} + +final class _CapabilityPredicateRequirement extends AppRequirement { + final CapabilityPredicate predicate; + + const _CapabilityPredicateRequirement(this.predicate); + + @override + bool matches(Wearable wearable) { + final capability = wearable.getCapability(); + return capability != null && predicate(capability, wearable); + } +} + +final class _CustomRequirement extends AppRequirement { + final WearablePredicate predicate; + + const _CustomRequirement(this.predicate); + + @override + bool matches(Wearable wearable) => predicate(wearable); +} + +final class _AllOfRequirement extends AppRequirement { + final List requirements; + + const _AllOfRequirement(this.requirements); + + @override + bool matches(Wearable wearable) { + return requirements.every((requirement) => requirement.matches(wearable)); + } +} + +final class _AnyOfRequirement extends AppRequirement { + final List requirements; + + const _AnyOfRequirement(this.requirements); + + @override + bool matches(Wearable wearable) { + if (requirements.isEmpty) { + return true; + } + return requirements.any((requirement) => requirement.matches(wearable)); + } +} + +/// A user-visible supported-device entry for an app. +/// +/// The [label] is shown in the apps UI, while [requirement] defines which +/// wearables actually match that support option. +final class AppSupportOption { + final String label; + final AppRequirement requirement; + + const AppSupportOption({ + required this.label, + required this.requirement, + }); + + bool matches(Wearable wearable) => requirement.matches(wearable); +} + +/// Returns whether [wearable] is compatible with an app. +/// +/// Compatibility is defined as matching at least one entry in +/// [supportedDevices]. An empty [supportedDevices] list means the app supports +/// every wearable. bool wearableIsCompatibleWithApp({ - required String wearableName, - required List supportedDevicePrefixes, + required Wearable wearable, + required List supportedDevices, }) { - if (supportedDevicePrefixes.isEmpty) return true; - return supportedDevicePrefixes.any( - (prefix) => wearableNameStartsWithPrefix(wearableName, prefix), - ); + if (supportedDevices.isEmpty) return true; + return supportedDevices.any((device) => device.matches(wearable)); } -bool hasConnectedWearableForPrefix({ - required String devicePrefix, - required Iterable connectedWearableNames, +/// Returns whether any connected wearable matches the given support option. +bool hasConnectedWearableForOption({ + required AppSupportOption supportedDevice, + required Iterable connectedWearables, }) { - return connectedWearableNames.any( - (name) => wearableNameStartsWithPrefix(name, devicePrefix), - ); + return connectedWearables.any(supportedDevice.matches); } diff --git a/open_wearable/lib/apps/widgets/app_tile.dart b/open_wearable/lib/apps/widgets/app_tile.dart index 3c878bfe..36bf1c4e 100644 --- a/open_wearable/lib/apps/widgets/app_tile.dart +++ b/open_wearable/lib/apps/widgets/app_tile.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:open_wearable/apps/widgets/app_compatibility.dart'; import 'package:open_wearable/apps/widgets/apps_page.dart'; import 'package:open_wearable/models/app_launch_session.dart'; @@ -8,13 +9,13 @@ import 'package:open_wearable/models/app_launch_session.dart'; class AppTile extends StatelessWidget { final AppInfo app; final bool isEnabled; - final List connectedWearableNames; + final List connectedWearables; const AppTile({ super.key, required this.app, required this.isEnabled, - required this.connectedWearableNames, + required this.connectedWearables, }); @override @@ -22,7 +23,7 @@ class AppTile extends StatelessWidget { final theme = Theme.of(context); final orderedSupportedDevices = _orderedSupportedDevices( app.supportedDevices, - connectedWearableNames, + connectedWearables, ); final titleStyle = theme.textTheme.titleMedium?.copyWith( fontWeight: FontWeight.w700, @@ -132,11 +133,10 @@ class AppTile extends StatelessWidget { children: orderedSupportedDevices .map( (device) => _SupportedDeviceChip( - text: device, - isConnected: hasConnectedWearableForPrefix( - devicePrefix: device, - connectedWearableNames: - connectedWearableNames, + text: device.label, + isConnected: hasConnectedWearableForOption( + supportedDevice: device, + connectedWearables: connectedWearables, ), isEnabled: isEnabled, ), @@ -154,17 +154,17 @@ class AppTile extends StatelessWidget { ); } - List _orderedSupportedDevices( - List supportedDevices, - List connectedWearables, + List _orderedSupportedDevices( + List supportedDevices, + List connectedWearables, ) { - final connected = []; - final notConnected = []; + final connected = []; + final notConnected = []; for (final device in supportedDevices) { - final isConnected = hasConnectedWearableForPrefix( - devicePrefix: device, - connectedWearableNames: connectedWearables, + final isConnected = hasConnectedWearableForOption( + supportedDevice: device, + connectedWearables: connectedWearables, ); if (isConnected) { connected.add(device); diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 024e656c..8e5ee98f 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -18,7 +18,7 @@ class AppInfo { final String logoPath; final String title; final String description; - final List supportedDevices; + final List supportedDevices; final Color accentColor; final Widget widget; final double? svgIconInset; @@ -39,12 +39,21 @@ class AppInfo { } const Color _appAccentColor = Color(0xFF9A6F6B); -const List _postureSupportedDevices = [ - "OpenEarable", +final List _postureSupportedDevices = [ + const AppSupportOption( + label: 'OpenEarable', + requirement: AppRequirement.nameStartsWith('OpenEarable'), + ), ]; -const List _heartSupportedDevices = [ - "OpenEarable", - "OpenRing", +final List _heartSupportedDevices = [ + const AppSupportOption( + label: 'OpenEarable', + requirement: AppRequirement.nameStartsWith('OpenEarable'), + ), + const AppSupportOption( + label: 'OpenRing', + requirement: AppRequirement.nameStartsWith('OpenRing'), + ), ]; Sensor? _findOpticalTemperatureSensor(List sensors) { @@ -91,7 +100,7 @@ final List _apps = [ supportedDevices: _postureSupportedDevices, accentColor: _appAccentColor, widget: SelectEarableView( - supportedDevicePrefixes: _postureSupportedDevices, + supportedDevices: _postureSupportedDevices, startApp: (wearable, sensorConfigProvider) async { return PostureTrackerView( EarableAttitudeTracker( @@ -112,7 +121,7 @@ final List _apps = [ supportedDevices: _heartSupportedDevices, accentColor: _appAccentColor, widget: SelectEarableView( - supportedDevicePrefixes: _heartSupportedDevices, + supportedDevices: _heartSupportedDevices, startApp: (wearable, _) async { if (wearable.hasCapability()) { final sensors = wearable.requireCapability().sensors; @@ -174,14 +183,13 @@ final List _apps = [ int getAvailableAppsCount() => _apps.length; int getCompatibleAppsCountForWearables(Iterable wearables) { - final names = wearables.map((wearable) => wearable.name).toList(); - if (names.isEmpty) return 0; + if (wearables.isEmpty) return 0; return _apps.where((app) { - return names.any( - (name) => wearableIsCompatibleWithApp( - wearableName: name, - supportedDevicePrefixes: app.supportedDevices, + return wearables.any( + (wearable) => wearableIsCompatibleWithApp( + wearable: wearable, + supportedDevices: app.supportedDevices, ), ); }).length; @@ -194,17 +202,14 @@ class AppsPage extends StatelessWidget { Widget build(BuildContext context) { final connectedWearables = context.watch().wearables; final connectedCount = connectedWearables.length; - final connectedWearableNames = connectedWearables - .map((wearable) => wearable.name) - .toList(growable: false); final enabledApps = <_AppListEntry>[]; final disabledApps = <_AppListEntry>[]; for (final app in _apps) { - final isEnabled = connectedWearableNames.any( - (wearableName) => wearableIsCompatibleWithApp( - wearableName: wearableName, - supportedDevicePrefixes: app.supportedDevices, + final isEnabled = connectedWearables.any( + (wearable) => wearableIsCompatibleWithApp( + wearable: wearable, + supportedDevices: app.supportedDevices, ), ); final entry = _AppListEntry(app: app, isEnabled: isEnabled); @@ -251,7 +256,7 @@ class AppsPage extends StatelessWidget { (entry) => AppTile( app: entry.app, isEnabled: entry.isEnabled, - connectedWearableNames: connectedWearableNames, + connectedWearables: connectedWearables, ), ), ], diff --git a/open_wearable/lib/apps/widgets/select_earable_view.dart b/open_wearable/lib/apps/widgets/select_earable_view.dart index cc367ccd..ba938620 100644 --- a/open_wearable/lib/apps/widgets/select_earable_view.dart +++ b/open_wearable/lib/apps/widgets/select_earable_view.dart @@ -15,12 +15,12 @@ class SelectEarableView extends StatefulWidget { Wearable, SensorConfigurationProvider, ) startApp; - final List supportedDevicePrefixes; + final List supportedDevices; const SelectEarableView({ super.key, required this.startApp, - this.supportedDevicePrefixes = const [], + this.supportedDevices = const [], }); @override @@ -44,8 +44,8 @@ class _SelectEarableViewState extends State { final compatibleWearables = wearablesProvider.wearables .where( (wearable) => wearableIsCompatibleWithApp( - wearableName: wearable.name, - supportedDevicePrefixes: widget.supportedDevicePrefixes, + wearable: wearable, + supportedDevices: widget.supportedDevices, ), ) .toList(growable: false); diff --git a/open_wearable/test/apps/widgets/app_compatibility_test.dart b/open_wearable/test/apps/widgets/app_compatibility_test.dart index 4c729438..0c77e51d 100644 --- a/open_wearable/test/apps/widgets/app_compatibility_test.dart +++ b/open_wearable/test/apps/widgets/app_compatibility_test.dart @@ -1,6 +1,26 @@ +import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:open_wearable/apps/widgets/app_compatibility.dart'; +class _FakeCapability { + final String mode; + + const _FakeCapability(this.mode); +} + +class _FakeWearable extends Wearable { + @override + final String deviceId; + + _FakeWearable({ + required super.name, + required this.deviceId, + }) : super(disconnectNotifier: WearableDisconnectNotifier()); + + @override + Future disconnect() async {} +} + void main() { group('wearableNameStartsWithPrefix', () { test('matches OpenRing prefixes for raw bcl names', () { @@ -17,22 +37,111 @@ void main() { }); test('wearableIsCompatibleWithApp accepts OpenRing with bcl name', () { + final wearable = _FakeWearable( + name: 'bcl-0001', + deviceId: 'ring-1', + ); + expect( wearableIsCompatibleWithApp( - wearableName: 'bcl-0001', - supportedDevicePrefixes: const ['OpenRing'], + wearable: wearable, + supportedDevices: const [ + AppSupportOption( + label: 'OpenRing', + requirement: AppRequirement.nameStartsWith('OpenRing'), + ), + ], ), isTrue, ); }); - test('hasConnectedWearableForPrefix supports OpenRing prefixes', () { + test('hasConnectedWearableForOption supports OpenRing prefixes', () { + final wearable = _FakeWearable( + name: 'bcl-0012', + deviceId: 'ring-2', + ); + expect( - hasConnectedWearableForPrefix( - devicePrefix: 'OpenRing', - connectedWearableNames: const ['bcl-0012'], + hasConnectedWearableForOption( + supportedDevice: const AppSupportOption( + label: 'OpenRing', + requirement: AppRequirement.nameStartsWith('OpenRing'), + ), + connectedWearables: [wearable], ), isTrue, ); }); + + test('supports composite requirements with capability presence', () { + final compatibleWearable = _FakeWearable( + name: 'OpenEarable-2', + deviceId: 'oe-1', + )..registerCapability(const _FakeCapability('tracking')); + final incompatibleWearable = _FakeWearable( + name: 'OpenEarable-2', + deviceId: 'oe-2', + ); + + final supportedDevice = AppSupportOption( + label: 'Tracking Earable', + requirement: AppRequirement.allOf([ + AppRequirement.nameStartsWith('OpenEarable'), + AppRequirement.hasCapability<_FakeCapability>(), + ]), + ); + + expect( + wearableIsCompatibleWithApp( + wearable: compatibleWearable, + supportedDevices: [supportedDevice], + ), + isTrue, + ); + expect( + wearableIsCompatibleWithApp( + wearable: incompatibleWearable, + supportedDevices: [supportedDevice], + ), + isFalse, + ); + }); + + test('supports matching specific capability property values', () { + final leftWearable = _FakeWearable( + name: 'OpenEarable-Left', + deviceId: 'oe-left', + )..registerCapability(const _FakeCapability('left')); + final rightWearable = _FakeWearable( + name: 'OpenEarable-Right', + deviceId: 'oe-right', + )..registerCapability(const _FakeCapability('right')); + + final supportedDevice = AppSupportOption( + label: 'Left tracker', + requirement: AppRequirement.capability<_FakeCapability>( + _matchesLeftCapability, + ), + ); + + expect( + wearableIsCompatibleWithApp( + wearable: leftWearable, + supportedDevices: [supportedDevice], + ), + isTrue, + ); + expect( + wearableIsCompatibleWithApp( + wearable: rightWearable, + supportedDevices: [supportedDevice], + ), + isFalse, + ); + }); +} + +bool _matchesLeftCapability(_FakeCapability capability, Wearable wearable) { + return capability.mode == 'left'; } From d334e64338dd24f90ac4b745394333c904644ca4 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 13:57:56 +0100 Subject: [PATCH 02/23] feat(docs): add App Compatibility Framework documentation and update README links --- open_wearable/docs/app-compatibility.md | 139 ++++++++++++++++++++++++ open_wearable/docs/pages/README.md | 4 + open_wearable/docs/pages/apps-pages.md | 19 +++- 3 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 open_wearable/docs/app-compatibility.md diff --git a/open_wearable/docs/app-compatibility.md b/open_wearable/docs/app-compatibility.md new file mode 100644 index 00000000..17d8afe1 --- /dev/null +++ b/open_wearable/docs/app-compatibility.md @@ -0,0 +1,139 @@ +# App Compatibility Framework + +This document describes how mini-apps declare which wearables they support. + +## Overview + +App compatibility is defined in `lib/apps/widgets/app_compatibility.dart`. + +The framework is built around two concepts: + +- `AppSupportOption`: one user-visible supported-device entry shown in the app UI. +- `AppRequirement`: the matcher behind that entry. + +An app declares a list of `AppSupportOption`s. A wearable is compatible when it +matches at least one option. + +## Core Types + +### `AppSupportOption` + +`AppSupportOption` contains: + +- `label`: text shown in the supported-devices chips. +- `requirement`: the rule that determines whether a `Wearable` matches. + +Example: + +```dart +const AppSupportOption( + label: 'OpenRing', + requirement: AppRequirement.nameStartsWith('OpenRing'), +) +``` + +### `AppRequirement` + +`AppRequirement` is a composable predicate over a `Wearable`. + +Available builders: + +- `AppRequirement.always()` + - Matches every wearable. +- `AppRequirement.nameStartsWith(prefix)` + - Matches by raw or formatted wearable name prefix. +- `AppRequirement.hasCapability()` + - Matches if the wearable exposes capability `T`. +- `AppRequirement.capability((capability, wearable) => ...)` + - Matches if the wearable has capability `T` and the predicate returns `true`. +- `AppRequirement.custom((wearable) => ...)` + - Escape hatch for any custom wearable-level predicate. +- `AppRequirement.allOf([...])` + - Logical `AND`. +- `AppRequirement.anyOf([...])` + - Logical `OR`. + +## Matching Semantics + +- An app with no `supportedDevices` is treated as compatible with every wearable. +- A wearable matches an app when it satisfies any `AppSupportOption`. +- `nameStartsWith` uses both the raw wearable name and the formatted display + name, so aliases such as OpenRing `bcl-*` names continue to work. + +## Defining App Support + +Apps define support in `lib/apps/widgets/apps_page.dart` inside the app catalog. + +Simple example: + +```dart +final List supportedDevices = [ + const AppSupportOption( + label: 'OpenEarable', + requirement: AppRequirement.nameStartsWith('OpenEarable'), + ), + const AppSupportOption( + label: 'OpenRing', + requirement: AppRequirement.nameStartsWith('OpenRing'), + ), +]; +``` + +Capability-based example: + +```dart +final List supportedDevices = [ + AppSupportOption( + label: 'Configurable OpenEarable', + requirement: AppRequirement.allOf([ + AppRequirement.nameStartsWith('OpenEarable'), + AppRequirement.hasCapability(), + ]), + ), +]; +``` + +Capability-property example: + +```dart +final List supportedDevices = [ + AppSupportOption( + label: 'Left OpenEarable', + requirement: AppRequirement.allOf([ + AppRequirement.nameStartsWith('OpenEarable'), + AppRequirement.capability( + (stereo, _) => stereo.position == DevicePosition.left, + ), + ]), + ), +]; +``` + +## Where It Is Used + +The same compatibility model is used in both places: + +- `AppsPage`: enables or disables app tiles depending on connected wearables. +- `SelectEarableView`: filters the list of selectable wearables before app launch. + +This keeps the tile state and the picker behavior aligned. + +## Guidance + +- Prefer capability-based requirements when the app depends on runtime device + features. +- Use name-based requirements only when device family is the real constraint. +- Keep `label` concise and user-facing. +- If one app supports multiple device configurations, model them as multiple + `AppSupportOption`s instead of a single opaque predicate. + +## Tests + +Compatibility behavior is covered in `test/apps/widgets/app_compatibility_test.dart`. + +Current tests cover: + +- OpenRing alias name matching +- composite requirements +- capability presence +- capability property checks diff --git a/open_wearable/docs/pages/README.md b/open_wearable/docs/pages/README.md index b9b24f15..d97110cb 100644 --- a/open_wearable/docs/pages/README.md +++ b/open_wearable/docs/pages/README.md @@ -14,3 +14,7 @@ This section documents the app pages in a consistent format: - [Settings and Logging Pages](./settings-and-logging-pages.md) - [Apps Pages](./apps-pages.md) - [Firmware Update (FOTA) Pages](./fota-pages.md) + +## Related Documentation + +- [App Compatibility Framework](../app-compatibility.md) diff --git a/open_wearable/docs/pages/apps-pages.md b/open_wearable/docs/pages/apps-pages.md index 0b56b008..cd65c245 100644 --- a/open_wearable/docs/pages/apps-pages.md +++ b/open_wearable/docs/pages/apps-pages.md @@ -2,19 +2,20 @@ ## `AppsPage` (`lib/apps/widgets/apps_page.dart`) - Needs: - - `WearablesProvider` for connected wearable names. + - `WearablesProvider` for connected wearables. - App catalog entries (`_apps`) with compatibility metadata. - Does: - Computes enabled/disabled app tiles based on compatible connected devices. - Renders app catalog and app-level status summary. - Provides: - Launch entry point for mini-app experiences. + - Reuses the app compatibility framework documented in `docs/app-compatibility.md`. ## `SelectEarableView` (`lib/apps/widgets/select_earable_view.dart`) - Needs: - Constructor inputs: - `startApp(Wearable, SensorConfigurationProvider)` callback - - `supportedDevicePrefixes` + - `supportedDevices` - `WearablesProvider` with sensor config providers for candidate devices. - Does: - Filters connected wearables by app compatibility. @@ -22,6 +23,20 @@ - Provides: - Compatibility-safe wearable picker for app flows. +## Compatibility Model + +- App compatibility is implemented in `lib/apps/widgets/app_compatibility.dart`. +- Apps declare `List` instead of raw supported-device prefix strings. +- Each `AppSupportOption` combines: + - a user-facing `label` + - an `AppRequirement` matcher +- `AppRequirement` supports: + - wearable name matching + - capability presence checks + - capability property predicates + - logical composition with `allOf` and `anyOf` +- Full details and examples are documented in `docs/app-compatibility.md`. + ## `HeartTrackerPage` (`lib/apps/heart_tracker/widgets/heart_tracker_page.dart`) - Needs: - Constructor inputs: From 9726e321df6aafddbff32a069a6dcff65cc1dd2c Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 14:19:07 +0100 Subject: [PATCH 03/23] feat(apps/posture-tracker): add accelerometer support option for posture tracking --- open_wearable/lib/apps/widgets/apps_page.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 8e5ee98f..5e03fc24 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -44,6 +44,10 @@ final List _postureSupportedDevices = [ label: 'OpenEarable', requirement: AppRequirement.nameStartsWith('OpenEarable'), ), + AppSupportOption( + label: "Accelerometer", + requirement: AppRequirement.capability(_hasAccelerometerSensor), + ), ]; final List _heartSupportedDevices = [ const AppSupportOption( @@ -92,6 +96,19 @@ Sensor? _findOpticalTemperatureSensor(List sensors) { return null; } +bool _hasAccelerometerSensor(SensorManager sensorManager, Wearable wearable) { + for (final sensor in sensorManager.sensors) { + final text = '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); + if (text.contains('accelerometer') || + text.contains('accel') || + text.contains('acc')) { + return true; + } + } + + return false; +} + final List _apps = [ AppInfo( logoPath: "lib/apps/posture_tracker/assets/logo.png", From 97dad0e026245a4c7d3e83728ddaa4d247355453 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 14:43:08 +0100 Subject: [PATCH 04/23] feat(apps/sensor-matching): implement sensor matching utilities for accelerometer and PPG detection --- .../lib/apps/models/sensor_matching.dart | 64 +++++++++++++++++++ .../model/earable_attitude_tracker.dart | 10 ++- open_wearable/lib/apps/widgets/apps_page.dart | 39 ++--------- 3 files changed, 76 insertions(+), 37 deletions(-) create mode 100644 open_wearable/lib/apps/models/sensor_matching.dart diff --git a/open_wearable/lib/apps/models/sensor_matching.dart b/open_wearable/lib/apps/models/sensor_matching.dart new file mode 100644 index 00000000..8ecb699e --- /dev/null +++ b/open_wearable/lib/apps/models/sensor_matching.dart @@ -0,0 +1,64 @@ +import 'package:open_earable_flutter/open_earable_flutter.dart'; + +String _sensorSearchText(Sensor sensor) { + return '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); +} + +/// Returns the first sensor whose name or chart title contains any of +/// [aliases]. +/// +/// Matching is intentionally fuzzy so apps can work across different device +/// naming schemes. +Sensor? findSensorByAliases( + Iterable sensors, + Iterable aliases, +) { + final normalizedAliases = + aliases.map((alias) => alias.toLowerCase()).toList(); + for (final sensor in sensors) { + final text = _sensorSearchText(sensor); + if (normalizedAliases.any(text.contains)) { + return sensor; + } + } + + return null; +} + +/// Returns whether [sensorManager] exposes a sensor whose name or chart title +/// contains any of [aliases]. +bool sensorManagerHasSensorByAliases( + SensorManager sensorManager, + Wearable wearable, + Iterable aliases, +) { + return findSensorByAliases(sensorManager.sensors, aliases) != null; +} + +/// Returns the first sensor that looks like an accelerometer. +Sensor? findAccelerometerSensor(Iterable sensors) { + return findSensorByAliases(sensors, const ['accelerometer', 'accel', 'acc']); +} + +Sensor? findPpgSensor(Iterable sensors) { + return findSensorByAliases( + sensors, + [ + 'photoplethysmography', + 'ppg', + 'pulse', + ], + ); +} + +/// Returns whether [sensorManager] exposes an accelerometer-like sensor. +bool sensorManagerHasAccelerometer( + SensorManager sensorManager, + Wearable wearable, +) { + return sensorManagerHasSensorByAliases( + sensorManager, + wearable, + const ['accelerometer', 'accel', 'acc'], + ); +} diff --git a/open_wearable/lib/apps/posture_tracker/model/earable_attitude_tracker.dart b/open_wearable/lib/apps/posture_tracker/model/earable_attitude_tracker.dart index a1a02844..c80ce276 100644 --- a/open_wearable/lib/apps/posture_tracker/model/earable_attitude_tracker.dart +++ b/open_wearable/lib/apps/posture_tracker/model/earable_attitude_tracker.dart @@ -5,6 +5,7 @@ import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:open_wearable/apps/posture_tracker/model/attitude.dart'; import 'package:open_wearable/apps/posture_tracker/model/attitude_tracker.dart'; import 'package:open_wearable/apps/posture_tracker/model/ewma.dart'; +import 'package:open_wearable/apps/models/sensor_matching.dart'; import 'package:open_wearable/view_models/sensor_configuration_provider.dart'; class EarableAttitudeTracker extends AttitudeTracker { @@ -37,9 +38,12 @@ class EarableAttitudeTracker extends AttitudeTracker { return; } - final Sensor accelSensor = _sensorManager.sensors.firstWhere( - (s) => s.sensorName.toLowerCase() == "accelerometer".toLowerCase(), - ); + final accelSensor = findAccelerometerSensor(_sensorManager.sensors); + if (accelSensor == null) { + throw StateError( + 'Posture Tracker requires an accelerometer sensor on the selected wearable.', + ); + } final Set configurations = {}; configurations.addAll(accelSensor.relatedConfigurations); diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 5e03fc24..cf16c582 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:open_wearable/apps/heart_tracker/widgets/heart_tracker_page.dart'; import 'package:open_wearable/apps/posture_tracker/model/earable_attitude_tracker.dart'; +import 'package:open_wearable/apps/models/sensor_matching.dart'; import 'package:open_wearable/apps/posture_tracker/view/posture_tracker_view.dart'; import 'package:open_wearable/apps/widgets/app_compatibility.dart'; import 'package:open_wearable/apps/widgets/select_earable_view.dart'; @@ -46,7 +47,8 @@ final List _postureSupportedDevices = [ ), AppSupportOption( label: "Accelerometer", - requirement: AppRequirement.capability(_hasAccelerometerSensor), + requirement: + AppRequirement.capability(sensorManagerHasAccelerometer), ), ]; final List _heartSupportedDevices = [ @@ -96,19 +98,6 @@ Sensor? _findOpticalTemperatureSensor(List sensors) { return null; } -bool _hasAccelerometerSensor(SensorManager sensorManager, Wearable wearable) { - for (final sensor in sensorManager.sensors) { - final text = '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); - if (text.contains('accelerometer') || - text.contains('accel') || - text.contains('acc')) { - return true; - } - } - - return false; -} - final List _apps = [ AppInfo( logoPath: "lib/apps/posture_tracker/assets/logo.png", @@ -142,17 +131,7 @@ final List _apps = [ startApp: (wearable, _) async { if (wearable.hasCapability()) { final sensors = wearable.requireCapability().sensors; - Sensor? ppgSensor; - for (final sensor in sensors) { - final text = - '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); - if (text.contains('photoplethysmography') || - text.contains('ppg') || - text.contains('pulse')) { - ppgSensor = sensor; - break; - } - } + final ppgSensor = findPpgSensor(sensors); if (ppgSensor == null) { return PlatformScaffold( @@ -165,15 +144,7 @@ final List _apps = [ ); } - Sensor? accelerometerSensor; - for (final sensor in sensors) { - final text = - '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); - if (text.contains('accelerometer') || text.contains('acc')) { - accelerometerSensor = sensor; - break; - } - } + final accelerometerSensor = findAccelerometerSensor(sensors); final opticalTemperatureSensor = _findOpticalTemperatureSensor(sensors); From b8fa7f0fb5698185f8b1696061bc49ce63312392 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 14:53:04 +0100 Subject: [PATCH 05/23] refactor(apps/compatibility): moved app compatibility to models --- .../lib/apps/{widgets => models}/app_compatibility.dart | 0 open_wearable/lib/apps/widgets/app_tile.dart | 2 +- open_wearable/lib/apps/widgets/apps_page.dart | 2 +- open_wearable/lib/apps/widgets/select_earable_view.dart | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename open_wearable/lib/apps/{widgets => models}/app_compatibility.dart (100%) diff --git a/open_wearable/lib/apps/widgets/app_compatibility.dart b/open_wearable/lib/apps/models/app_compatibility.dart similarity index 100% rename from open_wearable/lib/apps/widgets/app_compatibility.dart rename to open_wearable/lib/apps/models/app_compatibility.dart diff --git a/open_wearable/lib/apps/widgets/app_tile.dart b/open_wearable/lib/apps/widgets/app_tile.dart index 36bf1c4e..ef007d53 100644 --- a/open_wearable/lib/apps/widgets/app_tile.dart +++ b/open_wearable/lib/apps/widgets/app_tile.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; -import 'package:open_wearable/apps/widgets/app_compatibility.dart'; +import 'package:open_wearable/apps/models/app_compatibility.dart'; import 'package:open_wearable/apps/widgets/apps_page.dart'; import 'package:open_wearable/models/app_launch_session.dart'; diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index cf16c582..85fd3b1d 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -6,7 +6,7 @@ import 'package:open_wearable/apps/heart_tracker/widgets/heart_tracker_page.dart import 'package:open_wearable/apps/posture_tracker/model/earable_attitude_tracker.dart'; import 'package:open_wearable/apps/models/sensor_matching.dart'; import 'package:open_wearable/apps/posture_tracker/view/posture_tracker_view.dart'; -import 'package:open_wearable/apps/widgets/app_compatibility.dart'; +import 'package:open_wearable/apps/models/app_compatibility.dart'; import 'package:open_wearable/apps/widgets/select_earable_view.dart'; import 'package:open_wearable/apps/widgets/app_tile.dart'; import 'package:open_wearable/view_models/wearables_provider.dart'; diff --git a/open_wearable/lib/apps/widgets/select_earable_view.dart b/open_wearable/lib/apps/widgets/select_earable_view.dart index ba938620..c8b5ef8a 100644 --- a/open_wearable/lib/apps/widgets/select_earable_view.dart +++ b/open_wearable/lib/apps/widgets/select_earable_view.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; -import 'package:open_wearable/apps/widgets/app_compatibility.dart'; +import 'package:open_wearable/apps/models/app_compatibility.dart'; import 'package:open_wearable/models/device_name_formatter.dart'; import 'package:open_wearable/models/wearable_display_group.dart'; import 'package:open_wearable/view_models/sensor_configuration_provider.dart'; From 995ceb801bb57e0add4d28a203950e088d1b7fa2 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 15:03:21 +0100 Subject: [PATCH 06/23] feat(apps/widgets): add PPG support option to heart supported devices --- .../lib/apps/models/sensor_matching.dart | 15 +++++++++++++++ open_wearable/lib/apps/widgets/apps_page.dart | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/open_wearable/lib/apps/models/sensor_matching.dart b/open_wearable/lib/apps/models/sensor_matching.dart index 8ecb699e..e5a72513 100644 --- a/open_wearable/lib/apps/models/sensor_matching.dart +++ b/open_wearable/lib/apps/models/sensor_matching.dart @@ -62,3 +62,18 @@ bool sensorManagerHasAccelerometer( const ['accelerometer', 'accel', 'acc'], ); } + +bool sensorManagerHasPpg( + SensorManager sensorManager, + Wearable wearable, +) { + return sensorManagerHasSensorByAliases( + sensorManager, + wearable, + const [ + 'photoplethysmography', + 'ppg', + 'pulse', + ], + ); +} diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 85fd3b1d..f2a72e90 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -60,6 +60,10 @@ final List _heartSupportedDevices = [ label: 'OpenRing', requirement: AppRequirement.nameStartsWith('OpenRing'), ), + AppSupportOption( + label: "PPG", + requirement: AppRequirement.capability(sensorManagerHasPpg), + ), ]; Sensor? _findOpticalTemperatureSensor(List sensors) { From ece74fc00cc02db302e40eb327ae11ed8a067d4b Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 16:42:53 +0100 Subject: [PATCH 07/23] refactor(apps/compatibility): cleaned up sensor matching --- .../lib/apps/models/app_compatibility.dart | 39 ++++++++++ .../lib/apps/models/sensor_matching.dart | 76 ++++++------------- open_wearable/lib/apps/widgets/apps_page.dart | 6 +- .../apps/widgets/app_compatibility_test.dart | 74 +++++++++++++++++- 4 files changed, 139 insertions(+), 56 deletions(-) diff --git a/open_wearable/lib/apps/models/app_compatibility.dart b/open_wearable/lib/apps/models/app_compatibility.dart index a655f108..e6a8a2aa 100644 --- a/open_wearable/lib/apps/models/app_compatibility.dart +++ b/open_wearable/lib/apps/models/app_compatibility.dart @@ -1,4 +1,5 @@ import 'package:open_earable_flutter/open_earable_flutter.dart'; +import 'package:open_wearable/apps/models/sensor_matching.dart'; import 'package:open_wearable/models/device_name_formatter.dart'; typedef WearablePredicate = bool Function(Wearable wearable); @@ -59,6 +60,17 @@ sealed class AppRequirement { /// Matches wearables that expose capability [T]. static AppRequirement hasCapability() => _HasCapabilityRequirement(); + /// Matches wearables that expose a sensor matching [matcher]. + static AppRequirement hasSensor(SensorMatcher matcher) { + return _HasSensorRequirement(matcher); + } + + /// Matches wearables that expose a sensor whose name or chart title contains + /// any of [aliases]. + static AppRequirement hasSensorByAliases(Iterable aliases) { + return _HasSensorByAliasesRequirement(aliases); + } + /// Matches wearables that expose capability [T] and satisfy [predicate]. static AppRequirement capability(CapabilityPredicate predicate) { return _CapabilityPredicateRequirement(predicate); @@ -98,6 +110,33 @@ final class _HasCapabilityRequirement extends AppRequirement { bool matches(Wearable wearable) => wearable.hasCapability(); } +final class _HasSensorRequirement extends AppRequirement { + final SensorMatcher matcher; + + const _HasSensorRequirement(this.matcher); + + @override + bool matches(Wearable wearable) { + final sensorManager = wearable.getCapability(); + return sensorManager != null && + findSensor(sensorManager.sensors, matcher) != null; + } +} + +final class _HasSensorByAliasesRequirement extends AppRequirement { + final List aliases; + + _HasSensorByAliasesRequirement(Iterable aliases) + : aliases = List.unmodifiable(aliases); + + @override + bool matches(Wearable wearable) { + final sensorManager = wearable.getCapability(); + return sensorManager != null && + findSensorByAliases(sensorManager.sensors, aliases) != null; + } +} + final class _CapabilityPredicateRequirement extends AppRequirement { final CapabilityPredicate predicate; diff --git a/open_wearable/lib/apps/models/sensor_matching.dart b/open_wearable/lib/apps/models/sensor_matching.dart index e5a72513..868fd40d 100644 --- a/open_wearable/lib/apps/models/sensor_matching.dart +++ b/open_wearable/lib/apps/models/sensor_matching.dart @@ -1,23 +1,25 @@ import 'package:open_earable_flutter/open_earable_flutter.dart'; +typedef SensorMatcher = bool Function(Sensor sensor); + +const accelerometerSensorAliases = ['accelerometer', 'accel', 'acc']; +const ppgSensorAliases = ['photoplethysmography', 'ppg', 'pulse']; + String _sensorSearchText(Sensor sensor) { return '${sensor.sensorName} ${sensor.chartTitle}'.toLowerCase(); } -/// Returns the first sensor whose name or chart title contains any of -/// [aliases]. -/// -/// Matching is intentionally fuzzy so apps can work across different device -/// naming schemes. -Sensor? findSensorByAliases( +bool sensorMatchesAliases(Sensor sensor, Iterable aliases) { + final searchText = _sensorSearchText(sensor); + return aliases.map((alias) => alias.toLowerCase()).any(searchText.contains); +} + +Sensor? findSensor( Iterable sensors, - Iterable aliases, + SensorMatcher matcher, ) { - final normalizedAliases = - aliases.map((alias) => alias.toLowerCase()).toList(); for (final sensor in sensors) { - final text = _sensorSearchText(sensor); - if (normalizedAliases.any(text.contains)) { + if (matcher(sensor)) { return sensor; } } @@ -25,55 +27,23 @@ Sensor? findSensorByAliases( return null; } -/// Returns whether [sensorManager] exposes a sensor whose name or chart title -/// contains any of [aliases]. -bool sensorManagerHasSensorByAliases( - SensorManager sensorManager, - Wearable wearable, +/// Returns the first sensor whose name or chart title contains any of +/// [aliases]. +/// +/// Matching is intentionally fuzzy so apps can work across different device +/// naming schemes. +Sensor? findSensorByAliases( + Iterable sensors, Iterable aliases, ) { - return findSensorByAliases(sensorManager.sensors, aliases) != null; + return findSensor(sensors, (sensor) => sensorMatchesAliases(sensor, aliases)); } /// Returns the first sensor that looks like an accelerometer. Sensor? findAccelerometerSensor(Iterable sensors) { - return findSensorByAliases(sensors, const ['accelerometer', 'accel', 'acc']); + return findSensorByAliases(sensors, accelerometerSensorAliases); } Sensor? findPpgSensor(Iterable sensors) { - return findSensorByAliases( - sensors, - [ - 'photoplethysmography', - 'ppg', - 'pulse', - ], - ); -} - -/// Returns whether [sensorManager] exposes an accelerometer-like sensor. -bool sensorManagerHasAccelerometer( - SensorManager sensorManager, - Wearable wearable, -) { - return sensorManagerHasSensorByAliases( - sensorManager, - wearable, - const ['accelerometer', 'accel', 'acc'], - ); -} - -bool sensorManagerHasPpg( - SensorManager sensorManager, - Wearable wearable, -) { - return sensorManagerHasSensorByAliases( - sensorManager, - wearable, - const [ - 'photoplethysmography', - 'ppg', - 'pulse', - ], - ); + return findSensorByAliases(sensors, ppgSensorAliases); } diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index f2a72e90..0617dd83 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -40,6 +40,7 @@ class AppInfo { } const Color _appAccentColor = Color(0xFF9A6F6B); + final List _postureSupportedDevices = [ const AppSupportOption( label: 'OpenEarable', @@ -48,9 +49,10 @@ final List _postureSupportedDevices = [ AppSupportOption( label: "Accelerometer", requirement: - AppRequirement.capability(sensorManagerHasAccelerometer), + AppRequirement.hasSensorByAliases(accelerometerSensorAliases), ), ]; + final List _heartSupportedDevices = [ const AppSupportOption( label: 'OpenEarable', @@ -62,7 +64,7 @@ final List _heartSupportedDevices = [ ), AppSupportOption( label: "PPG", - requirement: AppRequirement.capability(sensorManagerHasPpg), + requirement: AppRequirement.hasSensorByAliases(ppgSensorAliases), ), ]; diff --git a/open_wearable/test/apps/widgets/app_compatibility_test.dart b/open_wearable/test/apps/widgets/app_compatibility_test.dart index 0c77e51d..a89e3178 100644 --- a/open_wearable/test/apps/widgets/app_compatibility_test.dart +++ b/open_wearable/test/apps/widgets/app_compatibility_test.dart @@ -1,6 +1,29 @@ import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:open_wearable/apps/widgets/app_compatibility.dart'; +import 'package:open_wearable/apps/models/app_compatibility.dart'; + +class _FakeSensor extends Sensor { + const _FakeSensor({ + required super.sensorName, + required super.chartTitle, + }) : super(shortChartTitle: 'fake'); + + @override + List get axisNames => const ['x']; + + @override + List get axisUnits => const ['u']; + + @override + Stream get sensorStream => Stream.empty(); +} + +class _FakeSensorManager implements SensorManager { + @override + final List sensors; + + const _FakeSensorManager(this.sensors); +} class _FakeCapability { final String mode; @@ -140,6 +163,55 @@ void main() { isFalse, ); }); + + test('supports matching sensors without explicit SensorManager requirement', + () { + final compatibleWearable = _FakeWearable( + name: 'OpenEarable-2', + deviceId: 'oe-3', + )..registerCapability( + const _FakeSensorManager([ + _FakeSensor( + sensorName: 'accel', + chartTitle: 'Acceleration', + ), + ]), + ); + final incompatibleWearable = _FakeWearable( + name: 'OpenEarable-2', + deviceId: 'oe-4', + )..registerCapability( + const _FakeSensorManager([ + _FakeSensor( + sensorName: 'gyroscope', + chartTitle: 'Gyro', + ), + ]), + ); + + final supportedDevice = AppSupportOption( + label: 'OpenEarable', + requirement: AppRequirement.allOf([ + AppRequirement.nameStartsWith('OpenEarable'), + AppRequirement.hasSensorByAliases(['accelerometer', 'accel', 'acc']), + ]), + ); + + expect( + wearableIsCompatibleWithApp( + wearable: compatibleWearable, + supportedDevices: [supportedDevice], + ), + isTrue, + ); + expect( + wearableIsCompatibleWithApp( + wearable: incompatibleWearable, + supportedDevices: [supportedDevice], + ), + isFalse, + ); + }); } bool _matchesLeftCapability(_FakeCapability capability, Wearable wearable) { From bd208a4dd58795edb699b7bb5ac8778383d30ade Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:11:17 +0100 Subject: [PATCH 08/23] refactor(apps/widgets): remove redundant OpenEarable and OpenRing support options --- open_wearable/lib/apps/widgets/apps_page.dart | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 0617dd83..58ecd4e6 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -42,10 +42,6 @@ class AppInfo { const Color _appAccentColor = Color(0xFF9A6F6B); final List _postureSupportedDevices = [ - const AppSupportOption( - label: 'OpenEarable', - requirement: AppRequirement.nameStartsWith('OpenEarable'), - ), AppSupportOption( label: "Accelerometer", requirement: @@ -54,14 +50,6 @@ final List _postureSupportedDevices = [ ]; final List _heartSupportedDevices = [ - const AppSupportOption( - label: 'OpenEarable', - requirement: AppRequirement.nameStartsWith('OpenEarable'), - ), - const AppSupportOption( - label: 'OpenRing', - requirement: AppRequirement.nameStartsWith('OpenRing'), - ), AppSupportOption( label: "PPG", requirement: AppRequirement.hasSensorByAliases(ppgSensorAliases), From d2262c26d489bd1840c1346a44b11e7a1095bcad Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:14:21 +0100 Subject: [PATCH 09/23] fix(apps/widgets): update label for supported devices in AppTile --- open_wearable/lib/apps/widgets/app_tile.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/open_wearable/lib/apps/widgets/app_tile.dart b/open_wearable/lib/apps/widgets/app_tile.dart index ef007d53..0fe274c9 100644 --- a/open_wearable/lib/apps/widgets/app_tile.dart +++ b/open_wearable/lib/apps/widgets/app_tile.dart @@ -117,7 +117,7 @@ class AppTile extends StatelessWidget { ), const SizedBox(height: 8), Text( - 'Supported devices', + 'Supported by:', style: theme.textTheme.labelSmall?.copyWith( color: isEnabled ? theme.textTheme.bodySmall?.color From b324c3dd30b999b771bb0f9cdd108b16cede052c Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:25:44 +0100 Subject: [PATCH 10/23] open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart: created app for audio response measurement --- .../audio_response_measurement_view.dart | 323 ++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart new file mode 100644 index 00000000..c058c39f --- /dev/null +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -0,0 +1,323 @@ +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; +import 'package:open_earable_flutter/open_earable_flutter.dart'; + +// NOTE: We intentionally do NOT support writing files on web here. +// If you want web downloads, we can add a proper conditional import helper. +// ignore: avoid_web_libraries_in_flutter +import 'dart:io'; + +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; + +class AudioResponseMeasurementView extends StatefulWidget { + const AudioResponseMeasurementView({ + super.key, + required this.manager, + this.parameters = const {}, + this.title = 'Audio Response', + }); + + final AudioResponseManager manager; + + /// Parameters passed to measureAudioResponse (can be empty) + final Map parameters; + + final String title; + + @override + State createState() => _AudioResponseMeasurementViewState(); +} + +class _AudioResponseMeasurementViewState extends State { + bool _isMeasuring = false; + Object? _error; + StackTrace? _stack; + Map? _result; + + @override + void initState() { + super.initState(); + // Measurement is triggered by user button press. + } + + String _two(int v) => v.toString().padLeft(2, '0'); + + String _timestampForFilename(DateTime dt) { + // yyyyMMdd_HHmmss + return '${dt.year}${_two(dt.month)}${_two(dt.day)}_${_two(dt.hour)}${_two(dt.minute)}${_two(dt.second)}'; + } + + Future _saveResultToDownloadsAsJson(Map result) async { + // Web: stub (no dart:html here; add conditional import helper if you want real downloads) + if (kIsWeb) { + return null; + } + + final now = DateTime.now(); + final fileName = 'audio_response_${_timestampForFilename(now)}.json'; + + Directory? downloads; + try { + downloads = await getDownloadsDirectory(); + } catch (_) { + downloads = null; + } + + // Fallback when downloads directory isn't available (e.g., Android/iOS). + final Directory dir = downloads ?? await getApplicationDocumentsDirectory(); + final String path = p.join(dir.path, fileName); + + final encoder = const JsonEncoder.withIndent(' '); + final jsonStr = encoder.convert(result); + + final file = File(path); + await file.writeAsString(jsonStr, flush: true); + return path; + } + + Future _startMeasurement() async { + setState(() { + _isMeasuring = true; + _error = null; + _stack = null; + _result = null; + }); + + try { + final res = await widget.manager.measureAudioResponse(widget.parameters); + final savedPath = await _saveResultToDownloadsAsJson(res); + if (!mounted) return; + setState(() { + _result = res; + _isMeasuring = false; + }); + if (!context.mounted) return; + final msg = savedPath == null + ? 'Measured. (Saving is not supported on web in this view)' + : 'Measured and saved to: $savedPath'; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(msg)), + ); + } catch (e, st) { + if (!mounted) return; + setState(() { + _error = e; + _stack = st; + _isMeasuring = false; + }); + } + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return PlatformScaffold( + appBar: PlatformAppBar( + title: Text(widget.title), + trailingActions: [ + PlatformIconButton( + onPressed: _isMeasuring ? null : _startMeasurement, + icon: const Icon(Icons.refresh), + ), + ], + ), + body: Padding( + padding: const EdgeInsets.all(16), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: FilledButton.icon( + onPressed: _isMeasuring ? null : _startMeasurement, + icon: const Icon(Icons.play_arrow), + label: Text(_isMeasuring ? 'Measuring…' : 'Measure'), + ), + ), + const SizedBox(width: 12), + OutlinedButton.icon( + onPressed: (_isMeasuring || _result == null) + ? null + : () async { + final path = await _saveResultToDownloadsAsJson(_result!); + final msg = path == null + ? 'Saving is not supported on web in this view' + : 'Saved to: $path'; + if (!context.mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(msg)), + ); + }, + icon: const Icon(Icons.download), + label: const Text('Save JSON'), + ), + ], + ), + const SizedBox(height: 16), + Expanded( + child: _isMeasuring + ? _buildLoading(theme) + : (_error != null) + ? _buildError(theme) + : (_result != null) + ? _buildResult(theme, _result!) + : Center( + child: Text( + 'Press “Measure” to start.', + style: theme.textTheme.titleMedium, + ), + ), + ), + ], + ), + ), + ); + } + + Widget _buildLoading(ThemeData theme) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const CircularProgressIndicator(), + const SizedBox(height: 16), + Text( + 'Measuring frequency response…', + style: theme.textTheme.titleMedium, + ), + ], + ), + ); + } + + Widget _buildError(ThemeData theme) { + return Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 600), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.error_outline, size: 48, color: theme.colorScheme.error), + const SizedBox(height: 12), + Text( + 'Measurement failed', + style: theme.textTheme.titleLarge, + ), + const SizedBox(height: 8), + Text( + _error.toString(), + style: theme.textTheme.bodyMedium, + textAlign: TextAlign.center, + ), + const SizedBox(height: 16), + FilledButton.icon( + onPressed: _startMeasurement, + icon: const Icon(Icons.replay), + label: const Text('Try again'), + ), + // If you want to show stack traces in debug builds: + if (_stack != null) + Padding( + padding: const EdgeInsets.only(top: 16), + child: Text( + _stack.toString(), + style: theme.textTheme.bodySmall?.copyWith(color: theme.hintColor), + ), + ), + ], + ), + ), + ); + } + + Widget _buildResult(ThemeData theme, Map result) { + final int version = (result['version'] as int?) ?? -1; + final int quality = (result['quality'] as int?) ?? -1; + + final int meanMagnitude = (result['mean_magnitude'] as int?) ?? -1; + final int numPeaks = (result['num_peaks'] as int?) ?? -1; + + final List pointsDyn = (result['points'] as List?) ?? const []; + final points = pointsDyn + .whereType() + .map((m) => { + 'frequency_hz': (m['frequency_hz'] as num?)?.toDouble(), + 'frequency_raw_q12_4': (m['frequency_raw_q12_4'] as num?)?.toInt(), + 'magnitude': (m['magnitude'] as num?)?.toDouble(), + },) + .where((m) => m['frequency_hz'] != null && m['magnitude'] != null) + .toList(); + + // Sort by frequency (just in case) + points.sort((a, b) => (a['frequency_hz']!).compareTo(b['frequency_hz']!)); + + return ListView( + children: [ + Card( + child: Padding( + padding: const EdgeInsets.all(16), + child: Wrap( + runSpacing: 8, + spacing: 16, + children: [ + _kv(theme, 'Version', '$version'), + _kv(theme, 'Quality', '$quality'), + _kv(theme, 'Mean Magnitude', '$meanMagnitude'), + _kv(theme, 'Num Peaks', '$numPeaks'), + _kv(theme, 'Points', '${points.length}'), + ], + ), + ), + ), + const SizedBox(height: 12), + Card( + child: Padding( + padding: const EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: Text('Response points', style: theme.textTheme.titleMedium), + ), + const Divider(height: 1), + ...points.map((p) { + final f = p['frequency_hz']!; + final mag = p['magnitude']!; + final raw = p['frequency_raw_q12_4'] as int?; + + final subtitle = raw == null + ? 'magnitude (uint16 units)' + : 'freq raw (Q12.4): $raw • magnitude (uint16 units)'; + + return ListTile( + dense: true, + title: Text('${f.toStringAsFixed(2)} Hz'), + trailing: Text(mag.toStringAsFixed(0)), + subtitle: Text(subtitle), + ); + }), + ], + ), + ), + ), + ], + ); + } + + Widget _kv(ThemeData theme, String k, String v) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(k, style: theme.textTheme.labelMedium), + Text(v, style: theme.textTheme.titleMedium), + ], + ); + } +} From 3630ade8aca57be0df509a06d7d2ad0774559852 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Fri, 12 Dec 2025 15:26:15 +0100 Subject: [PATCH 11/23] open_wearable/lib/apps/widgets/apps_page.dart: added AudioResponse app --- open_wearable/lib/apps/widgets/apps_page.dart | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 58ecd4e6..3fbea387 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:go_router/go_router.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; +import 'package:open_wearable/apps/audio_response_measure/audio_response_measurement_view.dart'; import 'package:open_wearable/apps/heart_tracker/widgets/heart_tracker_page.dart'; import 'package:open_wearable/apps/posture_tracker/model/earable_attitude_tracker.dart'; import 'package:open_wearable/apps/models/sensor_matching.dart'; @@ -160,6 +161,27 @@ final List _apps = [ }, ), ), + AppInfo( + logoPath: "", + title: "Audio Response", + description: "Measure and store audio responses", + widget: SelectEarableView( + startApp: (wearable, _) { + if (wearable is AudioResponseManager) { + return AudioResponseMeasurementView(manager: wearable as AudioResponseManager); + } else { + return PlatformScaffold( + appBar: PlatformAppBar( + title: PlatformText("Audio Response Measurement"), + ), + body: Center( + child: PlatformText("Audio Response Measurement not supported on this device."), + ), + ); + } + }, + ), + ), ]; int getAvailableAppsCount() => _apps.length; From eef0eab159b4650c5f3f5111a1299d5bce316e64 Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Fri, 12 Dec 2025 16:02:41 +0100 Subject: [PATCH 12/23] open_wearable/lib/apps/audo_response_measure/audio_response_measurement_view.dart: select directory to save to on android --- .../audio_response_measurement_view.dart | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index c058c39f..e8d14ab7 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; +import 'package:file_picker/file_picker.dart'; // NOTE: We intentionally do NOT support writing files on web here. // If you want web downloads, we can add a proper conditional import helper. @@ -60,6 +61,22 @@ class _AudioResponseMeasurementViewState extends State pointsDyn = (result['points'] as List?) ?? const []; @@ -268,7 +284,6 @@ class _AudioResponseMeasurementViewState extends State Date: Fri, 12 Dec 2025 16:05:24 +0100 Subject: [PATCH 13/23] open_wearable/pubspec: use open_earable_flutter from seal_check branch of repository --- open_wearable/pubspec.lock | 2 +- open_wearable/pubspec.yaml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/open_wearable/pubspec.lock b/open_wearable/pubspec.lock index 660c3da9..e921734c 100644 --- a/open_wearable/pubspec.lock +++ b/open_wearable/pubspec.lock @@ -625,7 +625,7 @@ packages: source: hosted version: "3.2.1" path: - dependency: transitive + dependency: "direct main" description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" diff --git a/open_wearable/pubspec.yaml b/open_wearable/pubspec.yaml index 9b723337..40a1262e 100644 --- a/open_wearable/pubspec.yaml +++ b/open_wearable/pubspec.yaml @@ -55,6 +55,7 @@ dependencies: go_router: ^17.2.3 audioplayers: ^6.7.0 wakelock_plus: ^1.5.2 + path: ^1.9.1 package_info_plus: ^9.0.1 sensors_plus: ^7.0.0 device_info_plus: ^12.4.0 From 25053476e85c74966467768baffc65bc54c69d1c Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:26:32 +0100 Subject: [PATCH 14/23] fix(apps/widgets): specified device support for Audio Response app --- open_wearable/lib/apps/widgets/apps_page.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index 3fbea387..ef157d7e 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -57,6 +57,13 @@ final List _heartSupportedDevices = [ ), ]; +final List _audioResponseSupportedDevices = [ + AppSupportOption( + label: "Audio Device", + requirement: AppRequirement.hasCapability(), + ), +]; + Sensor? _findOpticalTemperatureSensor(List sensors) { String normalizeToken(String input) { return input @@ -165,8 +172,11 @@ final List _apps = [ logoPath: "", title: "Audio Response", description: "Measure and store audio responses", + supportedDevices: _audioResponseSupportedDevices, + accentColor: _appAccentColor, widget: SelectEarableView( - startApp: (wearable, _) { + supportedDevices: _audioResponseSupportedDevices, + startApp: (wearable, _) async { if (wearable is AudioResponseManager) { return AudioResponseMeasurementView(manager: wearable as AudioResponseManager); } else { From 3ddc6de67b6dc03cee4ae10bc577995832e0bc8f Mon Sep 17 00:00:00 2001 From: Dennis Moschina <45356478+DennisMoschina@users.noreply.github.com> Date: Wed, 1 Apr 2026 16:33:05 +0200 Subject: [PATCH 15/23] fix(app/AudioResponse): ignore unused variable to be able to build app --- .../audio_response_measure/audio_response_measurement_view.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index e8d14ab7..0cf0b7c8 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -256,6 +256,7 @@ class _AudioResponseMeasurementViewState extends State pointsDyn = (result['points'] as List?) ?? const []; From c48a1af44205e8867bd8f4cf09a868238b375089 Mon Sep 17 00:00:00 2001 From: mkuettner97 Date: Sun, 3 May 2026 13:22:02 +0200 Subject: [PATCH 16/23] fix audio response measure not supported --- open_wearable/lib/apps/widgets/apps_page.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index ef157d7e..ad442101 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -177,8 +177,9 @@ final List _apps = [ widget: SelectEarableView( supportedDevices: _audioResponseSupportedDevices, startApp: (wearable, _) async { - if (wearable is AudioResponseManager) { - return AudioResponseMeasurementView(manager: wearable as AudioResponseManager); + final manager = wearable.getCapability(); + if (manager != null) { + return AudioResponseMeasurementView(manager: manager); } else { return PlatformScaffold( appBar: PlatformAppBar( From fb98691d9e28171c5956bfe6ec00e4b9b41d5ded Mon Sep 17 00:00:00 2001 From: mkuettner97 Date: Sun, 3 May 2026 13:35:28 +0200 Subject: [PATCH 17/23] plot response curve --- .../audio_response_measurement_view.dart | 446 ++++++++++++++++-- 1 file changed, 405 insertions(+), 41 deletions(-) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index 0cf0b7c8..3d6afe60 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -1,5 +1,7 @@ import 'dart:convert'; +import 'dart:math' as math; +import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; @@ -14,6 +16,45 @@ import 'dart:io'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; +// Target curve constants mirrored from firmware seal_check_service.c +const List _kTargetFrequencies = [ + 40.0, + 60.0, + 90.0, + 135.0, + 202.5, + 303.75, + 455.625, + 683.4375, + 1025.15625, +]; +const List _kTargetMagnitudes = [ + 0.90833731, + 1.18334124, + 1.38796968, + 1.16634027, + 0.85781358, + 0.65981396, + 0.84768657, + 0.98236069, + 1.00633671, +]; + +/// Returns the index in [_kTargetFrequencies] closest to [freqHz] on a log scale. +int _closestTargetIndex(double freqHz) { + int best = 0; + double bestDist = double.infinity; + final logF = math.log(freqHz); + for (int i = 0; i < _kTargetFrequencies.length; i++) { + final dist = (logF - math.log(_kTargetFrequencies[i])).abs(); + if (dist < bestDist) { + bestDist = dist; + best = i; + } + } + return best; +} + class AudioResponseMeasurementView extends StatefulWidget { const AudioResponseMeasurementView({ super.key, @@ -38,6 +79,7 @@ class _AudioResponseMeasurementViewState extends State? _result; + bool _showRawValues = false; @override void initState() { @@ -254,71 +296,275 @@ class _AudioResponseMeasurementViewState extends State result) { final int version = (result['version'] as int?) ?? -1; final int quality = (result['quality'] as int?) ?? -1; - final double meanMagnitude = (result['mean_magnitude'] as double?) ?? -1; - // ignore: unused_local_variable - final int numPeaks = (result['num_peaks'] as int?) ?? -1; final List pointsDyn = (result['points'] as List?) ?? const []; - final points = pointsDyn + final allPoints = pointsDyn .whereType() .map((m) => { 'frequency_hz': (m['frequency_hz'] as num?)?.toDouble(), 'frequency_raw_q12_4': (m['frequency_raw_q12_4'] as num?)?.toInt(), 'magnitude': (m['magnitude'] as num?)?.toDouble(), - },) - .where((m) => m['frequency_hz'] != null && m['magnitude'] != null) + }) + .where((m) => + m['frequency_hz'] != null && + m['magnitude'] != null && + (m['frequency_hz'] as double) > 0.0) .toList(); - // Sort by frequency (just in case) - points.sort((a, b) => (a['frequency_hz']!).compareTo(b['frequency_hz']!)); + // Sort by frequency + allPoints.sort((a, b) => + (a['frequency_hz'] as double).compareTo(b['frequency_hz'] as double)); + + // Normalize magnitudes by average peak magnitude + final double avgPeakMag = allPoints.isEmpty + ? 1.0 + : allPoints.map((p) => p['magnitude'] as double).reduce((a, b) => a + b) / + allPoints.length; + final normMag = avgPeakMag == 0.0 ? 1.0 : avgPeakMag; - return ListView( + return Column( children: [ + // Summary card Card( child: Padding( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Wrap( runSpacing: 8, - spacing: 16, + spacing: 24, children: [ _kv(theme, 'Version', '$version'), - _kv(theme, 'Quality', '$quality'), - _kv(theme, 'Mean Magnitude', '$meanMagnitude'), - _kv(theme, 'Points', '${points.length}'), + _kv(theme, 'Quality', '$quality / 100'), + _kv(theme, 'Mean Magnitude', meanMagnitude.toStringAsFixed(1)), + _kv(theme, 'Points', '${allPoints.length}'), ], ), ), ), - const SizedBox(height: 12), - Card( - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Text('Response points', style: theme.textTheme.titleMedium), + const SizedBox(height: 8), + // Chart + Expanded( + child: Card( + child: Padding( + padding: const EdgeInsets.fromLTRB(8, 16, 16, 8), + child: _buildChart(theme, allPoints, normMag), + ), + ), + ), + const SizedBox(height: 8), + // Raw values toggle button + SizedBox( + width: double.infinity, + child: OutlinedButton.icon( + onPressed: () => setState(() => _showRawValues = !_showRawValues), + icon: Icon(_showRawValues ? Icons.expand_less : Icons.expand_more), + label: Text(_showRawValues ? 'Hide raw values' : 'View raw values'), + ), + ), + // Raw values table + if (_showRawValues) ...[ + const SizedBox(height: 8), + _buildRawValuesTable(theme, allPoints, normMag), + ], + ], + ); + } + + Widget _buildChart( + ThemeData theme, + List> points, + double normMag, + ) { + final colorScheme = theme.colorScheme; + final measuredColor = colorScheme.primary; + final targetColor = colorScheme.tertiary; + + // Measured spots: x = log10(freq), y = normalizedMagnitude + final measuredSpots = points.map((p) { + final freq = p['frequency_hz']!; + final mag = p['magnitude']!; + return FlSpot(math.log(freq) / math.ln10, mag / normMag); + }).toList(); + + // Target spots + final targetSpots = List.generate(_kTargetFrequencies.length, (i) { + return FlSpot( + math.log(_kTargetFrequencies[i]) / math.ln10, + _kTargetMagnitudes[i], + ); + }); + + // X axis ticks at target frequencies + final xTicks = _kTargetFrequencies + .map((f) => math.log(f) / math.ln10) + .toList(); + + final allYValues = [ + ...measuredSpots.map((s) => s.y), + ..._kTargetMagnitudes, + ]; + final maxY = allYValues.reduce(math.max); + final yMax = (maxY * 1.2).clamp(1.5, 2.5); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Legend + Row( + children: [ + _legendDot(measuredColor, 'Measured'), + const SizedBox(width: 16), + _legendDash(targetColor, 'Target'), + ], + ), + const SizedBox(height: 8), + Expanded( + child: LineChart( + LineChartData( + minX: xTicks.first - 0.05, + maxX: xTicks.last + 0.05, + minY: 0, + maxY: yMax, + clipData: const FlClipData.all(), + lineBarsData: [ + // Target line (dashed) + LineChartBarData( + spots: targetSpots, + color: targetColor, + barWidth: 2, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, bar, index) => + FlDotCirclePainter( + radius: 3, + color: targetColor, + strokeWidth: 0, + strokeColor: Colors.transparent, + ), + ), + dashArray: [6, 4], + isCurved: true, + curveSmoothness: 0.2, + belowBarData: BarAreaData(show: false), ), - const Divider(height: 1), - ...points.map((p) { - final f = p['frequency_hz']!; - final mag = p['magnitude']!; - final raw = p['frequency_raw_q12_4'] as int?; - - final subtitle = raw == null - ? 'magnitude (uint16 units)' - : 'freq raw (Q12.4): $raw • magnitude (uint16 units)'; - - return ListTile( - dense: true, - title: Text('${f.toStringAsFixed(2)} Hz'), - trailing: Text(mag.toStringAsFixed(0)), - subtitle: Text(subtitle), - ); - }), + // Measured line + if (measuredSpots.isNotEmpty) + LineChartBarData( + spots: measuredSpots, + color: measuredColor, + barWidth: 2.5, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, bar, index) => + FlDotCirclePainter( + radius: 4, + color: measuredColor, + strokeWidth: 0, + strokeColor: Colors.transparent, + ), + ), + isCurved: true, + curveSmoothness: 0.2, + belowBarData: BarAreaData(show: false), + ), ], + titlesData: FlTitlesData( + leftTitles: AxisTitles( + axisNameWidget: Text( + 'Normalized magnitude', + style: theme.textTheme.labelSmall, + ), + axisNameSize: 16, + sideTitles: SideTitles( + showTitles: true, + reservedSize: 36, + interval: 0.5, + getTitlesWidget: (value, meta) => SideTitleWidget( + meta: meta, + child: Text( + value.toStringAsFixed(1), + style: theme.textTheme.labelSmall, + ), + ), + ), + ), + bottomTitles: AxisTitles( + axisNameWidget: Text( + 'Frequency (Hz)', + style: theme.textTheme.labelSmall, + ), + axisNameSize: 16, + sideTitles: SideTitles( + showTitles: true, + reservedSize: 32, + getTitlesWidget: (value, meta) { + // Show label only at target frequency positions + final matchIdx = xTicks.indexWhere( + (x) => (x - value).abs() < 0.001); + if (matchIdx < 0) return const SizedBox.shrink(); + final freq = _kTargetFrequencies[matchIdx]; + final label = freq < 100 + ? freq.toStringAsFixed(0) + : freq >= 1000 + ? '${(freq / 1000).toStringAsFixed(1)}k' + : freq.toStringAsFixed(0); + return SideTitleWidget( + meta: meta, + angle: -0.5, + child: Text( + label, + style: theme.textTheme.labelSmall, + ), + ); + }, + ), + ), + topTitles: const AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + rightTitles: const AxisTitles( + sideTitles: SideTitles(showTitles: false), + ), + ), + gridData: FlGridData( + show: true, + drawVerticalLine: true, + getDrawingVerticalLine: (value) => FlLine( + color: theme.dividerColor.withAlpha(80), + strokeWidth: 0.8, + ), + getDrawingHorizontalLine: (value) => FlLine( + color: theme.dividerColor.withAlpha(80), + strokeWidth: 0.8, + ), + verticalInterval: 0.01, + checkToShowVerticalLine: (value) => + xTicks.any((x) => (x - value).abs() < 0.001), + ), + borderData: FlBorderData( + show: true, + border: Border( + bottom: BorderSide(color: theme.dividerColor), + left: BorderSide(color: theme.dividerColor), + ), + ), + lineTouchData: LineTouchData( + touchTooltipData: LineTouchTooltipData( + getTooltipItems: (touchedSpots) { + return touchedSpots.map((s) { + final freq = math.pow(10, s.x).toDouble(); + final isTarget = s.barIndex == 0; + return LineTooltipItem( + '${freq.toStringAsFixed(1)} Hz\n${s.y.toStringAsFixed(3)}', + TextStyle( + color: isTarget ? targetColor : measuredColor, + fontSize: 12, + ), + ); + }).toList(); + }, + ), + ), ), ), ), @@ -326,6 +572,98 @@ class _AudioResponseMeasurementViewState extends State> points, + double normMag, + ) { + if (points.isEmpty) { + return const Padding( + padding: EdgeInsets.all(8), + child: Text('No data points.'), + ); + } + + return Card( + child: Padding( + padding: const EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: Text('Raw values', style: theme.textTheme.titleMedium), + ), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: DataTable( + columnSpacing: 16, + headingRowHeight: 32, + dataRowMinHeight: 28, + dataRowMaxHeight: 36, + columns: const [ + DataColumn(label: Text('Freq (Hz)')), + DataColumn(label: Text('Magnitude'), numeric: true), + DataColumn(label: Text('Norm. Mag'), numeric: true), + DataColumn(label: Text('Target Freq (Hz)')), + DataColumn(label: Text('Target Mag'), numeric: true), + ], + rows: points.map((point) { + final freq = point['frequency_hz']!; + final mag = point['magnitude']!; + final normM = mag / normMag; + final tIdx = _closestTargetIndex(freq); + final tFreq = _kTargetFrequencies[tIdx]; + final tMag = _kTargetMagnitudes[tIdx]; + + return DataRow(cells: [ + DataCell(Text(freq.toStringAsFixed(2))), + DataCell(Text(mag.toStringAsFixed(0))), + DataCell(Text(normM.toStringAsFixed(3))), + DataCell(Text(tFreq.toStringAsFixed(3))), + DataCell(Text(tMag.toStringAsFixed(5))), + ]); + }).toList(), + ), + ), + ], + ), + ), + ); + } + + Widget _legendDot(Color color, String label) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 10, + height: 10, + decoration: BoxDecoration(color: color, shape: BoxShape.circle), + ), + const SizedBox(width: 4), + Text(label, style: const TextStyle(fontSize: 12)), + ], + ); + } + + Widget _legendDash(Color color, String label) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: 20, + height: 2, + child: CustomPaint( + painter: _DashPainter(color: color), + ), + ), + const SizedBox(width: 4), + Text(label, style: const TextStyle(fontSize: 12)), + ], + ); + } + Widget _kv(ThemeData theme, String k, String v) { return Column( mainAxisSize: MainAxisSize.min, @@ -337,3 +675,29 @@ class _AudioResponseMeasurementViewState extends State old.color != color; +} From 35637146f762d2d1a3a1c678234d868e8d7f39e7 Mon Sep 17 00:00:00 2001 From: mkuettner97 Date: Sun, 3 May 2026 14:59:53 +0200 Subject: [PATCH 18/23] check left and right simultaniously --- .../audio_response_measurement_view.dart | 390 ++++++++++-------- .../select_audio_response_pair_view.dart | 314 ++++++++++++++ open_wearable/lib/apps/widgets/apps_page.dart | 19 +- 3 files changed, 546 insertions(+), 177 deletions(-) create mode 100644 open_wearable/lib/apps/audio_response_measure/select_audio_response_pair_view.dart diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index 3d6afe60..98ca4a3e 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -58,12 +58,15 @@ int _closestTargetIndex(double freqHz) { class AudioResponseMeasurementView extends StatefulWidget { const AudioResponseMeasurementView({ super.key, - required this.manager, + this.left, + this.right, this.parameters = const {}, this.title = 'Audio Response', - }); + }) : assert(left != null || right != null, + 'At least one of left or right must be provided'); - final AudioResponseManager manager; + final AudioResponseManager? left; + final AudioResponseManager? right; /// Parameters passed to measureAudioResponse (can be empty) final Map parameters; @@ -71,20 +74,25 @@ class AudioResponseMeasurementView extends StatefulWidget { final String title; @override - State createState() => _AudioResponseMeasurementViewState(); + State createState() => + _AudioResponseMeasurementViewState(); } -class _AudioResponseMeasurementViewState extends State { +class _AudioResponseMeasurementViewState + extends State { bool _isMeasuring = false; Object? _error; StackTrace? _stack; - Map? _result; + Map? _leftResult; + Map? _rightResult; bool _showRawValues = false; + bool get _hasBothSides => widget.left != null && widget.right != null; + bool get _hasAnyResult => _leftResult != null || _rightResult != null; + @override void initState() { super.initState(); - // Measurement is triggered by user button press. } String _two(int v) => v.toString().padLeft(2, '0'); @@ -95,45 +103,32 @@ class _AudioResponseMeasurementViewState extends State _saveResultToDownloadsAsJson(Map result) async { - // Web: stub (no dart:html here; add conditional import helper if you want real downloads) - if (kIsWeb) { - return null; - } + if (kIsWeb) return null; final now = DateTime.now(); final fileName = 'audio_response_${_timestampForFilename(now)}.json'; - // Android: let user pick a target directory. if (Platform.isAndroid) { final dirPath = await FilePicker.platform.getDirectoryPath(); - if (dirPath == null || dirPath.isEmpty) { - // User canceled. - return null; - } + if (dirPath == null || dirPath.isEmpty) return null; final String path = p.join(dirPath, fileName); - final encoder = const JsonEncoder.withIndent(' '); - final jsonStr = encoder.convert(result); - final file = File(path); - await file.writeAsString(jsonStr, flush: true); + await File(path).writeAsString( + const JsonEncoder.withIndent(' ').convert(result), + flush: true); return path; } - // iOS: save to Downloads if possible (fallback to app docs). Directory? downloads; try { downloads = await getDownloadsDirectory(); } catch (_) { downloads = null; } - - final Directory dir = downloads ?? await getApplicationDocumentsDirectory(); + final dir = downloads ?? await getApplicationDocumentsDirectory(); final String path = p.join(dir.path, fileName); - - final encoder = const JsonEncoder.withIndent(' '); - final jsonStr = encoder.convert(result); - - final file = File(path); - await file.writeAsString(jsonStr, flush: true); + await File(path).writeAsString( + const JsonEncoder.withIndent(' ').convert(result), + flush: true); return path; } @@ -142,24 +137,42 @@ class _AudioResponseMeasurementViewState extends State res)>>[]; + if (widget.left != null) { + futures.add(widget.left! + .measureAudioResponse(widget.parameters) + .then((r) => (true, r))); + } + if (widget.right != null) { + futures.add(widget.right! + .measureAudioResponse(widget.parameters) + .then((r) => (false, r))); + } + + final results = await Future.wait(futures); if (!mounted) return; + + Map? leftRes; + Map? rightRes; + for (final (isLeft, res) in results) { + if (isLeft) { + leftRes = res; + } else { + rightRes = res; + } + } + setState(() { - _result = res; + _leftResult = leftRes; + _rightResult = rightRes; _isMeasuring = false; }); - if (!context.mounted) return; - // final msg = savedPath == null - // ? 'Measured. (Not saved — either not supported or you canceled folder selection.)' - // : 'Measured and saved to: $savedPath'; - // ScaffoldMessenger.of(context).showSnackBar( - // SnackBar(content: Text(msg)), - // ); } catch (e, st) { if (!mounted) return; setState(() { @@ -199,12 +212,17 @@ class _AudioResponseMeasurementViewState extends State result) { - final int version = (result['version'] as int?) ?? -1; - final int quality = (result['quality'] as int?) ?? -1; - final double meanMagnitude = (result['mean_magnitude'] as double?) ?? -1; - - final List pointsDyn = (result['points'] as List?) ?? const []; - final allPoints = pointsDyn - .whereType() - .map((m) => { - 'frequency_hz': (m['frequency_hz'] as num?)?.toDouble(), - 'frequency_raw_q12_4': (m['frequency_raw_q12_4'] as num?)?.toInt(), - 'magnitude': (m['magnitude'] as num?)?.toDouble(), - }) - .where((m) => - m['frequency_hz'] != null && - m['magnitude'] != null && - (m['frequency_hz'] as double) > 0.0) - .toList(); + Widget _buildResult(ThemeData theme) { + List> _parsePoints(Map? result) { + if (result == null) return []; + final pointsDyn = (result['points'] as List?) ?? const []; + final pts = pointsDyn + .whereType() + .map((m) => { + 'frequency_hz': (m['frequency_hz'] as num?)?.toDouble(), + 'frequency_raw_q12_4': (m['frequency_raw_q12_4'] as num?)?.toInt(), + 'magnitude': (m['magnitude'] as num?)?.toDouble(), + }) + .where((m) => + m['frequency_hz'] != null && + m['magnitude'] != null && + (m['frequency_hz'] as double) > 0.0) + .cast>() + .toList(); + pts.sort((a, b) => + (a['frequency_hz'] as double).compareTo(b['frequency_hz'] as double)); + return pts; + } + + final leftPoints = _parsePoints(_leftResult); + final rightPoints = _parsePoints(_rightResult); - // Sort by frequency - allPoints.sort((a, b) => - (a['frequency_hz'] as double).compareTo(b['frequency_hz'] as double)); + // Compute a shared normalization factor (avg of all measured magnitudes) + final allMags = [ + ...leftPoints.map((p) => p['magnitude'] as double), + ...rightPoints.map((p) => p['magnitude'] as double), + ]; + final normMag = + allMags.isEmpty ? 1.0 : allMags.reduce((a, b) => a + b) / allMags.length; - // Normalize magnitudes by average peak magnitude - final double avgPeakMag = allPoints.isEmpty - ? 1.0 - : allPoints.map((p) => p['magnitude'] as double).reduce((a, b) => a + b) / - allPoints.length; - final normMag = avgPeakMag == 0.0 ? 1.0 : avgPeakMag; + int _quality(Map? r) => (r?['quality'] as int?) ?? -1; + double _meanMag(Map? r) => + (r?['mean_magnitude'] as double?) ?? -1; return Column( children: [ @@ -333,38 +360,46 @@ class _AudioResponseMeasurementViewState extends State setState(() => _showRawValues = !_showRawValues), icon: Icon(_showRawValues ? Icons.expand_less : Icons.expand_more), - label: Text(_showRawValues ? 'Hide raw values' : 'View raw values'), + label: Text( + _showRawValues ? 'Hide raw values' : 'View raw values'), ), ), - // Raw values table if (_showRawValues) ...[ const SizedBox(height: 8), - _buildRawValuesTable(theme, allPoints, normMag), + if (leftPoints.isNotEmpty) + _buildRawValuesTable(theme, leftPoints, normMag, label: 'Left'), + if (rightPoints.isNotEmpty) + _buildRawValuesTable(theme, rightPoints, normMag, label: 'Right'), ], ], ); @@ -372,19 +407,24 @@ class _AudioResponseMeasurementViewState extends State> points, + List> leftPoints, + List> rightPoints, double normMag, ) { final colorScheme = theme.colorScheme; - final measuredColor = colorScheme.primary; + final leftColor = colorScheme.primary; + final rightColor = colorScheme.error; final targetColor = colorScheme.tertiary; - // Measured spots: x = log10(freq), y = normalizedMagnitude - final measuredSpots = points.map((p) { - final freq = p['frequency_hz']!; - final mag = p['magnitude']!; - return FlSpot(math.log(freq) / math.ln10, mag / normMag); - }).toList(); + List _toSpots(List> pts) => pts + .map((p) => FlSpot( + math.log(p['frequency_hz'] as double) / math.ln10, + (p['magnitude'] as double) / normMag, + )) + .toList(); + + final leftSpots = _toSpots(leftPoints); + final rightSpots = _toSpots(rightPoints); // Target spots final targetSpots = List.generate(_kTargetFrequencies.length, (i) { @@ -394,26 +434,86 @@ class _AudioResponseMeasurementViewState extends State math.log(f) / math.ln10) - .toList(); + final xTicks = + _kTargetFrequencies.map((f) => math.log(f) / math.ln10).toList(); final allYValues = [ - ...measuredSpots.map((s) => s.y), + ...leftSpots.map((s) => s.y), + ...rightSpots.map((s) => s.y), ..._kTargetMagnitudes, ]; - final maxY = allYValues.reduce(math.max); + final maxY = allYValues.isEmpty ? 1.5 : allYValues.reduce(math.max); final yMax = (maxY * 1.2).clamp(1.5, 2.5); + final lineBars = [ + // Target (dashed) + LineChartBarData( + spots: targetSpots, + color: targetColor, + barWidth: 2, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, bar, index) => FlDotCirclePainter( + radius: 3, + color: targetColor, + strokeWidth: 0, + strokeColor: Colors.transparent, + ), + ), + dashArray: [6, 4], + isCurved: true, + curveSmoothness: 0.2, + belowBarData: BarAreaData(show: false), + ), + // Left + if (leftSpots.isNotEmpty) + LineChartBarData( + spots: leftSpots, + color: leftColor, + barWidth: 2.5, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, bar, index) => FlDotCirclePainter( + radius: 4, + color: leftColor, + strokeWidth: 0, + strokeColor: Colors.transparent, + ), + ), + isCurved: true, + curveSmoothness: 0.2, + belowBarData: BarAreaData(show: false), + ), + // Right + if (rightSpots.isNotEmpty) + LineChartBarData( + spots: rightSpots, + color: rightColor, + barWidth: 2.5, + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, bar, index) => FlDotCirclePainter( + radius: 4, + color: rightColor, + strokeWidth: 0, + strokeColor: Colors.transparent, + ), + ), + isCurved: true, + curveSmoothness: 0.2, + belowBarData: BarAreaData(show: false), + ), + ]; + return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Legend - Row( + Wrap( + spacing: 16, children: [ - _legendDot(measuredColor, 'Measured'), - const SizedBox(width: 16), + if (leftSpots.isNotEmpty) _legendDot(leftColor, 'Left'), + if (rightSpots.isNotEmpty) _legendDot(rightColor, 'Right'), _legendDash(targetColor, 'Target'), ], ), @@ -426,48 +526,7 @@ class _AudioResponseMeasurementViewState extends State - FlDotCirclePainter( - radius: 3, - color: targetColor, - strokeWidth: 0, - strokeColor: Colors.transparent, - ), - ), - dashArray: [6, 4], - isCurved: true, - curveSmoothness: 0.2, - belowBarData: BarAreaData(show: false), - ), - // Measured line - if (measuredSpots.isNotEmpty) - LineChartBarData( - spots: measuredSpots, - color: measuredColor, - barWidth: 2.5, - dotData: FlDotData( - show: true, - getDotPainter: (spot, percent, bar, index) => - FlDotCirclePainter( - radius: 4, - color: measuredColor, - strokeWidth: 0, - strokeColor: Colors.transparent, - ), - ), - isCurved: true, - curveSmoothness: 0.2, - belowBarData: BarAreaData(show: false), - ), - ], + lineBarsData: lineBars, titlesData: FlTitlesData( leftTitles: AxisTitles( axisNameWidget: Text( @@ -498,9 +557,8 @@ class _AudioResponseMeasurementViewState extends State (x - value).abs() < 0.001); + final matchIdx = xTicks + .indexWhere((x) => (x - value).abs() < 0.001); if (matchIdx < 0) return const SizedBox.shrink(); final freq = _kTargetFrequencies[matchIdx]; final label = freq < 100 @@ -511,20 +569,16 @@ class _AudioResponseMeasurementViewState extends State> points, - double normMag, - ) { + double normMag, { + String label = '', + }) { if (points.isEmpty) { return const Padding( padding: EdgeInsets.all(8), @@ -592,7 +655,10 @@ class _AudioResponseMeasurementViewState extends State Function( + AudioResponseManager? left, + AudioResponseManager? right, + ) startApp; + final List supportedDevices; + + const SelectAudioResponsePairView({ + super.key, + required this.startApp, + this.supportedDevices = const [], + }); + + @override + State createState() => + _SelectAudioResponsePairViewState(); +} + +class _SelectAudioResponsePairViewState + extends State { + /// DeviceId of the selected group representative (primary wearable). + String? _selectedGroupId; + Future>? _groupsFuture; + String _groupFingerprint = ''; + bool _isStartingApp = false; + + @override + Widget build(BuildContext context) { + return PlatformScaffold( + appBar: PlatformAppBar( + title: PlatformText('Select Wearable'), + ), + body: Consumer( + builder: (context, wearablesProvider, _) { + final compatibleWearables = wearablesProvider.wearables + .where( + (w) => wearableIsCompatibleWithApp( + wearable: w, + supportedDevices: widget.supportedDevices, + ), + ) + .toList(growable: false); + + _refreshGroupsIfNeeded(compatibleWearables); + + return Column( + children: [ + Expanded( + child: _buildBody(context, compatibleWearables), + ), + SafeArea( + top: false, + minimum: const EdgeInsets.fromLTRB(16, 0, 16, 12), + child: SizedBox( + width: double.infinity, + child: PlatformElevatedButton( + onPressed: _selectedGroupId != null && !_isStartingApp + ? () => _startSelected(wearablesProvider, compatibleWearables) + : null, + child: _isStartingApp + ? const SizedBox( + height: 20, + width: 20, + child: PlatformCircularProgressIndicator(), + ) + : PlatformText('Start App'), + ), + ), + ), + ], + ); + }, + ), + ); + } + + void _refreshGroupsIfNeeded(List wearables) { + final fingerprint = + wearables.map((w) => '${w.deviceId}:${w.name}').join('|'); + if (_groupsFuture != null && _groupFingerprint == fingerprint) return; + _groupFingerprint = fingerprint; + _groupsFuture = buildWearableDisplayGroups( + wearables, + // Combine pairs so stereo earables appear as one entry + shouldCombinePair: (_, __) => true, + ); + } + + Widget _buildBody(BuildContext context, List compatibleWearables) { + if (compatibleWearables.isEmpty) { + return Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 18), + child: Text( + 'No compatible wearables connected for this app.', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodyMedium, + ), + ), + ); + } + + return FutureBuilder>( + future: _groupsFuture, + builder: (context, snapshot) { + final groups = snapshot.data ?? + compatibleWearables + .map((w) => WearableDisplayGroup.single(wearable: w)) + .toList(growable: false); + + if (groups.isEmpty) return const SizedBox.shrink(); + + return ListView.builder( + padding: const EdgeInsets.all(10), + itemCount: groups.length, + itemBuilder: (context, index) { + final group = groups[index]; + final isSelected = _selectedGroupId == group.primary.deviceId; + return _GroupCard( + group: group, + selected: isSelected, + onTap: () => setState(() { + _selectedGroupId = group.primary.deviceId; + }), + ); + }, + ); + }, + ); + } + + Future _startSelected( + WearablesProvider wearablesProvider, + List compatibleWearables, + ) async { + if (_selectedGroupId == null) return; + + // Rebuild groups to find the selected one + final groups = await (buildWearableDisplayGroups( + compatibleWearables, + shouldCombinePair: (_, __) => true, + )); + + final group = groups + .where((g) => g.primary.deviceId == _selectedGroupId) + .firstOrNull; + if (group == null) return; + + AudioResponseManager? leftManager; + AudioResponseManager? rightManager; + + if (group.isCombined) { + final left = group.leftDevice; + final right = group.rightDevice; + leftManager = left?.getCapability(); + rightManager = right?.getCapability(); + } else { + final manager = group.primary.getCapability(); + // Assign to left or right based on known position, default to left + if (group.primaryPosition == DevicePosition.right) { + rightManager = manager; + } else { + leftManager = manager; + } + } + + if (leftManager == null && rightManager == null) return; + + final navigator = Navigator.of(context); + setState(() => _isStartingApp = true); + + navigator.push( + platformPageRoute( + context: context, + builder: (context) => const _LoadingScreen(), + ), + ); + + try { + final app = await widget.startApp(leftManager, rightManager); + if (!mounted) return; + navigator.pushReplacement( + platformPageRoute( + context: context, + builder: (context) => app, + ), + ); + } catch (_) { + if (navigator.canPop()) navigator.pop(); + rethrow; + } finally { + if (mounted) setState(() => _isStartingApp = false); + } + } +} + +// --------------------------------------------------------------------------- +// Group card +// --------------------------------------------------------------------------- + +class _GroupCard extends StatelessWidget { + final WearableDisplayGroup group; + final bool selected; + final VoidCallback onTap; + + const _GroupCard({ + required this.group, + required this.selected, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final colorScheme = theme.colorScheme; + + return Card( + elevation: selected ? 4 : 1, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + side: selected + ? BorderSide(color: colorScheme.primary, width: 2) + : BorderSide.none, + ), + child: InkWell( + borderRadius: BorderRadius.circular(12), + onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), + child: Row( + children: [ + // Icon placeholder + const SizedBox(width: 40, height: 40, + child: Icon(Icons.headphones, size: 32)), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + group.isCombined + ? group.displayName + : formatWearableDisplayName(group.primary.name), + style: theme.textTheme.titleSmall, + ), + if (group.isCombined) + Text( + 'Left + Right', + style: theme.textTheme.bodySmall + ?.copyWith(color: colorScheme.primary), + ) + else if (group.primaryPosition != null) + Text( + group.primaryPosition == DevicePosition.left + ? 'Left' + : 'Right', + style: theme.textTheme.bodySmall + ?.copyWith(color: theme.hintColor), + ), + Text( + group.primary.deviceId, + style: theme.textTheme.bodySmall + ?.copyWith(color: theme.hintColor), + overflow: TextOverflow.ellipsis, + ), + if (group.isCombined && group.secondary != null) + Text( + group.secondary!.deviceId, + style: theme.textTheme.bodySmall + ?.copyWith(color: theme.hintColor), + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + if (selected) + Icon(Icons.check_circle, color: colorScheme.primary), + ], + ), + ), + ), + ); + } +} + +// --------------------------------------------------------------------------- +// Loading screen +// --------------------------------------------------------------------------- + +class _LoadingScreen extends StatelessWidget { + const _LoadingScreen(); + + @override + Widget build(BuildContext context) { + return PlatformScaffold( + appBar: PlatformAppBar(title: PlatformText('Starting…')), + body: const Center(child: CircularProgressIndicator()), + ); + } +} diff --git a/open_wearable/lib/apps/widgets/apps_page.dart b/open_wearable/lib/apps/widgets/apps_page.dart index ad442101..399b996e 100644 --- a/open_wearable/lib/apps/widgets/apps_page.dart +++ b/open_wearable/lib/apps/widgets/apps_page.dart @@ -3,6 +3,7 @@ import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:go_router/go_router.dart'; import 'package:open_earable_flutter/open_earable_flutter.dart'; import 'package:open_wearable/apps/audio_response_measure/audio_response_measurement_view.dart'; +import 'package:open_wearable/apps/audio_response_measure/select_audio_response_pair_view.dart'; import 'package:open_wearable/apps/heart_tracker/widgets/heart_tracker_page.dart'; import 'package:open_wearable/apps/posture_tracker/model/earable_attitude_tracker.dart'; import 'package:open_wearable/apps/models/sensor_matching.dart'; @@ -174,22 +175,10 @@ final List _apps = [ description: "Measure and store audio responses", supportedDevices: _audioResponseSupportedDevices, accentColor: _appAccentColor, - widget: SelectEarableView( + widget: SelectAudioResponsePairView( supportedDevices: _audioResponseSupportedDevices, - startApp: (wearable, _) async { - final manager = wearable.getCapability(); - if (manager != null) { - return AudioResponseMeasurementView(manager: manager); - } else { - return PlatformScaffold( - appBar: PlatformAppBar( - title: PlatformText("Audio Response Measurement"), - ), - body: Center( - child: PlatformText("Audio Response Measurement not supported on this device."), - ), - ); - } + startApp: (left, right) async { + return AudioResponseMeasurementView(left: left, right: right); }, ), ), From 57a323073c3f65cc9ce7230ccda4f4adc05a10fa Mon Sep 17 00:00:00 2001 From: mkuettner97 Date: Sun, 3 May 2026 16:20:08 +0200 Subject: [PATCH 19/23] plot curve in dB --- .../audio_response_measurement_view.dart | 169 ++++++++++++++---- 1 file changed, 131 insertions(+), 38 deletions(-) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index 98ca4a3e..887909a0 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -16,6 +16,44 @@ import 'dart:io'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; +// Firmware constants for seal quality computation (mirrored from seal_check_service.c) +const double _kAvgMagnitude = 119.0; +const double _kAvgSlope = -0.07382279460490486; + +/// Computes seal quality score (0–100) from measured peaks, +/// replicating the firmware calculation in seal_check_service.c. +double _computeSealQuality(List> points) { + if (points.length < 2) return 0.0; + final mags = points.map((p) => p['magnitude'] as double).toList(); + final freqs = points.map((p) => p['frequency_hz'] as double).toList(); + final avgPeakMag = mags.reduce((a, b) => a + b) / mags.length; + + // MSE: compare each measured peak (normalised) to closest target magnitude + double mse = 0.0; + for (int i = 0; i < points.length; i++) { + final tIdx = _closestTargetIndex(freqs[i]); + final err = mags[i] / avgPeakMag - _kTargetMagnitudes[tIdx]; + mse += err * err; + } + mse /= points.length; + + // Linear regression: magnitude vs ln(frequency) + final logFreqs = freqs.map((f) => math.log(f)).toList(); + final meanLogFreq = logFreqs.reduce((a, b) => a + b) / logFreqs.length; + double num = 0.0, den = 0.0; + for (int i = 0; i < points.length; i++) { + final dLog = logFreqs[i] - meanLogFreq; + num += dLog * (mags[i] - avgPeakMag); + den += dLog * dLog; + } + final slope = den == 0 ? 0.0 : num / den; + + final q = math.min(avgPeakMag / _kAvgMagnitude, 1.0) - + mse - + (slope / _kAvgMagnitude - _kAvgSlope); + return (q * 100.0).clamp(0.0, 100.0); +} + // Target curve constants mirrored from firmware seal_check_service.c const List _kTargetFrequencies = [ 40.0, @@ -346,9 +384,8 @@ class _AudioResponseMeasurementViewState final normMag = allMags.isEmpty ? 1.0 : allMags.reduce((a, b) => a + b) / allMags.length; - int _quality(Map? r) => (r?['quality'] as int?) ?? -1; - double _meanMag(Map? r) => - (r?['mean_magnitude'] as double?) ?? -1; + final leftQuality = leftPoints.isNotEmpty ? _computeSealQuality(leftPoints) : null; + final rightQuality = rightPoints.isNotEmpty ? _computeSealQuality(rightPoints) : null; return Column( children: [ @@ -360,17 +397,12 @@ class _AudioResponseMeasurementViewState runSpacing: 8, spacing: 24, children: [ - if (_leftResult != null) ...[ - _kv(theme, 'Left Quality', '${_quality(_leftResult)} / 100'), - _kv(theme, 'Left Mean Mag', - _meanMag(_leftResult).toStringAsFixed(1)), - ], - if (_rightResult != null) ...[ + if (leftQuality != null) + _kv(theme, 'Left Quality', + '${leftQuality.round()} / 100'), + if (rightQuality != null) _kv(theme, 'Right Quality', - '${_quality(_rightResult)} / 100'), - _kv(theme, 'Right Mean Mag', - _meanMag(_rightResult).toStringAsFixed(1)), - ], + '${rightQuality.round()} / 100'), ], ), ), @@ -396,10 +428,7 @@ class _AudioResponseMeasurementViewState ), if (_showRawValues) ...[ const SizedBox(height: 8), - if (leftPoints.isNotEmpty) - _buildRawValuesTable(theme, leftPoints, normMag, label: 'Left'), - if (rightPoints.isNotEmpty) - _buildRawValuesTable(theme, rightPoints, normMag, label: 'Right'), + _buildRawValuesTabs(theme, leftPoints, rightPoints, normMag), ], ], ); @@ -412,25 +441,32 @@ class _AudioResponseMeasurementViewState double normMag, ) { final colorScheme = theme.colorScheme; - final leftColor = colorScheme.primary; + const leftColor = Colors.blue; final rightColor = colorScheme.error; final targetColor = colorScheme.tertiary; + // Convert to dB: 20 * log10(mag / normMag) + double _toDb(double mag) => + 20.0 * math.log(mag / normMag) / math.ln10; + List _toSpots(List> pts) => pts .map((p) => FlSpot( math.log(p['frequency_hz'] as double) / math.ln10, - (p['magnitude'] as double) / normMag, + _toDb(p['magnitude'] as double), )) .toList(); final leftSpots = _toSpots(leftPoints); final rightSpots = _toSpots(rightPoints); - // Target spots + // Target spots — target magnitudes are already normalised ratios + // Convert them to dB using normMag=1 reference (they're relative) final targetSpots = List.generate(_kTargetFrequencies.length, (i) { + // Target mags are normalised, so "dB" relative to mean target + // Use fixed reference: dB re 1.0 (i.e. 20*log10(targetMag)) return FlSpot( math.log(_kTargetFrequencies[i]) / math.ln10, - _kTargetMagnitudes[i], + 20.0 * math.log(_kTargetMagnitudes[i]) / math.ln10, ); }); @@ -440,10 +476,12 @@ class _AudioResponseMeasurementViewState final allYValues = [ ...leftSpots.map((s) => s.y), ...rightSpots.map((s) => s.y), - ..._kTargetMagnitudes, + ...targetSpots.map((s) => s.y), ]; - final maxY = allYValues.isEmpty ? 1.5 : allYValues.reduce(math.max); - final yMax = (maxY * 1.2).clamp(1.5, 2.5); + final rawMin = allYValues.isEmpty ? -10.0 : allYValues.reduce(math.min); + final rawMax = allYValues.isEmpty ? 6.0 : allYValues.reduce(math.max); + final yMin = ((rawMin - 3).floorToDouble()).clamp(-30.0, -3.0); + final yMax = ((rawMax + 3).ceilToDouble()).clamp(3.0, 15.0); final lineBars = [ // Target (dashed) @@ -523,25 +561,25 @@ class _AudioResponseMeasurementViewState LineChartData( minX: xTicks.first - 0.05, maxX: xTicks.last + 0.05, - minY: 0, + minY: yMin, maxY: yMax, clipData: const FlClipData.all(), lineBarsData: lineBars, titlesData: FlTitlesData( leftTitles: AxisTitles( axisNameWidget: Text( - 'Normalized magnitude', + 'Magnitude (dB)', style: theme.textTheme.labelSmall, ), axisNameSize: 16, sideTitles: SideTitles( showTitles: true, - reservedSize: 36, - interval: 0.5, + reservedSize: 40, + interval: 3, getTitlesWidget: (value, meta) => SideTitleWidget( meta: meta, child: Text( - value.toStringAsFixed(1), + '${value.toStringAsFixed(0)} dB', style: theme.textTheme.labelSmall, ), ), @@ -620,7 +658,7 @@ class _AudioResponseMeasurementViewState sideLabel = 'Right'; } return LineTooltipItem( - '$sideLabel\n${freq.toStringAsFixed(1)} Hz\n${s.y.toStringAsFixed(3)}', + '$sideLabel\n${freq.toStringAsFixed(1)} Hz\n${s.y.toStringAsFixed(1)} dB', TextStyle(color: c, fontSize: 12), ); }).toList(); @@ -634,6 +672,61 @@ class _AudioResponseMeasurementViewState ); } + Widget _buildRawValuesTabs( + ThemeData theme, + List> leftPoints, + List> rightPoints, + double normMag, + ) { + final tabs = <({String label, List> points})>[]; + if (leftPoints.isNotEmpty) tabs.add((label: 'Left', points: leftPoints)); + if (rightPoints.isNotEmpty) tabs.add((label: 'Right', points: rightPoints)); + if (tabs.isEmpty) return const SizedBox.shrink(); + + // Single side: show table directly without tabs + if (tabs.length == 1) { + return SizedBox( + height: 300, + child: _buildRawValuesTable( + theme, + tabs.first.points, + normMag, + label: tabs.first.label, + ), + ); + } + + return SizedBox( + height: 300, + child: DefaultTabController( + length: tabs.length, + child: Card( + child: Column( + children: [ + TabBar( + tabs: tabs.map((t) => Tab(text: t.label)).toList(), + ), + Expanded( + child: TabBarView( + children: tabs + .map((t) => SingleChildScrollView( + child: _buildRawValuesTable( + theme, + t.points, + normMag, + label: t.label, + ), + )) + .toList(), + ), + ), + ], + ), + ), + ), + ); + } + Widget _buildRawValuesTable( ThemeData theme, List> points, @@ -670,24 +763,24 @@ class _AudioResponseMeasurementViewState columns: const [ DataColumn(label: Text('Freq (Hz)')), DataColumn(label: Text('Magnitude'), numeric: true), - DataColumn(label: Text('Norm. Mag'), numeric: true), + DataColumn(label: Text('dB'), numeric: true), DataColumn(label: Text('Target Freq (Hz)')), - DataColumn(label: Text('Target Mag'), numeric: true), + DataColumn(label: Text('Target (dB)'), numeric: true), ], rows: points.map((point) { - final freq = point['frequency_hz']!; - final mag = point['magnitude']!; - final normM = mag / normMag; + final freq = point['frequency_hz'] as double; + final mag = point['magnitude'] as double; + final db = 20.0 * math.log(mag / normMag) / math.ln10; final tIdx = _closestTargetIndex(freq); final tFreq = _kTargetFrequencies[tIdx]; - final tMag = _kTargetMagnitudes[tIdx]; + final tDb = 20.0 * math.log(_kTargetMagnitudes[tIdx]) / math.ln10; return DataRow(cells: [ DataCell(Text(freq.toStringAsFixed(2))), DataCell(Text(mag.toStringAsFixed(0))), - DataCell(Text(normM.toStringAsFixed(3))), + DataCell(Text('${db.toStringAsFixed(1)} dB')), DataCell(Text(tFreq.toStringAsFixed(3))), - DataCell(Text(tMag.toStringAsFixed(5))), + DataCell(Text('${tDb.toStringAsFixed(1)} dB')), ]); }).toList(), ), From c0365cbc2fe70595fb8bcf31dfdffe42b4a89fef Mon Sep 17 00:00:00 2001 From: mkuettner97 Date: Sun, 3 May 2026 17:49:25 +0200 Subject: [PATCH 20/23] improve visualisation Co-authored-by: Copilot --- .../audio_response_measurement_view.dart | 226 ++++++++++-------- 1 file changed, 130 insertions(+), 96 deletions(-) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index 887909a0..71614f60 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -239,38 +239,41 @@ class _AudioResponseMeasurementViewState padding: const EdgeInsets.all(16), child: Column( children: [ - Row( - children: [ - Expanded( - child: FilledButton.icon( - onPressed: _isMeasuring ? null : _startMeasurement, - icon: const Icon(Icons.play_arrow), - label: Text(_isMeasuring ? 'Measuring…' : 'Measure'), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Row( + children: [ + Expanded( + child: FilledButton.icon( + onPressed: _isMeasuring ? null : _startMeasurement, + icon: const Icon(Icons.play_arrow), + label: Text(_isMeasuring ? 'Measuring…' : 'Measure'), + ), ), - ), - const SizedBox(width: 12), - OutlinedButton.icon( - onPressed: (_isMeasuring || !_hasAnyResult) - ? null - : () async { - final combined = { - if (_leftResult != null) 'left': _leftResult!, - if (_rightResult != null) 'right': _rightResult!, - }; - final path = - await _saveResultToDownloadsAsJson(combined); - final msg = path == null - ? 'Not saved — either not supported or you canceled.' - : 'Saved to: $path'; - if (!context.mounted) return; - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(msg)), - ); - }, - icon: const Icon(Icons.download), - label: const Text('Save JSON'), - ), - ], + const SizedBox(width: 12), + OutlinedButton.icon( + onPressed: (_isMeasuring || !_hasAnyResult) + ? null + : () async { + final combined = { + if (_leftResult != null) 'left': _leftResult!, + if (_rightResult != null) 'right': _rightResult!, + }; + final path = + await _saveResultToDownloadsAsJson(combined); + final msg = path == null + ? 'Not saved — either not supported or you canceled.' + : 'Saved to: $path'; + if (!context.mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(msg)), + ); + }, + icon: const Icon(Icons.download), + label: const Text('Save JSON'), + ), + ], + ), ), const SizedBox(height: 16), Expanded( @@ -387,28 +390,57 @@ class _AudioResponseMeasurementViewState final leftQuality = leftPoints.isNotEmpty ? _computeSealQuality(leftPoints) : null; final rightQuality = rightPoints.isNotEmpty ? _computeSealQuality(rightPoints) : null; - return Column( - children: [ - // Summary card - Card( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), - child: Wrap( - runSpacing: 8, - spacing: 24, - children: [ - if (leftQuality != null) - _kv(theme, 'Left Quality', - '${leftQuality.round()} / 100'), - if (rightQuality != null) - _kv(theme, 'Right Quality', - '${rightQuality.round()} / 100'), - ], - ), - ), + return SingleChildScrollView( + child: Column( + children: [ + // Summary cards + Row( + children: [ + if (leftQuality != null) ...[ + Expanded( + child: Card( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text('Left Quality', + style: theme.textTheme.labelMedium), + const SizedBox(height: 4), + Text('${leftQuality.round()} / 100', + style: theme.textTheme.titleLarge), + ], + ), + ), + ), + ), + if (rightQuality != null) const SizedBox(width: 8), + ], + if (rightQuality != null) + Expanded( + child: Card( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, vertical: 14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text('Right Quality', + style: theme.textTheme.labelMedium), + const SizedBox(height: 4), + Text('${rightQuality.round()} / 100', + style: theme.textTheme.titleLarge), + ], + ), + ), + ), + ), + ], ), const SizedBox(height: 8), - Expanded( + SizedBox( + height: 320, child: Card( child: Padding( padding: const EdgeInsets.fromLTRB(8, 16, 16, 8), @@ -431,6 +463,7 @@ class _AudioResponseMeasurementViewState _buildRawValuesTabs(theme, leftPoints, rightPoints, normMag), ], ], + ), ); } @@ -449,30 +482,32 @@ class _AudioResponseMeasurementViewState double _toDb(double mag) => 20.0 * math.log(mag / normMag) / math.ln10; - List _toSpots(List> pts) => pts - .map((p) => FlSpot( - math.log(p['frequency_hz'] as double) / math.ln10, - _toDb(p['magnitude'] as double), - )) - .toList(); + // Use frequency INDEX (0–8) as X so fl_chart tick placement is trivial. + // Each index corresponds to _kTargetFrequencies[index]. + List _toSpots(List> pts) { + final spots = []; + for (final p in pts) { + final freq = p['frequency_hz'] as double; + if (freq <= 0) continue; + spots.add(FlSpot( + _closestTargetIndex(freq).toDouble(), + _toDb(p['magnitude'] as double), + )); + } + return spots; + } final leftSpots = _toSpots(leftPoints); final rightSpots = _toSpots(rightPoints); - // Target spots — target magnitudes are already normalised ratios - // Convert them to dB using normMag=1 reference (they're relative) + // Target spots at integer indices; dB re 1.0 final targetSpots = List.generate(_kTargetFrequencies.length, (i) { - // Target mags are normalised, so "dB" relative to mean target - // Use fixed reference: dB re 1.0 (i.e. 20*log10(targetMag)) return FlSpot( - math.log(_kTargetFrequencies[i]) / math.ln10, + i.toDouble(), 20.0 * math.log(_kTargetMagnitudes[i]) / math.ln10, ); }); - final xTicks = - _kTargetFrequencies.map((f) => math.log(f) / math.ln10).toList(); - final allYValues = [ ...leftSpots.map((s) => s.y), ...rightSpots.map((s) => s.y), @@ -559,8 +594,8 @@ class _AudioResponseMeasurementViewState Expanded( child: LineChart( LineChartData( - minX: xTicks.first - 0.05, - maxX: xTicks.last + 0.05, + minX: -0.5, + maxX: 8.5, minY: yMin, maxY: yMax, clipData: const FlClipData.all(), @@ -574,7 +609,7 @@ class _AudioResponseMeasurementViewState axisNameSize: 16, sideTitles: SideTitles( showTitles: true, - reservedSize: 40, + reservedSize: 52, interval: 3, getTitlesWidget: (value, meta) => SideTitleWidget( meta: meta, @@ -593,22 +628,26 @@ class _AudioResponseMeasurementViewState axisNameSize: 16, sideTitles: SideTitles( showTitles: true, - reservedSize: 32, + reservedSize: 48, + interval: 1.0, getTitlesWidget: (value, meta) { - final matchIdx = xTicks - .indexWhere((x) => (x - value).abs() < 0.001); - if (matchIdx < 0) return const SizedBox.shrink(); - final freq = _kTargetFrequencies[matchIdx]; - final label = freq < 100 - ? freq.toStringAsFixed(0) - : freq >= 1000 - ? '${(freq / 1000).toStringAsFixed(1)}k' - : freq.toStringAsFixed(0); + final idx = value.round(); + if ((value - idx).abs() > 0.01 || + idx < 0 || + idx >= _kTargetFrequencies.length) { + return const SizedBox.shrink(); + } + final freq = _kTargetFrequencies[idx]; + final label = freq >= 1000 + ? '${(freq / 1000).toStringAsFixed(1)}k' + : freq.toStringAsFixed(0); return SideTitleWidget( meta: meta, - angle: -0.5, - child: Text(label, - style: theme.textTheme.labelSmall), + angle: -math.pi / 3, + child: Text( + label, + style: theme.textTheme.labelSmall, + ), ); }, ), @@ -629,9 +668,13 @@ class _AudioResponseMeasurementViewState color: theme.dividerColor.withAlpha(80), strokeWidth: 0.8, ), - verticalInterval: 0.01, - checkToShowVerticalLine: (value) => - xTicks.any((x) => (x - value).abs() < 0.001), + verticalInterval: 1.0, + checkToShowVerticalLine: (value) { + final idx = value.round(); + return (value - idx).abs() < 0.01 && + idx >= 0 && + idx < _kTargetFrequencies.length; + }, ), borderData: FlBorderData( show: true, @@ -642,9 +685,11 @@ class _AudioResponseMeasurementViewState ), lineTouchData: LineTouchData( touchTooltipData: LineTouchTooltipData( + getTooltipColor: (_) => Colors.grey.shade300, getTooltipItems: (touchedSpots) { return touchedSpots.map((s) { - final freq = math.pow(10, s.x).toDouble(); + final idx = s.x.round().clamp(0, _kTargetFrequencies.length - 1); + final freq = _kTargetFrequencies[idx]; final Color c; final String sideLabel; if (s.barIndex == 0) { @@ -822,17 +867,6 @@ class _AudioResponseMeasurementViewState ], ); } - - Widget _kv(ThemeData theme, String k, String v) { - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(k, style: theme.textTheme.labelMedium), - Text(v, style: theme.textTheme.titleMedium), - ], - ); - } } class _DashPainter extends CustomPainter { From b00c071cc01f42860a276719232efc76d0846b21 Mon Sep 17 00:00:00 2001 From: Dennis <45356478+DennisMoschina@users.noreply.github.com> Date: Thu, 7 May 2026 13:49:21 +0200 Subject: [PATCH 21/23] feat(audio-response): added icon for audio response measure app --- .../assets/audio-response-icon.png | Bin 0 -> 401420 bytes open_wearable/lib/apps/widgets/apps_page.dart | 2 +- open_wearable/pubspec.yaml | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 open_wearable/lib/apps/audio_response_measure/assets/audio-response-icon.png diff --git a/open_wearable/lib/apps/audio_response_measure/assets/audio-response-icon.png b/open_wearable/lib/apps/audio_response_measure/assets/audio-response-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b3147132c8dbe1eaa5cac14ae470c65274bc2d GIT binary patch literal 401420 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%0A$z)~XRXv-gOC_VYGI}*Yc6j$MyIy~91)pyD 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 z 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

$ERA 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

$Y;!-;KDqmTQYJVmlzu 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 _apps = [ ), ), AppInfo( - logoPath: "", + logoPath: "lib/apps/audio_response_measure/assets/audio-response-icon.png", title: "Audio Response", description: "Measure and store audio responses", supportedDevices: _audioResponseSupportedDevices, diff --git a/open_wearable/pubspec.yaml b/open_wearable/pubspec.yaml index 40a1262e..daaa147f 100644 --- a/open_wearable/pubspec.yaml +++ b/open_wearable/pubspec.yaml @@ -90,6 +90,7 @@ flutter: assets: - lib/apps/posture_tracker/assets/ - lib/apps/heart_tracker/assets/ + - lib/apps/audio_response_measure/assets/ - lib/assets/devices/phone-app.png - android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png From 8e9130f1e85fa3081ba7af171318de1fc77e85a6 Mon Sep 17 00:00:00 2001 From: Dennis <45356478+DennisMoschina@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:31:30 +0200 Subject: [PATCH 22/23] chore(dependencies): changed dependency of open_earable_flutter to git for development --- open_wearable/pubspec.lock | 9 +++++---- open_wearable/pubspec.yaml | 6 +++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/open_wearable/pubspec.lock b/open_wearable/pubspec.lock index e921734c..7958414b 100644 --- a/open_wearable/pubspec.lock +++ b/open_wearable/pubspec.lock @@ -531,10 +531,11 @@ packages: open_earable_flutter: dependency: "direct main" description: - name: open_earable_flutter - sha256: d7a2e491fa589ea14093101fa37b182d748240ac26fe9cafe9938371f6256b67 - url: "https://pub.dev" - source: hosted + path: "." + ref: "123-feature/seal_check" + resolved-ref: d6108d65dba2be94c8ec4c6464de91e12380e43f + url: "https://github.com/OpenEarable/open_earable_flutter.git" + source: git version: "2.3.10" open_file: dependency: "direct main" diff --git a/open_wearable/pubspec.yaml b/open_wearable/pubspec.yaml index daaa147f..a2e12253 100644 --- a/open_wearable/pubspec.yaml +++ b/open_wearable/pubspec.yaml @@ -35,7 +35,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.9 open_file: ^3.5.11 - open_earable_flutter: ^2.3.10 + # open_earable_flutter: ^2.3.10 + open_earable_flutter: + git: + url: https://github.com/OpenEarable/open_earable_flutter.git + ref: 123-feature/seal_check universal_ble: ^2.0.2 flutter_platform_widgets: ^10.0.1 provider: ^6.1.5+1 From 594ea7f96a4bf45c5f4a824188a879f1c814b2c6 Mon Sep 17 00:00:00 2001 From: Dennis <45356478+DennisMoschina@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:35:46 +0200 Subject: [PATCH 23/23] fix(audio-response): fixed issues with flutter analyze --- .../audio_response_measurement_view.dart | 60 +++++++++---------- .../select_audio_response_pair_view.dart | 4 +- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart index 71614f60..a1f9cad3 100644 --- a/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/audio_response_measurement_view.dart @@ -38,7 +38,7 @@ double _computeSealQuality(List> points) { mse /= points.length; // Linear regression: magnitude vs ln(frequency) - final logFreqs = freqs.map((f) => math.log(f)).toList(); + final logFreqs = freqs.map(math.log).toList(); final meanLogFreq = logFreqs.reduce((a, b) => a + b) / logFreqs.length; double num = 0.0, den = 0.0; for (int i = 0; i < points.length; i++) { @@ -101,7 +101,7 @@ class AudioResponseMeasurementView extends StatefulWidget { this.parameters = const {}, this.title = 'Audio Response', }) : assert(left != null || right != null, - 'At least one of left or right must be provided'); + 'At least one of left or right must be provided',); final AudioResponseManager? left; final AudioResponseManager? right; @@ -147,12 +147,12 @@ class _AudioResponseMeasurementViewState final fileName = 'audio_response_${_timestampForFilename(now)}.json'; if (Platform.isAndroid) { - final dirPath = await FilePicker.platform.getDirectoryPath(); + final dirPath = await FilePicker.getDirectoryPath(); if (dirPath == null || dirPath.isEmpty) return null; final String path = p.join(dirPath, fileName); await File(path).writeAsString( const JsonEncoder.withIndent(' ').convert(result), - flush: true); + flush: true,); return path; } @@ -166,7 +166,7 @@ class _AudioResponseMeasurementViewState final String path = p.join(dir.path, fileName); await File(path).writeAsString( const JsonEncoder.withIndent(' ').convert(result), - flush: true); + flush: true,); return path; } @@ -185,12 +185,12 @@ class _AudioResponseMeasurementViewState if (widget.left != null) { futures.add(widget.left! .measureAudioResponse(widget.parameters) - .then((r) => (true, r))); + .then((r) => (true, r)),); } if (widget.right != null) { futures.add(widget.right! .measureAudioResponse(widget.parameters) - .then((r) => (false, r))); + .then((r) => (false, r)),); } final results = await Future.wait(futures); @@ -355,7 +355,7 @@ class _AudioResponseMeasurementViewState } Widget _buildResult(ThemeData theme) { - List> _parsePoints(Map? result) { + List> parsePoints(Map? result) { if (result == null) return []; final pointsDyn = (result['points'] as List?) ?? const []; final pts = pointsDyn @@ -364,20 +364,20 @@ class _AudioResponseMeasurementViewState 'frequency_hz': (m['frequency_hz'] as num?)?.toDouble(), 'frequency_raw_q12_4': (m['frequency_raw_q12_4'] as num?)?.toInt(), 'magnitude': (m['magnitude'] as num?)?.toDouble(), - }) + },) .where((m) => m['frequency_hz'] != null && m['magnitude'] != null && - (m['frequency_hz'] as double) > 0.0) + (m['frequency_hz'] as double) > 0.0,) .cast>() .toList(); pts.sort((a, b) => - (a['frequency_hz'] as double).compareTo(b['frequency_hz'] as double)); + (a['frequency_hz'] as double).compareTo(b['frequency_hz'] as double),); return pts; } - final leftPoints = _parsePoints(_leftResult); - final rightPoints = _parsePoints(_rightResult); + final leftPoints = parsePoints(_leftResult); + final rightPoints = parsePoints(_rightResult); // Compute a shared normalization factor (avg of all measured magnitudes) final allMags = [ @@ -401,15 +401,15 @@ class _AudioResponseMeasurementViewState child: Card( child: Padding( padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 14), + horizontal: 16, vertical: 14,), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text('Left Quality', - style: theme.textTheme.labelMedium), + style: theme.textTheme.labelMedium,), const SizedBox(height: 4), Text('${leftQuality.round()} / 100', - style: theme.textTheme.titleLarge), + style: theme.textTheme.titleLarge,), ], ), ), @@ -422,15 +422,15 @@ class _AudioResponseMeasurementViewState child: Card( child: Padding( padding: const EdgeInsets.symmetric( - horizontal: 16, vertical: 14), + horizontal: 16, vertical: 14,), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text('Right Quality', - style: theme.textTheme.labelMedium), + style: theme.textTheme.labelMedium,), const SizedBox(height: 4), Text('${rightQuality.round()} / 100', - style: theme.textTheme.titleLarge), + style: theme.textTheme.titleLarge,), ], ), ), @@ -455,7 +455,7 @@ class _AudioResponseMeasurementViewState onPressed: () => setState(() => _showRawValues = !_showRawValues), icon: Icon(_showRawValues ? Icons.expand_less : Icons.expand_more), label: Text( - _showRawValues ? 'Hide raw values' : 'View raw values'), + _showRawValues ? 'Hide raw values' : 'View raw values',), ), ), if (_showRawValues) ...[ @@ -479,26 +479,26 @@ class _AudioResponseMeasurementViewState final targetColor = colorScheme.tertiary; // Convert to dB: 20 * log10(mag / normMag) - double _toDb(double mag) => + double toDb(double mag) => 20.0 * math.log(mag / normMag) / math.ln10; // Use frequency INDEX (0–8) as X so fl_chart tick placement is trivial. // Each index corresponds to _kTargetFrequencies[index]. - List _toSpots(List> pts) { + List toSpots(List> pts) { final spots = []; for (final p in pts) { final freq = p['frequency_hz'] as double; if (freq <= 0) continue; spots.add(FlSpot( _closestTargetIndex(freq).toDouble(), - _toDb(p['magnitude'] as double), - )); + toDb(p['magnitude'] as double), + ),); } return spots; } - final leftSpots = _toSpots(leftPoints); - final rightSpots = _toSpots(rightPoints); + final leftSpots = toSpots(leftPoints); + final rightSpots = toSpots(rightPoints); // Target spots at integer indices; dB re 1.0 final targetSpots = List.generate(_kTargetFrequencies.length, (i) { @@ -653,9 +653,9 @@ class _AudioResponseMeasurementViewState ), ), topTitles: const AxisTitles( - sideTitles: SideTitles(showTitles: false)), + sideTitles: SideTitles(showTitles: false),), rightTitles: const AxisTitles( - sideTitles: SideTitles(showTitles: false)), + sideTitles: SideTitles(showTitles: false),), ), gridData: FlGridData( show: true, @@ -761,7 +761,7 @@ class _AudioResponseMeasurementViewState normMag, label: t.label, ), - )) + ),) .toList(), ), ), @@ -826,7 +826,7 @@ class _AudioResponseMeasurementViewState DataCell(Text('${db.toStringAsFixed(1)} dB')), DataCell(Text(tFreq.toStringAsFixed(3))), DataCell(Text('${tDb.toStringAsFixed(1)} dB')), - ]); + ],); }).toList(), ), ), diff --git a/open_wearable/lib/apps/audio_response_measure/select_audio_response_pair_view.dart b/open_wearable/lib/apps/audio_response_measure/select_audio_response_pair_view.dart index 2a19cde1..0b019c32 100644 --- a/open_wearable/lib/apps/audio_response_measure/select_audio_response_pair_view.dart +++ b/open_wearable/lib/apps/audio_response_measure/select_audio_response_pair_view.dart @@ -180,6 +180,8 @@ class _SelectAudioResponsePairViewState if (leftManager == null && rightManager == null) return; + if (!mounted) return; + final navigator = Navigator.of(context); setState(() => _isStartingApp = true); @@ -245,7 +247,7 @@ class _GroupCard extends StatelessWidget { children: [ // Icon placeholder const SizedBox(width: 40, height: 40, - child: Icon(Icons.headphones, size: 32)), + child: Icon(Icons.headphones, size: 32),), const SizedBox(width: 12), Expanded( child: Column(