diff options
Diffstat (limited to 'lib/model/motive_selection/universal_blue_motive_selection.dart')
-rw-r--r-- | lib/model/motive_selection/universal_blue_motive_selection.dart | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/lib/model/motive_selection/universal_blue_motive_selection.dart b/lib/model/motive_selection/universal_blue_motive_selection.dart index 607d429..43edd79 100644 --- a/lib/model/motive_selection/universal_blue_motive_selection.dart +++ b/lib/model/motive_selection/universal_blue_motive_selection.dart @@ -16,13 +16,16 @@ import 'dart:convert'; import 'package:universal_ble/universal_ble.dart'; +import 'package:uvok_epaper_badge/model/motive_selection/badge_parser.dart'; import 'package:uvok_epaper_badge/string_ext.dart'; import 'package:uvok_epaper_badge/badge_exception.dart'; import 'package:uvok_epaper_badge/model/badge_motive.dart'; import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart'; import 'package:uvok_epaper_badge/model/motive_selection/badge_motive_selection.dart'; -class UniversalBlueMotiveSelection implements BadgeMotiveSelection { +class UniversalBlueMotiveSelection + with BadgeParser + implements BadgeMotiveSelection { final UniversalBleDevice _device; final String _badgeService = "ca260000-b4bb-46b2-bd06-b7b7a61ea990"; final String _currentMotiveCharacteristic = @@ -78,18 +81,7 @@ class UniversalBlueMotiveSelection implements BadgeMotiveSelection { service: _badgeService, ); var val = await c.read(); - var templates = ascii.decode(val); - _cachedMotives = templates - .split(";") - .where((s) => s.isNotEmpty) - .map((String s) { - List<String> parts = s.splitFirst("-"); - if (parts.length != 2) { - return BadgeMotive(-1, "Invalid value"); - } - return BadgeMotive(int.tryParse(parts[0]) ?? -1, parts[1]); - }) - .toList(growable: false); + _cachedMotives = parseBadgeMotives(val); } on NotFoundException { throw BadgeException("Characeristic/Service not found."); } |