Skip to content

Commit 560ab7d

Browse files
authored
chore: subscribe to battery block params (#90)
* chore(macos): AppDelegate automigration * fix: exception raised when trying to cast list ot set * fix: subscribe packages not sent when there are subscription parameters ids in DeveloperToolsParametersStorage * chore: subscribe to LowVoltageMinMaxDelta, LowVoltage and Temperature parameters instead of requesting them periodically * chore: redesign ChargingScreen
1 parent 5e47ae7 commit 560ab7d

File tree

14 files changed

+239
-388
lines changed

14 files changed

+239
-388
lines changed

lib/app/scopes/flows/selected_data_source_scope.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,14 @@ class SelectedDataSourceScope extends AutoRouter {
144144
create: (context) => OutgoingPackagesCubit(
145145
dataSource: context.read(),
146146
developerToolsParametersStorage: context.read(),
147-
),
147+
)..subscribeTo(
148+
context
149+
.read<DeveloperToolsParametersStorage>()
150+
.data
151+
.subscriptionParameterIds
152+
.map(DataSourceParameterId.fromInt)
153+
.toSet(),
154+
),
148155
),
149156

150157
BlocProvider(

lib/app/scopes/screens/charging_screen_wrapper.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class ChargingScreenWrapper extends StatelessWidget
2323
create: (context) {
2424
context
2525
.read<OutgoingPackagesCubit>()
26-
.subscribeTo(BatteryDataCubit.kDefaultSubscribeParameters);
26+
.subscribeTo(BatteryDataCubit.kAllParameterIds);
2727
return BatteryDataCubit(
2828
dataSource: context.read(),
2929
hardwareCount: context.read<HardwareCount>(),

lib/domain/data_source/blocs/battery_data_cubit.dart

Lines changed: 18 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import 'dart:async';
2-
31
import 'package:bloc/bloc.dart';
42
import 'package:equatable/equatable.dart';
53
import 'package:meta/meta.dart';
64
import 'package:pixel_app_flutter/domain/app/app.dart';
75
import 'package:pixel_app_flutter/domain/data_source/data_source.dart';
86
import 'package:pixel_app_flutter/domain/data_source/models/package/incoming/incoming_data_source_packages.dart';
9-
import 'package:pixel_app_flutter/domain/data_source/models/package/outgoing/outgoing_data_source_packages.dart';
107
import 'package:pixel_app_flutter/domain/data_source/models/package_data/package_data.dart';
118
import 'package:re_seedwork/re_seedwork.dart';
129

@@ -112,10 +109,6 @@ class BatteryDataCubit extends Cubit<BatteryDataState>
112109
BatteryDataCubit({
113110
required this.dataSource,
114111
required HardwareCount hardwareCount,
115-
this.temperatureUpdateDuration = kDefaultTemperatureUpdateDuration,
116-
this.voltageUpdateDuration = kDefaultVoltageUpdateDuration,
117-
this.temperatureParametersId = kDefaultTemperatureParameterIds,
118-
this.voltageParametersId = kDefaultVoltageParameterIds,
119112
}) : super(
120113
BatteryDataState.initial(
121114
batteriesCount: hardwareCount.batteries,
@@ -211,6 +204,9 @@ class BatteryDataCubit extends Cubit<BatteryDataState>
211204
});
212205
}
213206

207+
@protected
208+
final DataSource dataSource;
209+
214210
static Set<DataSourceParameterId> kDefaultSubscribeParameters = {
215211
const DataSourceParameterId.highCurrent1(),
216212
const DataSourceParameterId.highCurrent2(),
@@ -220,80 +216,21 @@ class BatteryDataCubit extends Cubit<BatteryDataState>
220216
const DataSourceParameterId.maxTemperature2(),
221217
};
222218

223-
static const kDefaultTemperatureUpdateDuration = Duration(seconds: 3);
224-
static const kDefaultVoltageUpdateDuration = Duration(seconds: 3);
225-
226-
@protected
227-
final DataSource dataSource;
228-
229-
@protected
230-
final Duration temperatureUpdateDuration;
231-
232-
@protected
233-
final Duration voltageUpdateDuration;
234-
235-
@protected
236-
final List<DataSourceParameterId> temperatureParametersId;
237-
238-
@protected
239-
final List<DataSourceParameterId> voltageParametersId;
240-
241-
@visibleForTesting
242-
static const kDefaultVoltageParameterIds = [
243-
DataSourceParameterId.lowVoltageMinMaxDelta1(),
244-
DataSourceParameterId.lowVoltageMinMaxDelta2(),
245-
DataSourceParameterId.lowVoltage1(),
246-
DataSourceParameterId.lowVoltage2(),
247-
];
248-
249-
@visibleForTesting
250-
static const kDefaultTemperatureParameterIds = [
251-
DataSourceParameterId.temperature1(),
252-
DataSourceParameterId.temperature2(),
253-
];
254-
255-
@visibleForTesting
256-
Timer? temperatureTimer;
257-
258-
@visibleForTesting
259-
Timer? voltageTimer;
260-
261-
void startUpdatingTemperature() {
262-
cancelUpdatingTemperature();
263-
_sendValueRequestPackages(temperatureParametersId);
264-
temperatureTimer = Timer.periodic(temperatureUpdateDuration, (timer) {
265-
_sendValueRequestPackages(temperatureParametersId);
266-
});
267-
}
268-
269-
void startUpdatingVoltage() {
270-
cancelUpdatingVoltage();
271-
_sendValueRequestPackages(voltageParametersId);
272-
voltageTimer = Timer.periodic(voltageUpdateDuration, (timer) {
273-
_sendValueRequestPackages(voltageParametersId);
274-
});
275-
}
276-
277-
void cancelUpdatingTemperature() {
278-
temperatureTimer?.cancel();
279-
temperatureTimer = null;
280-
}
281-
282-
void cancelUpdatingVoltage() {
283-
voltageTimer?.cancel();
284-
voltageTimer = null;
285-
}
219+
static Set<DataSourceParameterId> kDefaultVoltageParameterIds = {
220+
const DataSourceParameterId.lowVoltageMinMaxDelta1(),
221+
const DataSourceParameterId.lowVoltageMinMaxDelta2(),
222+
const DataSourceParameterId.lowVoltage1(),
223+
const DataSourceParameterId.lowVoltage2(),
224+
};
286225

287-
void _sendValueRequestPackages(List<DataSourceParameterId> ids) {
288-
for (final id in ids) {
289-
final package = OutgoingValueRequestPackage(parameterId: id);
290-
dataSource.sendPackage(package);
291-
}
292-
}
226+
static Set<DataSourceParameterId> kDefaultTemperatureParameterIds = {
227+
const DataSourceParameterId.temperature1(),
228+
const DataSourceParameterId.temperature2(),
229+
};
293230

294-
@override
295-
Future<void> close() {
296-
cancelUpdatingTemperature();
297-
return super.close();
298-
}
231+
static Set<DataSourceParameterId> kAllParameterIds = {
232+
...kDefaultSubscribeParameters,
233+
...kDefaultTemperatureParameterIds,
234+
...kDefaultVoltageParameterIds,
235+
};
299236
}

lib/domain/data_source/blocs/outgoing_packages_cubit.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ class OutgoingPackagesCubit extends Cubit<DeveloperToolsParameters>
1212
OutgoingPackagesCubit({
1313
required this.dataSource,
1414
required this.developerToolsParametersStorage,
15-
}) : subscribeToParameterIdList = developerToolsParametersStorage
16-
.data.subscriptionParameterIds
17-
.map(DataSourceParameterId.fromInt)
18-
.toSet(),
15+
}) : subscribeToParameterIdList = {},
1916
super(
2017
developerToolsParametersStorage.read().when(
2118
error: (e) => developerToolsParametersStorage.defaultValue,

lib/domain/data_source/models/developer_tools_parameters.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class DeveloperToolsParameters {
4545
),
4646
requestsPeriodInMillis: map['requestsPeriodInMillis'] as int,
4747
subscriptionParameterIds:
48-
(map['subscriptionParameterIds'] as Set).cast<int>(),
48+
(map['subscriptionParameterIds'] as List).cast<int>().toSet(),
4949
enableRandomErrorGenerationForDemoDataSource:
5050
map['enableRandomErrorGenerationForDemoDataSource'] as bool,
5151
enableHandshakeResponse: map['enableHandshakeResponse'] as bool,
@@ -60,11 +60,7 @@ class DeveloperToolsParameters {
6060
requestsPeriodInMillis = 800,
6161
enableHandshakeResponse = true,
6262
handshakeResponseTimeoutInMillis = 0,
63-
subscriptionParameterIds = const {
64-
// 125, //speed
65-
// 174, // voltage
66-
// 239, // current
67-
};
63+
subscriptionParameterIds = const {};
6864

6965
final DataSourceProtocolVersion protocolVersion;
7066

lib/l10n/arb/app_en.arb

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -143,66 +143,12 @@
143143
},
144144
"chargingGeneralTabTitle": "General",
145145
"chargingTemperatureTabTitle": "Temperature",
146-
"chargingTemperatureNTabTitle": "Temperature {number} battery",
147-
"@chargingTemperatureNTabTitle": {
148-
"placeholders": {
149-
"number": {
150-
"type": "int"
151-
}
152-
}
153-
},
154146
"chargingVoltageTabTitle": "Voltage",
155-
"chargingVoltageNTabTitle": "Voltage {number} battery",
156-
"@chargingVoltageNTabTitle": {
157-
"placeholders": {
158-
"number": {
159-
"type": "int"
160-
}
161-
}
162-
},
163147
"totalVoltageTileTitle": "Total voltage",
164-
"totalVoltageNTileTitle": "Total voltage {number} battery",
165-
"@totalVoltageNTileTitle": {
166-
"placeholders": {
167-
"number": {
168-
"type": "int"
169-
}
170-
}
171-
},
172-
"powerNTileTitle": "Consumption/charging power {number} battery",
173-
"@powerNTileTitle": {
174-
"placeholders": {
175-
"number": {
176-
"type": "int"
177-
}
178-
}
179-
},
180-
"batteryPercentNTileTitle": "Battery level {number}",
181-
"@batteryPercentNTileTitle": {
182-
"placeholders": {
183-
"number": {
184-
"type": "int"
185-
}
186-
}
187-
},
148+
"powerGeneralTileTitle": "Consumption/charging power",
149+
"batteryPercentTileTitle": "Battery level",
188150
"totalCurrentTileTitle": "Total discharge/charge current",
189-
"totalCurrentNTileTitle": "Total discharge/charge current {number} battery",
190-
"@totalCurrentNTileTitle": {
191-
"placeholders": {
192-
"number": {
193-
"type": "int"
194-
}
195-
}
196-
},
197151
"maximumRegisteredTemperatureTileTitle": "Maximum temperature",
198-
"maximumRegisteredTemperatureNTileTitle": "Maximum temperature {number} battery",
199-
"@maximumRegisteredTemperatureNTileTitle": {
200-
"placeholders": {
201-
"number": {
202-
"type": "int"
203-
}
204-
}
205-
},
206152
"voltageValue": "{value} V",
207153
"@voltageValue": {
208154
"placeholders": {

lib/l10n/arb/app_ru.arb

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -143,66 +143,12 @@
143143
},
144144
"chargingGeneralTabTitle": "Основное",
145145
"chargingTemperatureTabTitle": "Температура",
146-
"chargingTemperatureNTabTitle": "Температура {number} батарея",
147-
"@chargingTemperatureNTabTitle": {
148-
"placeholders": {
149-
"number": {
150-
"type": "int"
151-
}
152-
}
153-
},
154146
"chargingVoltageTabTitle": "Напряжение",
155-
"chargingVoltageNTabTitle": "Напряжение {number} батарея",
156-
"@chargingVoltageNTabTitle": {
157-
"placeholders": {
158-
"number": {
159-
"type": "int"
160-
}
161-
}
162-
},
163147
"totalVoltageTileTitle": "Общее напряжение",
164-
"totalVoltageNTileTitle": "Общее напряжение {number} батарея",
165-
"@totalVoltageNTileTitle": {
166-
"placeholders": {
167-
"number": {
168-
"type": "int"
169-
}
170-
}
171-
},
172-
"powerNTileTitle": "Мощность потребления/зарядки {number} батарея",
173-
"@powerNTileTitle": {
174-
"placeholders": {
175-
"number": {
176-
"type": "int"
177-
}
178-
}
179-
},
180-
"batteryPercentNTileTitle": "Уровень заряда батареи {number}",
181-
"@batteryPercentNTileTitle": {
182-
"placeholders": {
183-
"number": {
184-
"type": "int"
185-
}
186-
}
187-
},
148+
"powerTileTitle": "Мощность потребления/зарядки",
149+
"batteryPercentTileTitle": "Уровень заряда батареи",
188150
"totalCurrentTileTitle": "Общий ток разряда/заряда",
189-
"totalCurrentNTileTitle": "Общий ток разряда/заряда {number} батарея",
190-
"@totalCurrentNTileTitle": {
191-
"placeholders": {
192-
"number": {
193-
"type": "int"
194-
}
195-
}
196-
},
197151
"maximumRegisteredTemperatureTileTitle": "Максимальная температура",
198-
"maximumRegisteredTemperatureNTileTitle": "Максимальная температура {number} батарея",
199-
"@maximumRegisteredTemperatureNTileTitle": {
200-
"placeholders": {
201-
"number": {
202-
"type": "int"
203-
}
204-
}
205-
},
206152
"voltageValue": "{value} В",
207153
"@voltageValue": {
208154
"placeholders": {
@@ -308,7 +254,7 @@
308254
"voltMeasurementUnit": "В",
309255
"currentTileTitle": "Ток",
310256
"amperMeasurementUnit": "А",
311-
"powerTileTitle": "Мощность(потребляемая/отдаваемая)",
257+
"powerGeneralTileTitle": "Мощность(потребляемая/отдаваемая)",
312258
"motorsTemperatureTileTitle": "Температура моторов",
313259
"celsiusMeasurementUnit": "°C",
314260
"controllersTemperatureTileTitle": "Температура контроллеров",

0 commit comments

Comments
 (0)