summaryrefslogtreecommitdiffstats
path: root/lib/data/data_providers/hybrid_notifier.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/data/data_providers/hybrid_notifier.dart')
-rw-r--r--lib/data/data_providers/hybrid_notifier.dart91
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/data/data_providers/hybrid_notifier.dart b/lib/data/data_providers/hybrid_notifier.dart
new file mode 100644
index 0000000..a19bf58
--- /dev/null
+++ b/lib/data/data_providers/hybrid_notifier.dart
@@ -0,0 +1,91 @@
+import '../../export.dart';
+
+class HybridNotifier extends StateNotifier<Hybrid> {
+ HybridNotifier(super.state);
+
+ void setHybridState(HybridState hybridState) {
+ switch (hybridState) {
+ case HybridState.idle:
+ state = state.copyWith(
+ topArrowState: ArrowState.blue,
+ leftArrowState: ArrowState.blue,
+ rightArrowState: ArrowState.blue,
+ batteryState: BatteryState.white,
+ );
+ break;
+ case HybridState.engineOutput:
+ state = state.copyWith(
+ topArrowState: ArrowState.red,
+ leftArrowState: ArrowState.red,
+ rightArrowState: ArrowState.blue,
+ batteryState: BatteryState.red,
+ );
+ break;
+ case HybridState.regenerativeBreaking:
+ state = state.copyWith(
+ topArrowState: ArrowState.blue,
+ leftArrowState: ArrowState.blue,
+ rightArrowState: ArrowState.green,
+ batteryState: BatteryState.green);
+
+ break;
+ case HybridState.baterryOutput:
+ state = state.copyWith(
+ topArrowState: ArrowState.blue,
+ leftArrowState: ArrowState.blue,
+ rightArrowState: ArrowState.yellow,
+ batteryState: BatteryState.yellow);
+ break;
+ default:
+ }
+ state = state.copyWith(hybridState: hybridState);
+ }
+
+ void updateHybridState() {
+ // Variable to store the current state
+ HybridState currentState = state.hybridState;
+
+ // Variable to store the previous state
+ HybridState previousState = currentState;
+
+ // Variable to store the average speed value
+ double avgSpeed = 0.0;
+
+ // Variable for storing the average value of RPM
+ double avgRpm = 0.0;
+
+ // Variable to store the brake value state
+ bool brake = false;
+
+ // Collect 10 samples
+ for (int i = 0; i < 10; i++) {
+ // Get the current values for speed, engine rpm and brake status
+
+ // speed = vehicleProvider();
+ // rpm = _rpmFromServer();
+ // brake = _brakeFromServer();
+
+ // Calculate the average speed value
+ // avgSpeed = (avgSpeed * (i + 1) + speed) / (i + 2);
+
+ // Calculate the average engine rpm
+ // avgRpm = (avgRpm * (i + 1) + rpm) / (i + 2);
+ }
+
+ // define new state
+ // if (avgSpeed == 0 && avgRpm == 0) {
+ // currentState = HybridState.idle;
+ // } else if (avgRpm > 0 && avgSpeed > 0) {
+ // currentState = HybridState.engineOutput;
+ // } else if (avgRpm == 0 && brake) {
+ // currentState = HybridState.regenerativeBreaking;
+ // } else if (avgSpeed > 0 && avgRpm <= avgSpeed) {
+ // currentState = HybridState.baterryOutput;
+ // }
+
+ // Zaktualizuj stan
+ if (currentState != previousState) {
+ state = state.copyWith(hybridState: currentState);
+ }
+ }
+}