summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2023-09-20 12:26:45 -0400
committerScott Murray <scott.murray@konsulko.com>2023-09-20 12:48:19 -0400
commit6a853805d2479bf7b111511b1f94907e425c607a (patch)
tree343a651a5e4a944de525f585eceb752d9ed3840a
parent20d76f947ef9d4a9093df0e5ad04476963655173 (diff)
Rework to use KUKSA.val databroker gRPC API
Rework to move from the WebSocket API with the older KUKSA.val server to the gRPC "VAL" API of the databroker. Changes include: - All VISS WebSocket API code has been removed, and the signal providers replumbed to be driven by a new VssClient class with a hvac-specific child class to hold all the gRPC API handling. - The generated code for the VAL API and its dependencies has been checked in under lib/generated, as there still does not seem to be a good way to generate it during the Flutter build. - The configuration file is now expected to be "hvac.yaml" instead of "hvac_config.yaml". The authorization token field name has been renamed to "authorization", and there are new "use-tls" and "ca-certificate" configuration fields. TLS is disabled by default for now, and the default CA certificate is /etc/kuksa.val/CA.pem. - Bumped minimum SDK version to 2.18 in pubspec.yaml to enable "super" keyword support. This matches what the version was set to in flutter-homescreen. - The Vehicle and VehicleSignals classes have been reworked into a VehicleAcStatus class + provider, and users have been updated to use the Riverpod provider select functionality to attempt to reduce naive over-updating. - VSS paths have been rationalized to use the definitions in the VSSPath class so only one location will need to be updated on any signal name changes. - Added .gitignore file from flutter-homescreen to keep things clean in the future. Bug-AGL: SPEC-4762 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Idbabb54ead52bf38796f264a3c8a270aa170e2cd
-rw-r--r--.gitignore51
-rw-r--r--lib/Buttons/AC.dart27
-rw-r--r--lib/Buttons/ac_on_face.dart60
-rw-r--r--lib/Buttons/ac_on_foot.dart61
-rw-r--r--lib/Buttons/auto.dart15
-rw-r--r--lib/Buttons/defrost_recirculate.dart85
-rw-r--r--lib/Buttons/fresh_air.dart11
-rw-r--r--lib/config.dart181
-rw-r--r--lib/generated/google/protobuf/timestamp.pb.dart83
-rw-r--r--lib/generated/google/protobuf/timestamp.pbenum.dart7
-rw-r--r--lib/generated/google/protobuf/timestamp.pbjson.dart21
-rw-r--r--lib/generated/kuksa/val/v1/types.pb.dart1560
-rw-r--r--lib/generated/kuksa/val/v1/types.pbenum.dart159
-rw-r--r--lib/generated/kuksa/val/v1/types.pbjson.dart364
-rw-r--r--lib/generated/kuksa/val/v1/val.pb.dart586
-rw-r--r--lib/generated/kuksa/val/v1/val.pbenum.dart7
-rw-r--r--lib/generated/kuksa/val/v1/val.pbgrpc.dart133
-rw-r--r--lib/generated/kuksa/val/v1/val.pbjson.dart126
-rw-r--r--lib/home_page.dart85
-rw-r--r--lib/kuksa-server/intial_connection.dart44
-rw-r--r--lib/kuksa-server/on_boarding_page.dart61
-rw-r--r--lib/kuksa-server/vehicle-provider.dart47
-rw-r--r--lib/kuksa-server/vehicle_config.dart39
-rw-r--r--lib/kuksa-server/vehicle_methods.dart75
-rw-r--r--lib/kuksa-server/vehicle_server_path.dart36
-rw-r--r--lib/main.dart6
-rw-r--r--lib/vehicle-signals/vehicle_ac_status_provider.dart (renamed from lib/kuksa-server/vehicle-class.dart)53
-rw-r--r--lib/vehicle-signals/vss_client.dart113
-rw-r--r--lib/vehicle-signals/vss_path.dart60
-rw-r--r--lib/vehicle-signals/vss_provider.dart75
-rw-r--r--lib/vehicle-signals/vss_signal_providers.dart (renamed from lib/provider.dart)7
-rw-r--r--lib/widgets/left_climate.dart24
-rw-r--r--lib/widgets/right_climate.dart24
-rw-r--r--lib/widgets/slider.dart29
-rw-r--r--pubspec.lock70
-rw-r--r--pubspec.yaml4
36 files changed, 3739 insertions, 650 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5075319
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+/engine_sdk/
+libapp.so
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
+
+# the linux folder should be present when building for AGL
+linux/
diff --git a/lib/Buttons/AC.dart b/lib/Buttons/AC.dart
index e0c610a..f07bf1d 100644
--- a/lib/Buttons/AC.dart
+++ b/lib/Buttons/AC.dart
@@ -4,19 +4,14 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_methods.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
import '../size.dart';
class AC extends ConsumerStatefulWidget {
- WebSocket socket;
- String serverPath;
- AC({
- Key? key,
- required this.serverPath,
- required this.socket,
- }) : super(key: key);
+ AC({Key? key}) : super(key: key);
@override
_ACState createState() => _ACState();
@@ -45,11 +40,10 @@ class _ACState extends ConsumerState<AC> with SingleTickerProviderStateMixin {
});
_controller.addStatusListener((status) {
- if (status == AnimationStatus.completed) {
- VISS.set(widget.socket, ref,widget.serverPath, isAcActive.toString());
- }
- if (status == AnimationStatus.dismissed) {
- VISS.set(widget.socket, ref,widget.serverPath, isAcActive.toString());
+ if (status == AnimationStatus.completed || status == AnimationStatus.dismissed) {
+ var vss = ref.read(vssClientProvider);
+ if (vss != null)
+ vss.setBool(VSSPath.vehicleIsAirConditioningActive, isAcActive, true);
}
});
}
@@ -63,7 +57,8 @@ class _ACState extends ConsumerState<AC> with SingleTickerProviderStateMixin {
@override
Widget build(BuildContext context) {
- isAcActive = ref.watch(vehicleProvider).isAcActive;
+ isAcActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isAcActive));
+
return AnimatedBuilder(
animation: _controller,
builder: (BuildContext context, _) {
@@ -114,7 +109,7 @@ class _ACState extends ConsumerState<AC> with SingleTickerProviderStateMixin {
onTap: () {
isAcActive ? _controller.reverse() : _controller.forward();
ref
- .read(vehicleProvider.notifier)
+ .read(vehicleAcStatusProvider.notifier)
.update(isAcActive: !isAcActive);
},
);
diff --git a/lib/Buttons/ac_on_face.dart b/lib/Buttons/ac_on_face.dart
index f0c0f41..9d8ded3 100644
--- a/lib/Buttons/ac_on_face.dart
+++ b/lib/Buttons/ac_on_face.dart
@@ -5,19 +5,18 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg_provider/flutter_svg_provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
-import '../kuksa-server/vehicle-class.dart';
-import '../kuksa-server/vehicle_methods.dart';
import '../size.dart';
class AcOnFace extends ConsumerStatefulWidget {
final String img;
- WebSocket socket;
+
AcOnFace({
Key? key,
required this.img,
- required this.socket,
}) : super(key: key);
@override
@@ -45,26 +44,20 @@ class _AcOnFaceState extends ConsumerState<AcOnFace>
_controller.addListener(() {});
_controller.addStatusListener((status) {
+ String direction = "";
if (status == AnimationStatus.completed) {
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution", 'up');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution", 'up');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution", 'up');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution", 'up');
+ direction = "MIDDLE";
+ } else if (status == AnimationStatus.dismissed) {
+ direction = "DOWN";
}
-
- if (status == AnimationStatus.dismissed) {
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution", 'middle');
+ if (direction.isNotEmpty) {
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ vss.setString(VSSPath.vehicleFrontLeftAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleFrontRightAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleRearLeftAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleRearRightAirDistribution, direction, true);
+ }
}
});
}
@@ -78,8 +71,9 @@ class _AcOnFaceState extends ConsumerState<AcOnFace>
@override
Widget build(BuildContext context) {
- vehicle vehicledata = ref.watch(vehicleProvider);
- if (vehicledata.isAcDirectionUp == false) {
+ bool isAcDirectionUp = ref.watch(vehicleAcStatusProvider.select((p) => p.isAcDirectionUp));
+ bool isAcDirectionDown = ref.watch(vehicleAcStatusProvider.select((p) => p.isAcDirectionDown));
+ if (isAcDirectionUp == false) {
_controller.reverse();
}
@@ -95,7 +89,7 @@ class _AcOnFaceState extends ConsumerState<AcOnFace>
decoration: BoxDecoration(
- gradient: vehicledata.isAcDirectionUp
+ gradient: isAcDirectionUp
? RadialGradient(
colors: [Colors.black, Colors.lightBlue],
radius: 2,
@@ -122,18 +116,16 @@ class _AcOnFaceState extends ConsumerState<AcOnFace>
),
),
onTap: () {
- if (vehicledata.isAcDirectionDown) {
+ if (isAcDirectionDown) {
ref
- .watch(vehicleProvider.notifier)
- .update(isAcDirectionDown: !vehicledata.isAcDirectionDown);
+ .watch(vehicleAcStatusProvider.notifier)
+ .update(isAcDirectionDown: !isAcDirectionDown);
}
Future.delayed(Duration(milliseconds: 500),(){
- vehicledata.isAcDirectionUp
- ? _controller.reverse()
- : _controller.forward();
+ isAcDirectionUp ? _controller.reverse() : _controller.forward();
- ref.watch(vehicleProvider.notifier).update(
- isAcDirectionUp: !vehicledata.isAcDirectionUp,
+ ref.watch(vehicleAcStatusProvider.notifier).update(
+ isAcDirectionUp: !isAcDirectionUp,
);
});
diff --git a/lib/Buttons/ac_on_foot.dart b/lib/Buttons/ac_on_foot.dart
index 41e2569..d1f2180 100644
--- a/lib/Buttons/ac_on_foot.dart
+++ b/lib/Buttons/ac_on_foot.dart
@@ -5,19 +5,18 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg_provider/flutter_svg_provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
-import '../kuksa-server/vehicle-class.dart';
-import '../kuksa-server/vehicle_methods.dart';
import '../size.dart';
class AcOnFoot extends ConsumerStatefulWidget {
final String img;
- WebSocket socket;
+
AcOnFoot({
Key? key,
required this.img,
- required this.socket,
}) : super(key: key);
@override
@@ -45,27 +44,20 @@ class _AcOnFootState extends ConsumerState<AcOnFoot>
_controller.addListener(() {});
_controller.addStatusListener((status) {
+ String direction = "";
if (status == AnimationStatus.completed) {
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution", 'down');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution", 'down');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution", 'down');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution", 'down');
-
+ direction = "DOWN";
+ } else if (status == AnimationStatus.dismissed) {
+ direction = "MIDDLE";
}
-
- if (status == AnimationStatus.dismissed) {
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution", 'middle');
- VISS.set(widget.socket,ref,
- "Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution", 'middle');
+ if (direction.isNotEmpty) {
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ vss.setString(VSSPath.vehicleFrontLeftAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleFrontRightAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleRearLeftAirDistribution, direction, true);
+ vss.setString(VSSPath.vehicleRearRightAirDistribution, direction, true);
+ }
}
});
}
@@ -79,8 +71,9 @@ class _AcOnFootState extends ConsumerState<AcOnFoot>
@override
Widget build(BuildContext context) {
- vehicle vehicledata = ref.watch(vehicleProvider);
- if (vehicledata.isAcDirectionDown == false) {
+ bool isAcDirectionUp = ref.watch(vehicleAcStatusProvider.select((p) => p.isAcDirectionUp));
+ bool isAcDirectionDown = ref.watch(vehicleAcStatusProvider.select((p) => p.isAcDirectionDown));
+ if (isAcDirectionDown == false) {
_controller.reverse();
}
@@ -96,7 +89,7 @@ class _AcOnFootState extends ConsumerState<AcOnFoot>
decoration: BoxDecoration(
- gradient: vehicledata.isAcDirectionDown
+ gradient: isAcDirectionDown
? RadialGradient(
colors: [Colors.black, Colors.lightBlue],
radius: 2,
@@ -123,18 +116,16 @@ class _AcOnFootState extends ConsumerState<AcOnFoot>
),
),
onTap: () {
- if (vehicledata.isAcDirectionUp == true) {
+ if (isAcDirectionUp == true) {
ref
- .watch(vehicleProvider.notifier)
- .update(isAcDirectionUp: !vehicledata.isAcDirectionUp);
+ .watch(vehicleAcStatusProvider.notifier)
+ .update(isAcDirectionUp: !isAcDirectionUp);
}
Future.delayed(Duration(milliseconds: 500),(){
- vehicledata.isAcDirectionDown
- ? _controller.reverse()
- : _controller.forward();
+ isAcDirectionDown ? _controller.reverse() : _controller.forward();
- ref.watch(vehicleProvider.notifier).update(
- isAcDirectionDown: !vehicledata.isAcDirectionDown,
+ ref.watch(vehicleAcStatusProvider.notifier).update(
+ isAcDirectionDown: !isAcDirectionDown,
);
});
diff --git a/lib/Buttons/auto.dart b/lib/Buttons/auto.dart
index 1bdb045..8e94e63 100644
--- a/lib/Buttons/auto.dart
+++ b/lib/Buttons/auto.dart
@@ -4,18 +4,12 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
import '../size.dart';
class Auto extends ConsumerStatefulWidget {
- WebSocket socket;
- String serverPath;
- Auto({
- Key? key,
- required this.serverPath,
- required this.socket,
- }) : super(key: key);
+ Auto({Key? key}) : super(key: key);
@override
_AutoState createState() => _AutoState();
@@ -52,7 +46,8 @@ class _AutoState extends ConsumerState<Auto>
@override
Widget build(BuildContext context) {
- isAutoActive = ref.watch(vehicleProvider).isAutoActive;
+ isAutoActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isAutoActive));
+
return AnimatedBuilder(
animation: _controller,
builder: (BuildContext context, _) {
@@ -100,7 +95,7 @@ class _AutoState extends ConsumerState<Auto>
onTap: () {
isAutoActive ? _controller.reverse() : _controller.forward();
ref
- .read(vehicleProvider.notifier)
+ .read(vehicleAcStatusProvider.notifier)
.update(isAutoActive: !isAutoActive);
},
);
diff --git a/lib/Buttons/defrost_recirculate.dart b/lib/Buttons/defrost_recirculate.dart
index 909bbf5..69adb89 100644
--- a/lib/Buttons/defrost_recirculate.dart
+++ b/lib/Buttons/defrost_recirculate.dart
@@ -5,20 +5,16 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg_provider/flutter_svg_provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-class.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_methods.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
import 'package:flutter_hvac/size.dart';
class CustomButton extends ConsumerStatefulWidget {
- WebSocket socket;
- String serverPath;
String img;
String type;
CustomButton({
Key? key,
- required this.serverPath,
- required this.socket,
required this.img,
required this.type,
}) : super(key: key);
@@ -30,7 +26,9 @@ class CustomButton extends ConsumerStatefulWidget {
class _CustomButtonState extends ConsumerState<CustomButton>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
- late vehicle vehicledata;
+ late bool isFrontDefrosterActive;
+ late bool isRearDefrosterActive;
+ late bool isRecirculationActive;
late Animation<Color?> _colorAnimation;
@override
@@ -51,35 +49,18 @@ class _CustomButtonState extends ConsumerState<CustomButton>
});
_controller.addStatusListener((status) {
- if (status == AnimationStatus.completed) {
- if (widget.type == 'Front_defrost') {
- VISS.set(widget.socket,ref, widget.serverPath,
- vehicledata.isFrontDefrosterActive.toString());
- }
- if (widget.type == "Rear_defrost") {
- VISS.set(widget.socket,ref, widget.serverPath,
- vehicledata.isRearDefrosterActive.toString());
- }
- if (widget.type == "Recirculation") {
- VISS.set(widget.socket,ref, widget.serverPath,
- vehicledata.isRecirculationActive.toString());
- }
-
-
-
- }
- if (status == AnimationStatus.dismissed) {
- if (widget.type == 'Front_defrost') {
- VISS.set(widget.socket, ref,widget.serverPath,
- vehicledata.isFrontDefrosterActive.toString());
- }
- if (widget.type == "Rear_defrost") {
- VISS.set(widget.socket, ref,widget.serverPath,
- vehicledata.isRearDefrosterActive.toString());
- }
- if (widget.type == "Recirculation") {
- VISS.set(widget.socket, ref,widget.serverPath,
- vehicledata.isRecirculationActive.toString());
+ if (status == AnimationStatus.completed || status == AnimationStatus.dismissed) {
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ if (widget.type == 'Front_defrost') {
+ vss.setBool(VSSPath.vehicleIsFrontDefrosterActive, isFrontDefrosterActive, true);
+ }
+ if (widget.type == "Rear_defrost") {
+ vss.setBool(VSSPath.vehicleIsRearDefrosterActive, isRearDefrosterActive, true);
+ }
+ if (widget.type == "Recirculation") {
+ vss.setBool(VSSPath.vehicleIsRecirculationActive, isRecirculationActive, true);
+ }
}
}
});
@@ -94,7 +75,10 @@ class _CustomButtonState extends ConsumerState<CustomButton>
@override
Widget build(BuildContext context) {
- vehicledata = ref.watch(vehicleProvider);
+ isFrontDefrosterActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isFrontDefrosterActive));
+ isRearDefrosterActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isRearDefrosterActive));
+ isRecirculationActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isRecirculationActive));
+
return AnimatedBuilder(
animation: _controller,
builder: (BuildContext context, _) {
@@ -108,20 +92,20 @@ class _CustomButtonState extends ConsumerState<CustomButton>
decoration: BoxDecoration(
gradient: widget.type == "Front_defrost"
- ? vehicledata.isFrontDefrosterActive
+ ? isFrontDefrosterActive
? RadialGradient(
colors: [Colors.black, Colors.lightBlue],
radius: 2,
)
: null
: widget.type == "Rear_defrost"
- ? vehicledata.isRearDefrosterActive
+ ? isRearDefrosterActive
? RadialGradient(
colors: [Colors.black, Colors.lightBlue],
radius: 2,
)
: null
- : vehicledata.isRecirculationActive
+ : isRecirculationActive
? RadialGradient(
colors: [Colors.black, Colors.lightBlue],
radius: 2,
@@ -149,26 +133,25 @@ class _CustomButtonState extends ConsumerState<CustomButton>
),
onTap: () {
if (widget.type == "Front_defrost") {
- vehicledata.isFrontDefrosterActive
+ isFrontDefrosterActive
? _controller.reverse()
: _controller.forward();
- ref.read(vehicleProvider.notifier).update(
- isFrontDefrosterActive:
- !vehicledata.isFrontDefrosterActive);
+ ref.read(vehicleAcStatusProvider.notifier).update(
+ isFrontDefrosterActive: !isFrontDefrosterActive);
}
if (widget.type == "Rear_defrost") {
- vehicledata.isRearDefrosterActive
+ isRearDefrosterActive
? _controller.reverse()
: _controller.forward();
- ref.read(vehicleProvider.notifier).update(
- isRearDefrosterActive: !vehicledata.isRearDefrosterActive);
+ ref.read(vehicleAcStatusProvider.notifier).update(
+ isRearDefrosterActive: !isRearDefrosterActive);
}
if (widget.type == "Recirculation") {
- vehicledata.isRecirculationActive
+ isRecirculationActive
? _controller.reverse()
: _controller.forward();
- ref.read(vehicleProvider.notifier).update(
- isRecirculationActive: !vehicledata.isRecirculationActive);
+ ref.read(vehicleAcStatusProvider.notifier).update(
+ isRecirculationActive: !isRecirculationActive);
}
},
);
diff --git a/lib/Buttons/fresh_air.dart b/lib/Buttons/fresh_air.dart
index 3858cba..edaacd5 100644
--- a/lib/Buttons/fresh_air.dart
+++ b/lib/Buttons/fresh_air.dart
@@ -5,18 +5,14 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg_provider/flutter_svg_provider.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vehicle_ac_status_provider.dart';
import '../size.dart';
class FreshAir extends ConsumerStatefulWidget {
- WebSocket socket;
- String serverPath;
String img;
FreshAir({
Key? key,
- required this.serverPath,
- required this.socket,
required this.img,
}) : super(key: key);
@@ -58,7 +54,8 @@ class _FreshAirState extends ConsumerState<FreshAir> with SingleTickerProviderSt
@override
Widget build(BuildContext context) {
- isFreshAirCirculateActive = ref.watch(vehicleProvider).isFreshAirCirculateActive;
+ isFreshAirCirculateActive = ref.watch(vehicleAcStatusProvider.select((p) => p.isFreshAirCirculateActive));
+
return AnimatedBuilder(
animation: _controller,
builder: (BuildContext context, _) {
@@ -100,7 +97,7 @@ class _FreshAirState extends ConsumerState<FreshAir> with SingleTickerProviderSt
onTap: () {
isFreshAirCirculateActive ? _controller.reverse() : _controller.forward();
ref
- .read(vehicleProvider.notifier)
+ .read(vehicleAcStatusProvider.notifier)
.update(isFreshAirCirculateActive: !isFreshAirCirculateActive);
},
);
diff --git a/lib/config.dart b/lib/config.dart
index db7266e..39a5a41 100644
--- a/lib/config.dart
+++ b/lib/config.dart
@@ -1,111 +1,108 @@
// SPDX-License-Identifier: Apache-2.0
-
import 'dart:io';
-import 'package:flutter/material.dart';
-import 'package:flutter_hvac/kuksa-server/intial_connection.dart';
+import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:yaml/yaml.dart';
+class KuksaConfig {
+ final String hostname;
+ final int port;
+ final String authorization;
+ final bool use_tls;
+ final List<int> ca_certificate;
+ final String tls_server_name;
-class GetConfig extends ConsumerStatefulWidget {
- const GetConfig({Key? key, required this.client}) : super(key: key);
- final HttpClient client;
+ static String configFilePath = '/etc/xdg/AGL/hvac.yaml';
+ static String defaultHostname = 'localhost';
+ static int defaultPort = 55555;
+ static String defaultCaCertPath = '/etc/kuksa-val/CA.pem';
- @override
- ConsumerState<GetConfig> createState() => _GetConfigState();
+ KuksaConfig({required this.hostname, required this.port, required this.authorization,
+ required this.use_tls, required this.ca_certificate, required this.tls_server_name});
}
-class _GetConfigState extends ConsumerState<GetConfig> {
- @override
- void initState() {
- super.initState();
- WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
- final configStateProvider = ref.read(ConfigStateprovider.notifier);
+// NOTE: This may need to be changed to a FutureProvider to avoid slowing
+// down the top-level widget initState...
- String configFilePath = '/etc/xdg/AGL/HVAC_config.yaml';
+final kuksaConfigProvider = Provider((ref) {
+ final configFile = File(KuksaConfig.configFilePath);
+ try {
+ print("Reading configuration ${KuksaConfig.configFilePath}");
+ String content = configFile.readAsStringSync();
+ final dynamic yamlMap = loadYaml(content);
+ String hostname = KuksaConfig.defaultHostname;
+ if (yamlMap.containsKey('hostname')) {
+ hostname = yamlMap['hostname'];
+ }
- final configFile = File(configFilePath);
- configFile.readAsString().then((content) {
- final dynamic yamlMap = loadYaml(content);
- configStateProvider.update(
- hostname: yamlMap['hostname'],
- port: yamlMap['port'],
- kuksaAuthToken: yamlMap['kuskaAuthToken'],
- );
- });
- });
- }
-
- @override
- Widget build(BuildContext context) {
- final config = ref.watch(ConfigStateprovider);
- if (config.hostname == "" ||
- config.port == 0 ||
- config.kuksaAuthToken == ""
- ) {
- return Scaffold(
- body: Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- crossAxisAlignment: CrossAxisAlignment.center,
- children: const [
- Text("ERROR",
- style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
- Text(
- "Something Wrong with config file! Check config.yaml file and restart"),
- ],
- )),
- );
+ int port = KuksaConfig.defaultPort;
+ if (yamlMap.containsKey('port')) {
+ port = yamlMap['port'];
}
- return InitialScreen(client: widget.client);
- }
-}
-class Config {
- Config({
- required this.hostname,
- required this.port,
- required this.kuksaAuthToken,
+ String token = "";
+ if (yamlMap.containsKey('authorization')) {
+ String s = yamlMap['authorization'];
+ if (s.isNotEmpty) {
+ if (s.startsWith("/")) {
+ debugPrint("Reading authorization token $s");
+ try {
+ token = File(s).readAsStringSync();
+ } on Exception catch(_) {
+ print("ERROR: Could not read authorization token file $token");
+ token = "";
+ }
+ } else {
+ token = s;
+ }
+ }
+ }
+ //debugPrint("authorization = $token");
- });
- final String hostname;
- final int port;
- final String kuksaAuthToken;
+ bool use_tls = false;
+ if (yamlMap.containsKey('use-tls')) {
+ var value = yamlMap['use-tls'];
+ if (value is bool)
+ use_tls = value;
+ }
+ //debugPrint("Use TLS = $use_tls");
- Config copywith({
- String? hostname,
- int? port,
- String? kuksaAuthToken,
- String? mapboxAccessToken,
- }) =>
- Config(
- hostname: hostname ?? this.hostname,
- port: port ?? this.port,
- kuksaAuthToken: kuksaAuthToken ?? this.kuksaAuthToken,
- );
-}
+ List<int> ca_cert = [];
+ String ca_path = KuksaConfig.defaultCaCertPath;
+ if (yamlMap.containsKey('ca-certificate')) {
+ ca_path = yamlMap['ca-certificate'];
+ }
+ try {
+ ca_cert = File(ca_path).readAsBytesSync();
+ } on Exception catch(_) {
+ print("ERROR: Could not read CA certificate file $ca_path");
+ ca_cert = [];
+ }
+ //debugPrint("CA cert = $ca_cert");
-final ConfigStateprovider =
-StateNotifierProvider<ConfigStateNotifier, Config>(
- (ref) => ConfigStateNotifier());
+ String tls_server_name = "";
+ if (yamlMap.containsKey('tls-server-name')) {
+ tls_server_name = yamlMap['tls_server_name'];
+ }
-class ConfigStateNotifier extends StateNotifier<Config> {
- ConfigStateNotifier() : super(_initialValue);
- static final Config _initialValue = Config(
- hostname: "",
- port: 0,
- kuksaAuthToken: "",
- );
- void update({
- String? hostname,
- int? port,
- String? kuksaAuthToken,
- }) {
- state = state.copywith(
- hostname: hostname,
- port: port,
- kuksaAuthToken: kuksaAuthToken,
- );
+ return KuksaConfig(
+ hostname: hostname,
+ port: port,
+ authorization: token,
+ use_tls: use_tls,
+ ca_certificate: ca_cert,
+ tls_server_name: tls_server_name
+ );
+ } on Exception catch(_) {
+ return KuksaConfig(
+ hostname: KuksaConfig.defaultHostname,
+ port: KuksaConfig.defaultPort,
+ authorization: "",
+ use_tls: false,
+ ca_certificate: [],
+ tls_server_name: ""
+ );
}
-}
+});
+
diff --git a/lib/generated/google/protobuf/timestamp.pb.dart b/lib/generated/google/protobuf/timestamp.pb.dart
new file mode 100644
index 0000000..ca4a49a
--- /dev/null
+++ b/lib/generated/google/protobuf/timestamp.pb.dart
@@ -0,0 +1,83 @@
+///
+// Generated code. Do not modify.
+// source: google/protobuf/timestamp.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+
+import 'package:fixnum/fixnum.dart' as $fixnum;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+import 'package:protobuf/src/protobuf/mixins/well_known.dart' as $mixin;
+
+class Timestamp extends $pb.GeneratedMessage with $mixin.TimestampMixin {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Timestamp', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'google.protobuf'), createEmptyInstance: create, toProto3Json: $mixin.TimestampMixin.toProto3JsonHelper, fromProto3Json: $mixin.TimestampMixin.fromProto3JsonHelper)
+ ..aInt64(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'seconds')
+ ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'nanos', $pb.PbFieldType.O3)
+ ..hasRequiredFields = false
+ ;
+
+ Timestamp._() : super();
+ factory Timestamp({
+ $fixnum.Int64? seconds,
+ $core.int? nanos,
+ }) {
+ final _result = create();
+ if (seconds != null) {
+ _result.seconds = seconds;
+ }
+ if (nanos != null) {
+ _result.nanos = nanos;
+ }
+ return _result;
+ }
+ factory Timestamp.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Timestamp.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Timestamp clone() => Timestamp()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Timestamp copyWith(void Function(Timestamp) updates) => super.copyWith((message) => updates(message as Timestamp)) as Timestamp; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Timestamp create() => Timestamp._();
+ Timestamp createEmptyInstance() => create();
+ static $pb.PbList<Timestamp> createRepeated() => $pb.PbList<Timestamp>();
+ @$core.pragma('dart2js:noInline')
+ static Timestamp getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Timestamp>(create);
+ static Timestamp? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get seconds => $_getI64(0);
+ @$pb.TagNumber(1)
+ set seconds($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasSeconds() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearSeconds() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.int get nanos => $_getIZ(1);
+ @$pb.TagNumber(2)
+ set nanos($core.int v) { $_setSignedInt32(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasNanos() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearNanos() => clearField(2);
+ /// Creates a new instance from [dateTime].
+ ///
+ /// Time zone information will not be preserved.
+ static Timestamp fromDateTime($core.DateTime dateTime) {
+ final result = create();
+ $mixin.TimestampMixin.setFromDateTime(result, dateTime);
+ return result;
+ }
+}
+
diff --git a/lib/generated/google/protobuf/timestamp.pbenum.dart b/lib/generated/google/protobuf/timestamp.pbenum.dart
new file mode 100644
index 0000000..9d127fd
--- /dev/null
+++ b/lib/generated/google/protobuf/timestamp.pbenum.dart
@@ -0,0 +1,7 @@
+///
+// Generated code. Do not modify.
+// source: google/protobuf/timestamp.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
diff --git a/lib/generated/google/protobuf/timestamp.pbjson.dart b/lib/generated/google/protobuf/timestamp.pbjson.dart
new file mode 100644
index 0000000..421f785
--- /dev/null
+++ b/lib/generated/google/protobuf/timestamp.pbjson.dart
@@ -0,0 +1,21 @@
+///
+// Generated code. Do not modify.
+// source: google/protobuf/timestamp.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+import 'dart:convert' as $convert;
+import 'dart:typed_data' as $typed_data;
+@$core.Deprecated('Use timestampDescriptor instead')
+const Timestamp$json = const {
+ '1': 'Timestamp',
+ '2': const [
+ const {'1': 'seconds', '3': 1, '4': 1, '5': 3, '10': 'seconds'},
+ const {'1': 'nanos', '3': 2, '4': 1, '5': 5, '10': 'nanos'},
+ ],
+};
+
+/// Descriptor for `Timestamp`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List timestampDescriptor = $convert.base64Decode('CglUaW1lc3RhbXASGAoHc2Vjb25kcxgBIAEoA1IHc2Vjb25kcxIUCgVuYW5vcxgCIAEoBVIFbmFub3M=');
diff --git a/lib/generated/kuksa/val/v1/types.pb.dart b/lib/generated/kuksa/val/v1/types.pb.dart
new file mode 100644
index 0000000..17bcbb3
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/types.pb.dart
@@ -0,0 +1,1560 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/types.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+
+import 'package:fixnum/fixnum.dart' as $fixnum;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+import '../../../google/protobuf/timestamp.pb.dart' as $0;
+
+import 'types.pbenum.dart';
+
+export 'types.pbenum.dart';
+
+class DataEntry extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DataEntry', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'path')
+ ..aOM<Datapoint>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'value', subBuilder: Datapoint.create)
+ ..aOM<Datapoint>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'actuatorTarget', subBuilder: Datapoint.create)
+ ..aOM<Metadata>(10, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'metadata', subBuilder: Metadata.create)
+ ..hasRequiredFields = false
+ ;
+
+ DataEntry._() : super();
+ factory DataEntry({
+ $core.String? path,
+ Datapoint? value,
+ Datapoint? actuatorTarget,
+ Metadata? metadata,
+ }) {
+ final _result = create();
+ if (path != null) {
+ _result.path = path;
+ }
+ if (value != null) {
+ _result.value = value;
+ }
+ if (actuatorTarget != null) {
+ _result.actuatorTarget = actuatorTarget;
+ }
+ if (metadata != null) {
+ _result.metadata = metadata;
+ }
+ return _result;
+ }
+ factory DataEntry.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DataEntry.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DataEntry clone() => DataEntry()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DataEntry copyWith(void Function(DataEntry) updates) => super.copyWith((message) => updates(message as DataEntry)) as DataEntry; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DataEntry create() => DataEntry._();
+ DataEntry createEmptyInstance() => create();
+ static $pb.PbList<DataEntry> createRepeated() => $pb.PbList<DataEntry>();
+ @$core.pragma('dart2js:noInline')
+ static DataEntry getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DataEntry>(create);
+ static DataEntry? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get path => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set path($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasPath() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPath() => clearField(1);
+
+ @$pb.TagNumber(2)
+ Datapoint get value => $_getN(1);
+ @$pb.TagNumber(2)
+ set value(Datapoint v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasValue() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearValue() => clearField(2);
+ @$pb.TagNumber(2)
+ Datapoint ensureValue() => $_ensure(1);
+
+ @$pb.TagNumber(3)
+ Datapoint get actuatorTarget => $_getN(2);
+ @$pb.TagNumber(3)
+ set actuatorTarget(Datapoint v) { setField(3, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasActuatorTarget() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearActuatorTarget() => clearField(3);
+ @$pb.TagNumber(3)
+ Datapoint ensureActuatorTarget() => $_ensure(2);
+
+ @$pb.TagNumber(10)
+ Metadata get metadata => $_getN(3);
+ @$pb.TagNumber(10)
+ set metadata(Metadata v) { setField(10, v); }
+ @$pb.TagNumber(10)
+ $core.bool hasMetadata() => $_has(3);
+ @$pb.TagNumber(10)
+ void clearMetadata() => clearField(10);
+ @$pb.TagNumber(10)
+ Metadata ensureMetadata() => $_ensure(3);
+}
+
+enum Datapoint_Value {
+ string,
+ bool_12,
+ int32,
+ int64,
+ uint32,
+ uint64,
+ float,
+ double_18,
+ stringArray,
+ boolArray,
+ int32Array,
+ int64Array,
+ uint32Array,
+ uint64Array,
+ floatArray,
+ doubleArray,
+ notSet
+}
+
+class Datapoint extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, Datapoint_Value> _Datapoint_ValueByTag = {
+ 11 : Datapoint_Value.string,
+ 12 : Datapoint_Value.bool_12,
+ 13 : Datapoint_Value.int32,
+ 14 : Datapoint_Value.int64,
+ 15 : Datapoint_Value.uint32,
+ 16 : Datapoint_Value.uint64,
+ 17 : Datapoint_Value.float,
+ 18 : Datapoint_Value.double_18,
+ 21 : Datapoint_Value.stringArray,
+ 22 : Datapoint_Value.boolArray,
+ 23 : Datapoint_Value.int32Array,
+ 24 : Datapoint_Value.int64Array,
+ 25 : Datapoint_Value.uint32Array,
+ 26 : Datapoint_Value.uint64Array,
+ 27 : Datapoint_Value.floatArray,
+ 28 : Datapoint_Value.doubleArray,
+ 0 : Datapoint_Value.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Datapoint', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..oo(0, [11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 28])
+ ..aOM<$0.Timestamp>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timestamp', subBuilder: $0.Timestamp.create)
+ ..aOS(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'string')
+ ..aOB(12, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'bool')
+ ..a<$core.int>(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'int32', $pb.PbFieldType.OS3)
+ ..a<$fixnum.Int64>(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'int64', $pb.PbFieldType.OS6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..a<$core.int>(15, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'uint32', $pb.PbFieldType.OU3)
+ ..a<$fixnum.Int64>(16, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'uint64', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..a<$core.double>(17, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'float', $pb.PbFieldType.OF)
+ ..a<$core.double>(18, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'double', $pb.PbFieldType.OD)
+ ..aOM<StringArray>(21, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'stringArray', subBuilder: StringArray.create)
+ ..aOM<BoolArray>(22, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'boolArray', subBuilder: BoolArray.create)
+ ..aOM<Int32Array>(23, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'int32Array', subBuilder: Int32Array.create)
+ ..aOM<Int64Array>(24, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'int64Array', subBuilder: Int64Array.create)
+ ..aOM<Uint32Array>(25, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'uint32Array', subBuilder: Uint32Array.create)
+ ..aOM<Uint64Array>(26, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'uint64Array', subBuilder: Uint64Array.create)
+ ..aOM<FloatArray>(27, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'floatArray', subBuilder: FloatArray.create)
+ ..aOM<DoubleArray>(28, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'doubleArray', subBuilder: DoubleArray.create)
+ ..hasRequiredFields = false
+ ;
+
+ Datapoint._() : super();
+ factory Datapoint({
+ $0.Timestamp? timestamp,
+ $core.String? string,
+ $core.bool? bool_12,
+ $core.int? int32,
+ $fixnum.Int64? int64,
+ $core.int? uint32,
+ $fixnum.Int64? uint64,
+ $core.double? float,
+ $core.double? double_18,
+ StringArray? stringArray,
+ BoolArray? boolArray,
+ Int32Array? int32Array,
+ Int64Array? int64Array,
+ Uint32Array? uint32Array,
+ Uint64Array? uint64Array,
+ FloatArray? floatArray,
+ DoubleArray? doubleArray,
+ }) {
+ final _result = create();
+ if (timestamp != null) {
+ _result.timestamp = timestamp;
+ }
+ if (string != null) {
+ _result.string = string;
+ }
+ if (bool_12 != null) {
+ _result.bool_12 = bool_12;
+ }
+ if (int32 != null) {
+ _result.int32 = int32;
+ }
+ if (int64 != null) {
+ _result.int64 = int64;
+ }
+ if (uint32 != null) {
+ _result.uint32 = uint32;
+ }
+ if (uint64 != null) {
+ _result.uint64 = uint64;
+ }
+ if (float != null) {
+ _result.float = float;
+ }
+ if (double_18 != null) {
+ _result.double_18 = double_18;
+ }
+ if (stringArray != null) {
+ _result.stringArray = stringArray;
+ }
+ if (boolArray != null) {
+ _result.boolArray = boolArray;
+ }
+ if (int32Array != null) {
+ _result.int32Array = int32Array;
+ }
+ if (int64Array != null) {
+ _result.int64Array = int64Array;
+ }
+ if (uint32Array != null) {
+ _result.uint32Array = uint32Array;
+ }
+ if (uint64Array != null) {
+ _result.uint64Array = uint64Array;
+ }
+ if (floatArray != null) {
+ _result.floatArray = floatArray;
+ }
+ if (doubleArray != null) {
+ _result.doubleArray = doubleArray;
+ }
+ return _result;
+ }
+ factory Datapoint.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Datapoint.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Datapoint clone() => Datapoint()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Datapoint copyWith(void Function(Datapoint) updates) => super.copyWith((message) => updates(message as Datapoint)) as Datapoint; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Datapoint create() => Datapoint._();
+ Datapoint createEmptyInstance() => create();
+ static $pb.PbList<Datapoint> createRepeated() => $pb.PbList<Datapoint>();
+ @$core.pragma('dart2js:noInline')
+ static Datapoint getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Datapoint>(create);
+ static Datapoint? _defaultInstance;
+
+ Datapoint_Value whichValue() => _Datapoint_ValueByTag[$_whichOneof(0)]!;
+ void clearValue() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(1)
+ $0.Timestamp get timestamp => $_getN(0);
+ @$pb.TagNumber(1)
+ set timestamp($0.Timestamp v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasTimestamp() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearTimestamp() => clearField(1);
+ @$pb.TagNumber(1)
+ $0.Timestamp ensureTimestamp() => $_ensure(0);
+
+ @$pb.TagNumber(11)
+ $core.String get string => $_getSZ(1);
+ @$pb.TagNumber(11)
+ set string($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(11)
+ $core.bool hasString() => $_has(1);
+ @$pb.TagNumber(11)
+ void clearString() => clearField(11);
+
+ @$pb.TagNumber(12)
+ $core.bool get bool_12 => $_getBF(2);
+ @$pb.TagNumber(12)
+ set bool_12($core.bool v) { $_setBool(2, v); }
+ @$pb.TagNumber(12)
+ $core.bool hasBool_12() => $_has(2);
+ @$pb.TagNumber(12)
+ void clearBool_12() => clearField(12);
+
+ @$pb.TagNumber(13)
+ $core.int get int32 => $_getIZ(3);
+ @$pb.TagNumber(13)
+ set int32($core.int v) { $_setSignedInt32(3, v); }
+ @$pb.TagNumber(13)
+ $core.bool hasInt32() => $_has(3);
+ @$pb.TagNumber(13)
+ void clearInt32() => clearField(13);
+
+ @$pb.TagNumber(14)
+ $fixnum.Int64 get int64 => $_getI64(4);
+ @$pb.TagNumber(14)
+ set int64($fixnum.Int64 v) { $_setInt64(4, v); }
+ @$pb.TagNumber(14)
+ $core.bool hasInt64() => $_has(4);
+ @$pb.TagNumber(14)
+ void clearInt64() => clearField(14);
+
+ @$pb.TagNumber(15)
+ $core.int get uint32 => $_getIZ(5);
+ @$pb.TagNumber(15)
+ set uint32($core.int v) { $_setUnsignedInt32(5, v); }
+ @$pb.TagNumber(15)
+ $core.bool hasUint32() => $_has(5);
+ @$pb.TagNumber(15)
+ void clearUint32() => clearField(15);
+
+ @$pb.TagNumber(16)
+ $fixnum.Int64 get uint64 => $_getI64(6);
+ @$pb.TagNumber(16)
+ set uint64($fixnum.Int64 v) { $_setInt64(6, v); }
+ @$pb.TagNumber(16)
+ $core.bool hasUint64() => $_has(6);
+ @$pb.TagNumber(16)
+ void clearUint64() => clearField(16);
+
+ @$pb.TagNumber(17)
+ $core.double get float => $_getN(7);
+ @$pb.TagNumber(17)
+ set float($core.double v) { $_setFloat(7, v); }
+ @$pb.TagNumber(17)
+ $core.bool hasFloat() => $_has(7);
+ @$pb.TagNumber(17)
+ void clearFloat() => clearField(17);
+
+ @$pb.TagNumber(18)
+ $core.double get double_18 => $_getN(8);
+ @$pb.TagNumber(18)
+ set double_18($core.double v) { $_setDouble(8, v); }
+ @$pb.TagNumber(18)
+ $core.bool hasDouble_18() => $_has(8);
+ @$pb.TagNumber(18)
+ void clearDouble_18() => clearField(18);
+
+ @$pb.TagNumber(21)
+ StringArray get stringArray => $_getN(9);
+ @$pb.TagNumber(21)
+ set stringArray(StringArray v) { setField(21, v); }
+ @$pb.TagNumber(21)
+ $core.bool hasStringArray() => $_has(9);
+ @$pb.TagNumber(21)
+ void clearStringArray() => clearField(21);
+ @$pb.TagNumber(21)
+ StringArray ensureStringArray() => $_ensure(9);
+
+ @$pb.TagNumber(22)
+ BoolArray get boolArray => $_getN(10);
+ @$pb.TagNumber(22)
+ set boolArray(BoolArray v) { setField(22, v); }
+ @$pb.TagNumber(22)
+ $core.bool hasBoolArray() => $_has(10);
+ @$pb.TagNumber(22)
+ void clearBoolArray() => clearField(22);
+ @$pb.TagNumber(22)
+ BoolArray ensureBoolArray() => $_ensure(10);
+
+ @$pb.TagNumber(23)
+ Int32Array get int32Array => $_getN(11);
+ @$pb.TagNumber(23)
+ set int32Array(Int32Array v) { setField(23, v); }
+ @$pb.TagNumber(23)
+ $core.bool hasInt32Array() => $_has(11);
+ @$pb.TagNumber(23)
+ void clearInt32Array() => clearField(23);
+ @$pb.TagNumber(23)
+ Int32Array ensureInt32Array() => $_ensure(11);
+
+ @$pb.TagNumber(24)
+ Int64Array get int64Array => $_getN(12);
+ @$pb.TagNumber(24)
+ set int64Array(Int64Array v) { setField(24, v); }
+ @$pb.TagNumber(24)
+ $core.bool hasInt64Array() => $_has(12);
+ @$pb.TagNumber(24)
+ void clearInt64Array() => clearField(24);
+ @$pb.TagNumber(24)
+ Int64Array ensureInt64Array() => $_ensure(12);
+
+ @$pb.TagNumber(25)
+ Uint32Array get uint32Array => $_getN(13);
+ @$pb.TagNumber(25)
+ set uint32Array(Uint32Array v) { setField(25, v); }
+ @$pb.TagNumber(25)
+ $core.bool hasUint32Array() => $_has(13);
+ @$pb.TagNumber(25)
+ void clearUint32Array() => clearField(25);
+ @$pb.TagNumber(25)
+ Uint32Array ensureUint32Array() => $_ensure(13);
+
+ @$pb.TagNumber(26)
+ Uint64Array get uint64Array => $_getN(14);
+ @$pb.TagNumber(26)
+ set uint64Array(Uint64Array v) { setField(26, v); }
+ @$pb.TagNumber(26)
+ $core.bool hasUint64Array() => $_has(14);
+ @$pb.TagNumber(26)
+ void clearUint64Array() => clearField(26);
+ @$pb.TagNumber(26)
+ Uint64Array ensureUint64Array() => $_ensure(14);
+
+ @$pb.TagNumber(27)
+ FloatArray get floatArray => $_getN(15);
+ @$pb.TagNumber(27)
+ set floatArray(FloatArray v) { setField(27, v); }
+ @$pb.TagNumber(27)
+ $core.bool hasFloatArray() => $_has(15);
+ @$pb.TagNumber(27)
+ void clearFloatArray() => clearField(27);
+ @$pb.TagNumber(27)
+ FloatArray ensureFloatArray() => $_ensure(15);
+
+ @$pb.TagNumber(28)
+ DoubleArray get doubleArray => $_getN(16);
+ @$pb.TagNumber(28)
+ set doubleArray(DoubleArray v) { setField(28, v); }
+ @$pb.TagNumber(28)
+ $core.bool hasDoubleArray() => $_has(16);
+ @$pb.TagNumber(28)
+ void clearDoubleArray() => clearField(28);
+ @$pb.TagNumber(28)
+ DoubleArray ensureDoubleArray() => $_ensure(16);
+}
+
+enum Metadata_EntrySpecific {
+ actuator,
+ sensor,
+ attribute,
+ notSet
+}
+
+class Metadata extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, Metadata_EntrySpecific> _Metadata_EntrySpecificByTag = {
+ 20 : Metadata_EntrySpecific.actuator,
+ 30 : Metadata_EntrySpecific.sensor,
+ 40 : Metadata_EntrySpecific.attribute,
+ 0 : Metadata_EntrySpecific.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Metadata', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..oo(0, [20, 30, 40])
+ ..e<DataType>(11, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dataType', $pb.PbFieldType.OE, defaultOrMaker: DataType.DATA_TYPE_UNSPECIFIED, valueOf: DataType.valueOf, enumValues: DataType.values)
+ ..e<EntryType>(12, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'entryType', $pb.PbFieldType.OE, defaultOrMaker: EntryType.ENTRY_TYPE_UNSPECIFIED, valueOf: EntryType.valueOf, enumValues: EntryType.values)
+ ..aOS(13, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'description')
+ ..aOS(14, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'comment')
+ ..aOS(15, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deprecation')
+ ..aOS(16, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'unit')
+ ..aOM<ValueRestriction>(17, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'valueRestriction', subBuilder: ValueRestriction.create)
+ ..aOM<Actuator>(20, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'actuator', subBuilder: Actuator.create)
+ ..aOM<Sensor>(30, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'sensor', subBuilder: Sensor.create)
+ ..aOM<Attribute>(40, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'attribute', subBuilder: Attribute.create)
+ ..hasRequiredFields = false
+ ;
+
+ Metadata._() : super();
+ factory Metadata({
+ DataType? dataType,
+ EntryType? entryType,
+ $core.String? description,
+ $core.String? comment,
+ $core.String? deprecation,
+ $core.String? unit,
+ ValueRestriction? valueRestriction,
+ Actuator? actuator,
+ Sensor? sensor,
+ Attribute? attribute,
+ }) {
+ final _result = create();
+ if (dataType != null) {
+ _result.dataType = dataType;
+ }
+ if (entryType != null) {
+ _result.entryType = entryType;
+ }
+ if (description != null) {
+ _result.description = description;
+ }
+ if (comment != null) {
+ _result.comment = comment;
+ }
+ if (deprecation != null) {
+ _result.deprecation = deprecation;
+ }
+ if (unit != null) {
+ _result.unit = unit;
+ }
+ if (valueRestriction != null) {
+ _result.valueRestriction = valueRestriction;
+ }
+ if (actuator != null) {
+ _result.actuator = actuator;
+ }
+ if (sensor != null) {
+ _result.sensor = sensor;
+ }
+ if (attribute != null) {
+ _result.attribute = attribute;
+ }
+ return _result;
+ }
+ factory Metadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Metadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Metadata clone() => Metadata()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Metadata copyWith(void Function(Metadata) updates) => super.copyWith((message) => updates(message as Metadata)) as Metadata; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Metadata create() => Metadata._();
+ Metadata createEmptyInstance() => create();
+ static $pb.PbList<Metadata> createRepeated() => $pb.PbList<Metadata>();
+ @$core.pragma('dart2js:noInline')
+ static Metadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Metadata>(create);
+ static Metadata? _defaultInstance;
+
+ Metadata_EntrySpecific whichEntrySpecific() => _Metadata_EntrySpecificByTag[$_whichOneof(0)]!;
+ void clearEntrySpecific() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(11)
+ DataType get dataType => $_getN(0);
+ @$pb.TagNumber(11)
+ set dataType(DataType v) { setField(11, v); }
+ @$pb.TagNumber(11)
+ $core.bool hasDataType() => $_has(0);
+ @$pb.TagNumber(11)
+ void clearDataType() => clearField(11);
+
+ @$pb.TagNumber(12)
+ EntryType get entryType => $_getN(1);
+ @$pb.TagNumber(12)
+ set entryType(EntryType v) { setField(12, v); }
+ @$pb.TagNumber(12)
+ $core.bool hasEntryType() => $_has(1);
+ @$pb.TagNumber(12)
+ void clearEntryType() => clearField(12);
+
+ @$pb.TagNumber(13)
+ $core.String get description => $_getSZ(2);
+ @$pb.TagNumber(13)
+ set description($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(13)
+ $core.bool hasDescription() => $_has(2);
+ @$pb.TagNumber(13)
+ void clearDescription() => clearField(13);
+
+ @$pb.TagNumber(14)
+ $core.String get comment => $_getSZ(3);
+ @$pb.TagNumber(14)
+ set comment($core.String v) { $_setString(3, v); }
+ @$pb.TagNumber(14)
+ $core.bool hasComment() => $_has(3);
+ @$pb.TagNumber(14)
+ void clearComment() => clearField(14);
+
+ @$pb.TagNumber(15)
+ $core.String get deprecation => $_getSZ(4);
+ @$pb.TagNumber(15)
+ set deprecation($core.String v) { $_setString(4, v); }
+ @$pb.TagNumber(15)
+ $core.bool hasDeprecation() => $_has(4);
+ @$pb.TagNumber(15)
+ void clearDeprecation() => clearField(15);
+
+ @$pb.TagNumber(16)
+ $core.String get unit => $_getSZ(5);
+ @$pb.TagNumber(16)
+ set unit($core.String v) { $_setString(5, v); }
+ @$pb.TagNumber(16)
+ $core.bool hasUnit() => $_has(5);
+ @$pb.TagNumber(16)
+ void clearUnit() => clearField(16);
+
+ @$pb.TagNumber(17)
+ ValueRestriction get valueRestriction => $_getN(6);
+ @$pb.TagNumber(17)
+ set valueRestriction(ValueRestriction v) { setField(17, v); }
+ @$pb.TagNumber(17)
+ $core.bool hasValueRestriction() => $_has(6);
+ @$pb.TagNumber(17)
+ void clearValueRestriction() => clearField(17);
+ @$pb.TagNumber(17)
+ ValueRestriction ensureValueRestriction() => $_ensure(6);
+
+ @$pb.TagNumber(20)
+ Actuator get actuator => $_getN(7);
+ @$pb.TagNumber(20)
+ set actuator(Actuator v) { setField(20, v); }
+ @$pb.TagNumber(20)
+ $core.bool hasActuator() => $_has(7);
+ @$pb.TagNumber(20)
+ void clearActuator() => clearField(20);
+ @$pb.TagNumber(20)
+ Actuator ensureActuator() => $_ensure(7);
+
+ @$pb.TagNumber(30)
+ Sensor get sensor => $_getN(8);
+ @$pb.TagNumber(30)
+ set sensor(Sensor v) { setField(30, v); }
+ @$pb.TagNumber(30)
+ $core.bool hasSensor() => $_has(8);
+ @$pb.TagNumber(30)
+ void clearSensor() => clearField(30);
+ @$pb.TagNumber(30)
+ Sensor ensureSensor() => $_ensure(8);
+
+ @$pb.TagNumber(40)
+ Attribute get attribute => $_getN(9);
+ @$pb.TagNumber(40)
+ set attribute(Attribute v) { setField(40, v); }
+ @$pb.TagNumber(40)
+ $core.bool hasAttribute() => $_has(9);
+ @$pb.TagNumber(40)
+ void clearAttribute() => clearField(40);
+ @$pb.TagNumber(40)
+ Attribute ensureAttribute() => $_ensure(9);
+}
+
+class Actuator extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Actuator', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ Actuator._() : super();
+ factory Actuator() => create();
+ factory Actuator.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Actuator.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Actuator clone() => Actuator()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Actuator copyWith(void Function(Actuator) updates) => super.copyWith((message) => updates(message as Actuator)) as Actuator; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Actuator create() => Actuator._();
+ Actuator createEmptyInstance() => create();
+ static $pb.PbList<Actuator> createRepeated() => $pb.PbList<Actuator>();
+ @$core.pragma('dart2js:noInline')
+ static Actuator getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Actuator>(create);
+ static Actuator? _defaultInstance;
+}
+
+class Sensor extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Sensor', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ Sensor._() : super();
+ factory Sensor() => create();
+ factory Sensor.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Sensor.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Sensor clone() => Sensor()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Sensor copyWith(void Function(Sensor) updates) => super.copyWith((message) => updates(message as Sensor)) as Sensor; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Sensor create() => Sensor._();
+ Sensor createEmptyInstance() => create();
+ static $pb.PbList<Sensor> createRepeated() => $pb.PbList<Sensor>();
+ @$core.pragma('dart2js:noInline')
+ static Sensor getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Sensor>(create);
+ static Sensor? _defaultInstance;
+}
+
+class Attribute extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Attribute', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ Attribute._() : super();
+ factory Attribute() => create();
+ factory Attribute.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Attribute.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Attribute clone() => Attribute()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Attribute copyWith(void Function(Attribute) updates) => super.copyWith((message) => updates(message as Attribute)) as Attribute; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Attribute create() => Attribute._();
+ Attribute createEmptyInstance() => create();
+ static $pb.PbList<Attribute> createRepeated() => $pb.PbList<Attribute>();
+ @$core.pragma('dart2js:noInline')
+ static Attribute getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Attribute>(create);
+ static Attribute? _defaultInstance;
+}
+
+enum ValueRestriction_Type {
+ string,
+ signed,
+ unsigned,
+ floatingPoint,
+ notSet
+}
+
+class ValueRestriction extends $pb.GeneratedMessage {
+ static const $core.Map<$core.int, ValueRestriction_Type> _ValueRestriction_TypeByTag = {
+ 21 : ValueRestriction_Type.string,
+ 22 : ValueRestriction_Type.signed,
+ 23 : ValueRestriction_Type.unsigned,
+ 24 : ValueRestriction_Type.floatingPoint,
+ 0 : ValueRestriction_Type.notSet
+ };
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ValueRestriction', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..oo(0, [21, 22, 23, 24])
+ ..aOM<ValueRestrictionString>(21, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'string', subBuilder: ValueRestrictionString.create)
+ ..aOM<ValueRestrictionInt>(22, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'signed', subBuilder: ValueRestrictionInt.create)
+ ..aOM<ValueRestrictionUint>(23, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'unsigned', subBuilder: ValueRestrictionUint.create)
+ ..aOM<ValueRestrictionFloat>(24, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'floatingPoint', subBuilder: ValueRestrictionFloat.create)
+ ..hasRequiredFields = false
+ ;
+
+ ValueRestriction._() : super();
+ factory ValueRestriction({
+ ValueRestrictionString? string,
+ ValueRestrictionInt? signed,
+ ValueRestrictionUint? unsigned,
+ ValueRestrictionFloat? floatingPoint,
+ }) {
+ final _result = create();
+ if (string != null) {
+ _result.string = string;
+ }
+ if (signed != null) {
+ _result.signed = signed;
+ }
+ if (unsigned != null) {
+ _result.unsigned = unsigned;
+ }
+ if (floatingPoint != null) {
+ _result.floatingPoint = floatingPoint;
+ }
+ return _result;
+ }
+ factory ValueRestriction.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory ValueRestriction.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ ValueRestriction clone() => ValueRestriction()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ ValueRestriction copyWith(void Function(ValueRestriction) updates) => super.copyWith((message) => updates(message as ValueRestriction)) as ValueRestriction; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ValueRestriction create() => ValueRestriction._();
+ ValueRestriction createEmptyInstance() => create();
+ static $pb.PbList<ValueRestriction> createRepeated() => $pb.PbList<ValueRestriction>();
+ @$core.pragma('dart2js:noInline')
+ static ValueRestriction getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ValueRestriction>(create);
+ static ValueRestriction? _defaultInstance;
+
+ ValueRestriction_Type whichType() => _ValueRestriction_TypeByTag[$_whichOneof(0)]!;
+ void clearType() => clearField($_whichOneof(0));
+
+ @$pb.TagNumber(21)
+ ValueRestrictionString get string => $_getN(0);
+ @$pb.TagNumber(21)
+ set string(ValueRestrictionString v) { setField(21, v); }
+ @$pb.TagNumber(21)
+ $core.bool hasString() => $_has(0);
+ @$pb.TagNumber(21)
+ void clearString() => clearField(21);
+ @$pb.TagNumber(21)
+ ValueRestrictionString ensureString() => $_ensure(0);
+
+ @$pb.TagNumber(22)
+ ValueRestrictionInt get signed => $_getN(1);
+ @$pb.TagNumber(22)
+ set signed(ValueRestrictionInt v) { setField(22, v); }
+ @$pb.TagNumber(22)
+ $core.bool hasSigned() => $_has(1);
+ @$pb.TagNumber(22)
+ void clearSigned() => clearField(22);
+ @$pb.TagNumber(22)
+ ValueRestrictionInt ensureSigned() => $_ensure(1);
+
+ @$pb.TagNumber(23)
+ ValueRestrictionUint get unsigned => $_getN(2);
+ @$pb.TagNumber(23)
+ set unsigned(ValueRestrictionUint v) { setField(23, v); }
+ @$pb.TagNumber(23)
+ $core.bool hasUnsigned() => $_has(2);
+ @$pb.TagNumber(23)
+ void clearUnsigned() => clearField(23);
+ @$pb.TagNumber(23)
+ ValueRestrictionUint ensureUnsigned() => $_ensure(2);
+
+ @$pb.TagNumber(24)
+ ValueRestrictionFloat get floatingPoint => $_getN(3);
+ @$pb.TagNumber(24)
+ set floatingPoint(ValueRestrictionFloat v) { setField(24, v); }
+ @$pb.TagNumber(24)
+ $core.bool hasFloatingPoint() => $_has(3);
+ @$pb.TagNumber(24)
+ void clearFloatingPoint() => clearField(24);
+ @$pb.TagNumber(24)
+ ValueRestrictionFloat ensureFloatingPoint() => $_ensure(3);
+}
+
+class ValueRestrictionInt extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ValueRestrictionInt', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'min', $pb.PbFieldType.OS6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'max', $pb.PbFieldType.OS6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..p<$fixnum.Int64>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'allowedValues', $pb.PbFieldType.KS6)
+ ..hasRequiredFields = false
+ ;
+
+ ValueRestrictionInt._() : super();
+ factory ValueRestrictionInt({
+ $fixnum.Int64? min,
+ $fixnum.Int64? max,
+ $core.Iterable<$fixnum.Int64>? allowedValues,
+ }) {
+ final _result = create();
+ if (min != null) {
+ _result.min = min;
+ }
+ if (max != null) {
+ _result.max = max;
+ }
+ if (allowedValues != null) {
+ _result.allowedValues.addAll(allowedValues);
+ }
+ return _result;
+ }
+ factory ValueRestrictionInt.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory ValueRestrictionInt.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionInt clone() => ValueRestrictionInt()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionInt copyWith(void Function(ValueRestrictionInt) updates) => super.copyWith((message) => updates(message as ValueRestrictionInt)) as ValueRestrictionInt; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionInt create() => ValueRestrictionInt._();
+ ValueRestrictionInt createEmptyInstance() => create();
+ static $pb.PbList<ValueRestrictionInt> createRepeated() => $pb.PbList<ValueRestrictionInt>();
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionInt getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ValueRestrictionInt>(create);
+ static ValueRestrictionInt? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get min => $_getI64(0);
+ @$pb.TagNumber(1)
+ set min($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMin() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMin() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $fixnum.Int64 get max => $_getI64(1);
+ @$pb.TagNumber(2)
+ set max($fixnum.Int64 v) { $_setInt64(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMax() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMax() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$fixnum.Int64> get allowedValues => $_getList(2);
+}
+
+class ValueRestrictionUint extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ValueRestrictionUint', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..a<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'min', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..a<$fixnum.Int64>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'max', $pb.PbFieldType.OU6, defaultOrMaker: $fixnum.Int64.ZERO)
+ ..p<$fixnum.Int64>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'allowedValues', $pb.PbFieldType.KU6)
+ ..hasRequiredFields = false
+ ;
+
+ ValueRestrictionUint._() : super();
+ factory ValueRestrictionUint({
+ $fixnum.Int64? min,
+ $fixnum.Int64? max,
+ $core.Iterable<$fixnum.Int64>? allowedValues,
+ }) {
+ final _result = create();
+ if (min != null) {
+ _result.min = min;
+ }
+ if (max != null) {
+ _result.max = max;
+ }
+ if (allowedValues != null) {
+ _result.allowedValues.addAll(allowedValues);
+ }
+ return _result;
+ }
+ factory ValueRestrictionUint.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory ValueRestrictionUint.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionUint clone() => ValueRestrictionUint()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionUint copyWith(void Function(ValueRestrictionUint) updates) => super.copyWith((message) => updates(message as ValueRestrictionUint)) as ValueRestrictionUint; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionUint create() => ValueRestrictionUint._();
+ ValueRestrictionUint createEmptyInstance() => create();
+ static $pb.PbList<ValueRestrictionUint> createRepeated() => $pb.PbList<ValueRestrictionUint>();
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionUint getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ValueRestrictionUint>(create);
+ static ValueRestrictionUint? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $fixnum.Int64 get min => $_getI64(0);
+ @$pb.TagNumber(1)
+ set min($fixnum.Int64 v) { $_setInt64(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMin() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMin() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $fixnum.Int64 get max => $_getI64(1);
+ @$pb.TagNumber(2)
+ set max($fixnum.Int64 v) { $_setInt64(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMax() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMax() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$fixnum.Int64> get allowedValues => $_getList(2);
+}
+
+class ValueRestrictionFloat extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ValueRestrictionFloat', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..a<$core.double>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'min', $pb.PbFieldType.OD)
+ ..a<$core.double>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'max', $pb.PbFieldType.OD)
+ ..p<$core.double>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'allowedValues', $pb.PbFieldType.KD)
+ ..hasRequiredFields = false
+ ;
+
+ ValueRestrictionFloat._() : super();
+ factory ValueRestrictionFloat({
+ $core.double? min,
+ $core.double? max,
+ $core.Iterable<$core.double>? allowedValues,
+ }) {
+ final _result = create();
+ if (min != null) {
+ _result.min = min;
+ }
+ if (max != null) {
+ _result.max = max;
+ }
+ if (allowedValues != null) {
+ _result.allowedValues.addAll(allowedValues);
+ }
+ return _result;
+ }
+ factory ValueRestrictionFloat.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory ValueRestrictionFloat.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionFloat clone() => ValueRestrictionFloat()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionFloat copyWith(void Function(ValueRestrictionFloat) updates) => super.copyWith((message) => updates(message as ValueRestrictionFloat)) as ValueRestrictionFloat; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionFloat create() => ValueRestrictionFloat._();
+ ValueRestrictionFloat createEmptyInstance() => create();
+ static $pb.PbList<ValueRestrictionFloat> createRepeated() => $pb.PbList<ValueRestrictionFloat>();
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionFloat getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ValueRestrictionFloat>(create);
+ static ValueRestrictionFloat? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.double get min => $_getN(0);
+ @$pb.TagNumber(1)
+ set min($core.double v) { $_setDouble(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasMin() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearMin() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.double get max => $_getN(1);
+ @$pb.TagNumber(2)
+ set max($core.double v) { $_setDouble(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasMax() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearMax() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$core.double> get allowedValues => $_getList(2);
+}
+
+class ValueRestrictionString extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ValueRestrictionString', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pPS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'allowedValues')
+ ..hasRequiredFields = false
+ ;
+
+ ValueRestrictionString._() : super();
+ factory ValueRestrictionString({
+ $core.Iterable<$core.String>? allowedValues,
+ }) {
+ final _result = create();
+ if (allowedValues != null) {
+ _result.allowedValues.addAll(allowedValues);
+ }
+ return _result;
+ }
+ factory ValueRestrictionString.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory ValueRestrictionString.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionString clone() => ValueRestrictionString()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ ValueRestrictionString copyWith(void Function(ValueRestrictionString) updates) => super.copyWith((message) => updates(message as ValueRestrictionString)) as ValueRestrictionString; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionString create() => ValueRestrictionString._();
+ ValueRestrictionString createEmptyInstance() => create();
+ static $pb.PbList<ValueRestrictionString> createRepeated() => $pb.PbList<ValueRestrictionString>();
+ @$core.pragma('dart2js:noInline')
+ static ValueRestrictionString getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ValueRestrictionString>(create);
+ static ValueRestrictionString? _defaultInstance;
+
+ @$pb.TagNumber(3)
+ $core.List<$core.String> get allowedValues => $_getList(0);
+}
+
+class Error extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Error', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'code', $pb.PbFieldType.OU3)
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'reason')
+ ..aOS(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message')
+ ..hasRequiredFields = false
+ ;
+
+ Error._() : super();
+ factory Error({
+ $core.int? code,
+ $core.String? reason,
+ $core.String? message,
+ }) {
+ final _result = create();
+ if (code != null) {
+ _result.code = code;
+ }
+ if (reason != null) {
+ _result.reason = reason;
+ }
+ if (message != null) {
+ _result.message = message;
+ }
+ return _result;
+ }
+ factory Error.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Error.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Error clone() => Error()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Error copyWith(void Function(Error) updates) => super.copyWith((message) => updates(message as Error)) as Error; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Error create() => Error._();
+ Error createEmptyInstance() => create();
+ static $pb.PbList<Error> createRepeated() => $pb.PbList<Error>();
+ @$core.pragma('dart2js:noInline')
+ static Error getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Error>(create);
+ static Error? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.int get code => $_getIZ(0);
+ @$pb.TagNumber(1)
+ set code($core.int v) { $_setUnsignedInt32(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasCode() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearCode() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get reason => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set reason($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasReason() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearReason() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.String get message => $_getSZ(2);
+ @$pb.TagNumber(3)
+ set message($core.String v) { $_setString(2, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasMessage() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearMessage() => clearField(3);
+}
+
+class DataEntryError extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DataEntryError', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'path')
+ ..aOM<Error>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'error', subBuilder: Error.create)
+ ..hasRequiredFields = false
+ ;
+
+ DataEntryError._() : super();
+ factory DataEntryError({
+ $core.String? path,
+ Error? error,
+ }) {
+ final _result = create();
+ if (path != null) {
+ _result.path = path;
+ }
+ if (error != null) {
+ _result.error = error;
+ }
+ return _result;
+ }
+ factory DataEntryError.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DataEntryError.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DataEntryError clone() => DataEntryError()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DataEntryError copyWith(void Function(DataEntryError) updates) => super.copyWith((message) => updates(message as DataEntryError)) as DataEntryError; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DataEntryError create() => DataEntryError._();
+ DataEntryError createEmptyInstance() => create();
+ static $pb.PbList<DataEntryError> createRepeated() => $pb.PbList<DataEntryError>();
+ @$core.pragma('dart2js:noInline')
+ static DataEntryError getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DataEntryError>(create);
+ static DataEntryError? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get path => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set path($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasPath() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPath() => clearField(1);
+
+ @$pb.TagNumber(2)
+ Error get error => $_getN(1);
+ @$pb.TagNumber(2)
+ set error(Error v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasError() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearError() => clearField(2);
+ @$pb.TagNumber(2)
+ Error ensureError() => $_ensure(1);
+}
+
+class StringArray extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'StringArray', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pPS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values')
+ ..hasRequiredFields = false
+ ;
+
+ StringArray._() : super();
+ factory StringArray({
+ $core.Iterable<$core.String>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory StringArray.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory StringArray.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ StringArray clone() => StringArray()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ StringArray copyWith(void Function(StringArray) updates) => super.copyWith((message) => updates(message as StringArray)) as StringArray; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static StringArray create() => StringArray._();
+ StringArray createEmptyInstance() => create();
+ static $pb.PbList<StringArray> createRepeated() => $pb.PbList<StringArray>();
+ @$core.pragma('dart2js:noInline')
+ static StringArray getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<StringArray>(create);
+ static StringArray? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.String> get values => $_getList(0);
+}
+
+class BoolArray extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BoolArray', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$core.bool>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KB)
+ ..hasRequiredFields = false
+ ;
+
+ BoolArray._() : super();
+ factory BoolArray({
+ $core.Iterable<$core.bool>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory BoolArray.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory BoolArray.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ BoolArray clone() => BoolArray()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ BoolArray copyWith(void Function(BoolArray) updates) => super.copyWith((message) => updates(message as BoolArray)) as BoolArray; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static BoolArray create() => BoolArray._();
+ BoolArray createEmptyInstance() => create();
+ static $pb.PbList<BoolArray> createRepeated() => $pb.PbList<BoolArray>();
+ @$core.pragma('dart2js:noInline')
+ static BoolArray getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<BoolArray>(create);
+ static BoolArray? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.bool> get values => $_getList(0);
+}
+
+class Int32Array extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Int32Array', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KS3)
+ ..hasRequiredFields = false
+ ;
+
+ Int32Array._() : super();
+ factory Int32Array({
+ $core.Iterable<$core.int>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory Int32Array.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Int32Array.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Int32Array clone() => Int32Array()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Int32Array copyWith(void Function(Int32Array) updates) => super.copyWith((message) => updates(message as Int32Array)) as Int32Array; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Int32Array create() => Int32Array._();
+ Int32Array createEmptyInstance() => create();
+ static $pb.PbList<Int32Array> createRepeated() => $pb.PbList<Int32Array>();
+ @$core.pragma('dart2js:noInline')
+ static Int32Array getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Int32Array>(create);
+ static Int32Array? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.int> get values => $_getList(0);
+}
+
+class Int64Array extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Int64Array', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KS6)
+ ..hasRequiredFields = false
+ ;
+
+ Int64Array._() : super();
+ factory Int64Array({
+ $core.Iterable<$fixnum.Int64>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory Int64Array.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Int64Array.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Int64Array clone() => Int64Array()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Int64Array copyWith(void Function(Int64Array) updates) => super.copyWith((message) => updates(message as Int64Array)) as Int64Array; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Int64Array create() => Int64Array._();
+ Int64Array createEmptyInstance() => create();
+ static $pb.PbList<Int64Array> createRepeated() => $pb.PbList<Int64Array>();
+ @$core.pragma('dart2js:noInline')
+ static Int64Array getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Int64Array>(create);
+ static Int64Array? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$fixnum.Int64> get values => $_getList(0);
+}
+
+class Uint32Array extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Uint32Array', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KU3)
+ ..hasRequiredFields = false
+ ;
+
+ Uint32Array._() : super();
+ factory Uint32Array({
+ $core.Iterable<$core.int>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory Uint32Array.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Uint32Array.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Uint32Array clone() => Uint32Array()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Uint32Array copyWith(void Function(Uint32Array) updates) => super.copyWith((message) => updates(message as Uint32Array)) as Uint32Array; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Uint32Array create() => Uint32Array._();
+ Uint32Array createEmptyInstance() => create();
+ static $pb.PbList<Uint32Array> createRepeated() => $pb.PbList<Uint32Array>();
+ @$core.pragma('dart2js:noInline')
+ static Uint32Array getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Uint32Array>(create);
+ static Uint32Array? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.int> get values => $_getList(0);
+}
+
+class Uint64Array extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Uint64Array', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$fixnum.Int64>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KU6)
+ ..hasRequiredFields = false
+ ;
+
+ Uint64Array._() : super();
+ factory Uint64Array({
+ $core.Iterable<$fixnum.Int64>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory Uint64Array.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory Uint64Array.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ Uint64Array clone() => Uint64Array()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ Uint64Array copyWith(void Function(Uint64Array) updates) => super.copyWith((message) => updates(message as Uint64Array)) as Uint64Array; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static Uint64Array create() => Uint64Array._();
+ Uint64Array createEmptyInstance() => create();
+ static $pb.PbList<Uint64Array> createRepeated() => $pb.PbList<Uint64Array>();
+ @$core.pragma('dart2js:noInline')
+ static Uint64Array getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Uint64Array>(create);
+ static Uint64Array? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$fixnum.Int64> get values => $_getList(0);
+}
+
+class FloatArray extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'FloatArray', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$core.double>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KF)
+ ..hasRequiredFields = false
+ ;
+
+ FloatArray._() : super();
+ factory FloatArray({
+ $core.Iterable<$core.double>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory FloatArray.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory FloatArray.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ FloatArray clone() => FloatArray()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ FloatArray copyWith(void Function(FloatArray) updates) => super.copyWith((message) => updates(message as FloatArray)) as FloatArray; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static FloatArray create() => FloatArray._();
+ FloatArray createEmptyInstance() => create();
+ static $pb.PbList<FloatArray> createRepeated() => $pb.PbList<FloatArray>();
+ @$core.pragma('dart2js:noInline')
+ static FloatArray getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<FloatArray>(create);
+ static FloatArray? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.double> get values => $_getList(0);
+}
+
+class DoubleArray extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DoubleArray', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..p<$core.double>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'values', $pb.PbFieldType.KD)
+ ..hasRequiredFields = false
+ ;
+
+ DoubleArray._() : super();
+ factory DoubleArray({
+ $core.Iterable<$core.double>? values,
+ }) {
+ final _result = create();
+ if (values != null) {
+ _result.values.addAll(values);
+ }
+ return _result;
+ }
+ factory DoubleArray.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory DoubleArray.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ DoubleArray clone() => DoubleArray()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ DoubleArray copyWith(void Function(DoubleArray) updates) => super.copyWith((message) => updates(message as DoubleArray)) as DoubleArray; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static DoubleArray create() => DoubleArray._();
+ DoubleArray createEmptyInstance() => create();
+ static $pb.PbList<DoubleArray> createRepeated() => $pb.PbList<DoubleArray>();
+ @$core.pragma('dart2js:noInline')
+ static DoubleArray getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DoubleArray>(create);
+ static DoubleArray? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$core.double> get values => $_getList(0);
+}
+
diff --git a/lib/generated/kuksa/val/v1/types.pbenum.dart b/lib/generated/kuksa/val/v1/types.pbenum.dart
new file mode 100644
index 0000000..745d50a
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/types.pbenum.dart
@@ -0,0 +1,159 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/types.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+// ignore_for_file: UNDEFINED_SHOWN_NAME
+import 'dart:core' as $core;
+import 'package:protobuf/protobuf.dart' as $pb;
+
+class DataType extends $pb.ProtobufEnum {
+ static const DataType DATA_TYPE_UNSPECIFIED = DataType._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UNSPECIFIED');
+ static const DataType DATA_TYPE_STRING = DataType._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_STRING');
+ static const DataType DATA_TYPE_BOOLEAN = DataType._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_BOOLEAN');
+ static const DataType DATA_TYPE_INT8 = DataType._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT8');
+ static const DataType DATA_TYPE_INT16 = DataType._(4, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT16');
+ static const DataType DATA_TYPE_INT32 = DataType._(5, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT32');
+ static const DataType DATA_TYPE_INT64 = DataType._(6, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT64');
+ static const DataType DATA_TYPE_UINT8 = DataType._(7, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT8');
+ static const DataType DATA_TYPE_UINT16 = DataType._(8, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT16');
+ static const DataType DATA_TYPE_UINT32 = DataType._(9, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT32');
+ static const DataType DATA_TYPE_UINT64 = DataType._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT64');
+ static const DataType DATA_TYPE_FLOAT = DataType._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_FLOAT');
+ static const DataType DATA_TYPE_DOUBLE = DataType._(12, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_DOUBLE');
+ static const DataType DATA_TYPE_TIMESTAMP = DataType._(13, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_TIMESTAMP');
+ static const DataType DATA_TYPE_STRING_ARRAY = DataType._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_STRING_ARRAY');
+ static const DataType DATA_TYPE_BOOLEAN_ARRAY = DataType._(21, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_BOOLEAN_ARRAY');
+ static const DataType DATA_TYPE_INT8_ARRAY = DataType._(22, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT8_ARRAY');
+ static const DataType DATA_TYPE_INT16_ARRAY = DataType._(23, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT16_ARRAY');
+ static const DataType DATA_TYPE_INT32_ARRAY = DataType._(24, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT32_ARRAY');
+ static const DataType DATA_TYPE_INT64_ARRAY = DataType._(25, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_INT64_ARRAY');
+ static const DataType DATA_TYPE_UINT8_ARRAY = DataType._(26, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT8_ARRAY');
+ static const DataType DATA_TYPE_UINT16_ARRAY = DataType._(27, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT16_ARRAY');
+ static const DataType DATA_TYPE_UINT32_ARRAY = DataType._(28, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT32_ARRAY');
+ static const DataType DATA_TYPE_UINT64_ARRAY = DataType._(29, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_UINT64_ARRAY');
+ static const DataType DATA_TYPE_FLOAT_ARRAY = DataType._(30, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_FLOAT_ARRAY');
+ static const DataType DATA_TYPE_DOUBLE_ARRAY = DataType._(31, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_DOUBLE_ARRAY');
+ static const DataType DATA_TYPE_TIMESTAMP_ARRAY = DataType._(32, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'DATA_TYPE_TIMESTAMP_ARRAY');
+
+ static const $core.List<DataType> values = <DataType> [
+ DATA_TYPE_UNSPECIFIED,
+ DATA_TYPE_STRING,
+ DATA_TYPE_BOOLEAN,
+ DATA_TYPE_INT8,
+ DATA_TYPE_INT16,
+ DATA_TYPE_INT32,
+ DATA_TYPE_INT64,
+ DATA_TYPE_UINT8,
+ DATA_TYPE_UINT16,
+ DATA_TYPE_UINT32,
+ DATA_TYPE_UINT64,
+ DATA_TYPE_FLOAT,
+ DATA_TYPE_DOUBLE,
+ DATA_TYPE_TIMESTAMP,
+ DATA_TYPE_STRING_ARRAY,
+ DATA_TYPE_BOOLEAN_ARRAY,
+ DATA_TYPE_INT8_ARRAY,
+ DATA_TYPE_INT16_ARRAY,
+ DATA_TYPE_INT32_ARRAY,
+ DATA_TYPE_INT64_ARRAY,
+ DATA_TYPE_UINT8_ARRAY,
+ DATA_TYPE_UINT16_ARRAY,
+ DATA_TYPE_UINT32_ARRAY,
+ DATA_TYPE_UINT64_ARRAY,
+ DATA_TYPE_FLOAT_ARRAY,
+ DATA_TYPE_DOUBLE_ARRAY,
+ DATA_TYPE_TIMESTAMP_ARRAY,
+ ];
+
+ static final $core.Map<$core.int, DataType> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static DataType? valueOf($core.int value) => _byValue[value];
+
+ const DataType._($core.int v, $core.String n) : super(v, n);
+}
+
+class EntryType extends $pb.ProtobufEnum {
+ static const EntryType ENTRY_TYPE_UNSPECIFIED = EntryType._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ENTRY_TYPE_UNSPECIFIED');
+ static const EntryType ENTRY_TYPE_ATTRIBUTE = EntryType._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ENTRY_TYPE_ATTRIBUTE');
+ static const EntryType ENTRY_TYPE_SENSOR = EntryType._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ENTRY_TYPE_SENSOR');
+ static const EntryType ENTRY_TYPE_ACTUATOR = EntryType._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ENTRY_TYPE_ACTUATOR');
+
+ static const $core.List<EntryType> values = <EntryType> [
+ ENTRY_TYPE_UNSPECIFIED,
+ ENTRY_TYPE_ATTRIBUTE,
+ ENTRY_TYPE_SENSOR,
+ ENTRY_TYPE_ACTUATOR,
+ ];
+
+ static final $core.Map<$core.int, EntryType> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static EntryType? valueOf($core.int value) => _byValue[value];
+
+ const EntryType._($core.int v, $core.String n) : super(v, n);
+}
+
+class View extends $pb.ProtobufEnum {
+ static const View VIEW_UNSPECIFIED = View._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_UNSPECIFIED');
+ static const View VIEW_CURRENT_VALUE = View._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_CURRENT_VALUE');
+ static const View VIEW_TARGET_VALUE = View._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_TARGET_VALUE');
+ static const View VIEW_METADATA = View._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_METADATA');
+ static const View VIEW_FIELDS = View._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_FIELDS');
+ static const View VIEW_ALL = View._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'VIEW_ALL');
+
+ static const $core.List<View> values = <View> [
+ VIEW_UNSPECIFIED,
+ VIEW_CURRENT_VALUE,
+ VIEW_TARGET_VALUE,
+ VIEW_METADATA,
+ VIEW_FIELDS,
+ VIEW_ALL,
+ ];
+
+ static final $core.Map<$core.int, View> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static View? valueOf($core.int value) => _byValue[value];
+
+ const View._($core.int v, $core.String n) : super(v, n);
+}
+
+class Field extends $pb.ProtobufEnum {
+ static const Field FIELD_UNSPECIFIED = Field._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_UNSPECIFIED');
+ static const Field FIELD_PATH = Field._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_PATH');
+ static const Field FIELD_VALUE = Field._(2, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_VALUE');
+ static const Field FIELD_ACTUATOR_TARGET = Field._(3, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_ACTUATOR_TARGET');
+ static const Field FIELD_METADATA = Field._(10, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA');
+ static const Field FIELD_METADATA_DATA_TYPE = Field._(11, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_DATA_TYPE');
+ static const Field FIELD_METADATA_DESCRIPTION = Field._(12, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_DESCRIPTION');
+ static const Field FIELD_METADATA_ENTRY_TYPE = Field._(13, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_ENTRY_TYPE');
+ static const Field FIELD_METADATA_COMMENT = Field._(14, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_COMMENT');
+ static const Field FIELD_METADATA_DEPRECATION = Field._(15, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_DEPRECATION');
+ static const Field FIELD_METADATA_UNIT = Field._(16, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_UNIT');
+ static const Field FIELD_METADATA_VALUE_RESTRICTION = Field._(17, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_VALUE_RESTRICTION');
+ static const Field FIELD_METADATA_ACTUATOR = Field._(20, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_ACTUATOR');
+ static const Field FIELD_METADATA_SENSOR = Field._(30, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_SENSOR');
+ static const Field FIELD_METADATA_ATTRIBUTE = Field._(40, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'FIELD_METADATA_ATTRIBUTE');
+
+ static const $core.List<Field> values = <Field> [
+ FIELD_UNSPECIFIED,
+ FIELD_PATH,
+ FIELD_VALUE,
+ FIELD_ACTUATOR_TARGET,
+ FIELD_METADATA,
+ FIELD_METADATA_DATA_TYPE,
+ FIELD_METADATA_DESCRIPTION,
+ FIELD_METADATA_ENTRY_TYPE,
+ FIELD_METADATA_COMMENT,
+ FIELD_METADATA_DEPRECATION,
+ FIELD_METADATA_UNIT,
+ FIELD_METADATA_VALUE_RESTRICTION,
+ FIELD_METADATA_ACTUATOR,
+ FIELD_METADATA_SENSOR,
+ FIELD_METADATA_ATTRIBUTE,
+ ];
+
+ static final $core.Map<$core.int, Field> _byValue = $pb.ProtobufEnum.initByValue(values);
+ static Field? valueOf($core.int value) => _byValue[value];
+
+ const Field._($core.int v, $core.String n) : super(v, n);
+}
+
diff --git a/lib/generated/kuksa/val/v1/types.pbjson.dart b/lib/generated/kuksa/val/v1/types.pbjson.dart
new file mode 100644
index 0000000..063631a
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/types.pbjson.dart
@@ -0,0 +1,364 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/types.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+import 'dart:convert' as $convert;
+import 'dart:typed_data' as $typed_data;
+@$core.Deprecated('Use dataTypeDescriptor instead')
+const DataType$json = const {
+ '1': 'DataType',
+ '2': const [
+ const {'1': 'DATA_TYPE_UNSPECIFIED', '2': 0},
+ const {'1': 'DATA_TYPE_STRING', '2': 1},
+ const {'1': 'DATA_TYPE_BOOLEAN', '2': 2},
+ const {'1': 'DATA_TYPE_INT8', '2': 3},
+ const {'1': 'DATA_TYPE_INT16', '2': 4},
+ const {'1': 'DATA_TYPE_INT32', '2': 5},
+ const {'1': 'DATA_TYPE_INT64', '2': 6},
+ const {'1': 'DATA_TYPE_UINT8', '2': 7},
+ const {'1': 'DATA_TYPE_UINT16', '2': 8},
+ const {'1': 'DATA_TYPE_UINT32', '2': 9},
+ const {'1': 'DATA_TYPE_UINT64', '2': 10},
+ const {'1': 'DATA_TYPE_FLOAT', '2': 11},
+ const {'1': 'DATA_TYPE_DOUBLE', '2': 12},
+ const {'1': 'DATA_TYPE_TIMESTAMP', '2': 13},
+ const {'1': 'DATA_TYPE_STRING_ARRAY', '2': 20},
+ const {'1': 'DATA_TYPE_BOOLEAN_ARRAY', '2': 21},
+ const {'1': 'DATA_TYPE_INT8_ARRAY', '2': 22},
+ const {'1': 'DATA_TYPE_INT16_ARRAY', '2': 23},
+ const {'1': 'DATA_TYPE_INT32_ARRAY', '2': 24},
+ const {'1': 'DATA_TYPE_INT64_ARRAY', '2': 25},
+ const {'1': 'DATA_TYPE_UINT8_ARRAY', '2': 26},
+ const {'1': 'DATA_TYPE_UINT16_ARRAY', '2': 27},
+ const {'1': 'DATA_TYPE_UINT32_ARRAY', '2': 28},
+ const {'1': 'DATA_TYPE_UINT64_ARRAY', '2': 29},
+ const {'1': 'DATA_TYPE_FLOAT_ARRAY', '2': 30},
+ const {'1': 'DATA_TYPE_DOUBLE_ARRAY', '2': 31},
+ const {'1': 'DATA_TYPE_TIMESTAMP_ARRAY', '2': 32},
+ ],
+};
+
+/// Descriptor for `DataType`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List dataTypeDescriptor = $convert.base64Decode('CghEYXRhVHlwZRIZChVEQVRBX1RZUEVfVU5TUEVDSUZJRUQQABIUChBEQVRBX1RZUEVfU1RSSU5HEAESFQoRREFUQV9UWVBFX0JPT0xFQU4QAhISCg5EQVRBX1RZUEVfSU5UOBADEhMKD0RBVEFfVFlQRV9JTlQxNhAEEhMKD0RBVEFfVFlQRV9JTlQzMhAFEhMKD0RBVEFfVFlQRV9JTlQ2NBAGEhMKD0RBVEFfVFlQRV9VSU5UOBAHEhQKEERBVEFfVFlQRV9VSU5UMTYQCBIUChBEQVRBX1RZUEVfVUlOVDMyEAkSFAoQREFUQV9UWVBFX1VJTlQ2NBAKEhMKD0RBVEFfVFlQRV9GTE9BVBALEhQKEERBVEFfVFlQRV9ET1VCTEUQDBIXChNEQVRBX1RZUEVfVElNRVNUQU1QEA0SGgoWREFUQV9UWVBFX1NUUklOR19BUlJBWRAUEhsKF0RBVEFfVFlQRV9CT09MRUFOX0FSUkFZEBUSGAoUREFUQV9UWVBFX0lOVDhfQVJSQVkQFhIZChVEQVRBX1RZUEVfSU5UMTZfQVJSQVkQFxIZChVEQVRBX1RZUEVfSU5UMzJfQVJSQVkQGBIZChVEQVRBX1RZUEVfSU5UNjRfQVJSQVkQGRIZChVEQVRBX1RZUEVfVUlOVDhfQVJSQVkQGhIaChZEQVRBX1RZUEVfVUlOVDE2X0FSUkFZEBsSGgoWREFUQV9UWVBFX1VJTlQzMl9BUlJBWRAcEhoKFkRBVEFfVFlQRV9VSU5UNjRfQVJSQVkQHRIZChVEQVRBX1RZUEVfRkxPQVRfQVJSQVkQHhIaChZEQVRBX1RZUEVfRE9VQkxFX0FSUkFZEB8SHQoZREFUQV9UWVBFX1RJTUVTVEFNUF9BUlJBWRAg');
+@$core.Deprecated('Use entryTypeDescriptor instead')
+const EntryType$json = const {
+ '1': 'EntryType',
+ '2': const [
+ const {'1': 'ENTRY_TYPE_UNSPECIFIED', '2': 0},
+ const {'1': 'ENTRY_TYPE_ATTRIBUTE', '2': 1},
+ const {'1': 'ENTRY_TYPE_SENSOR', '2': 2},
+ const {'1': 'ENTRY_TYPE_ACTUATOR', '2': 3},
+ ],
+};
+
+/// Descriptor for `EntryType`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List entryTypeDescriptor = $convert.base64Decode('CglFbnRyeVR5cGUSGgoWRU5UUllfVFlQRV9VTlNQRUNJRklFRBAAEhgKFEVOVFJZX1RZUEVfQVRUUklCVVRFEAESFQoRRU5UUllfVFlQRV9TRU5TT1IQAhIXChNFTlRSWV9UWVBFX0FDVFVBVE9SEAM=');
+@$core.Deprecated('Use viewDescriptor instead')
+const View$json = const {
+ '1': 'View',
+ '2': const [
+ const {'1': 'VIEW_UNSPECIFIED', '2': 0},
+ const {'1': 'VIEW_CURRENT_VALUE', '2': 1},
+ const {'1': 'VIEW_TARGET_VALUE', '2': 2},
+ const {'1': 'VIEW_METADATA', '2': 3},
+ const {'1': 'VIEW_FIELDS', '2': 10},
+ const {'1': 'VIEW_ALL', '2': 20},
+ ],
+};
+
+/// Descriptor for `View`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List viewDescriptor = $convert.base64Decode('CgRWaWV3EhQKEFZJRVdfVU5TUEVDSUZJRUQQABIWChJWSUVXX0NVUlJFTlRfVkFMVUUQARIVChFWSUVXX1RBUkdFVF9WQUxVRRACEhEKDVZJRVdfTUVUQURBVEEQAxIPCgtWSUVXX0ZJRUxEUxAKEgwKCFZJRVdfQUxMEBQ=');
+@$core.Deprecated('Use fieldDescriptor instead')
+const Field$json = const {
+ '1': 'Field',
+ '2': const [
+ const {'1': 'FIELD_UNSPECIFIED', '2': 0},
+ const {'1': 'FIELD_PATH', '2': 1},
+ const {'1': 'FIELD_VALUE', '2': 2},
+ const {'1': 'FIELD_ACTUATOR_TARGET', '2': 3},
+ const {'1': 'FIELD_METADATA', '2': 10},
+ const {'1': 'FIELD_METADATA_DATA_TYPE', '2': 11},
+ const {'1': 'FIELD_METADATA_DESCRIPTION', '2': 12},
+ const {'1': 'FIELD_METADATA_ENTRY_TYPE', '2': 13},
+ const {'1': 'FIELD_METADATA_COMMENT', '2': 14},
+ const {'1': 'FIELD_METADATA_DEPRECATION', '2': 15},
+ const {'1': 'FIELD_METADATA_UNIT', '2': 16},
+ const {'1': 'FIELD_METADATA_VALUE_RESTRICTION', '2': 17},
+ const {'1': 'FIELD_METADATA_ACTUATOR', '2': 20},
+ const {'1': 'FIELD_METADATA_SENSOR', '2': 30},
+ const {'1': 'FIELD_METADATA_ATTRIBUTE', '2': 40},
+ ],
+};
+
+/// Descriptor for `Field`. Decode as a `google.protobuf.EnumDescriptorProto`.
+final $typed_data.Uint8List fieldDescriptor = $convert.base64Decode('CgVGaWVsZBIVChFGSUVMRF9VTlNQRUNJRklFRBAAEg4KCkZJRUxEX1BBVEgQARIPCgtGSUVMRF9WQUxVRRACEhkKFUZJRUxEX0FDVFVBVE9SX1RBUkdFVBADEhIKDkZJRUxEX01FVEFEQVRBEAoSHAoYRklFTERfTUVUQURBVEFfREFUQV9UWVBFEAsSHgoaRklFTERfTUVUQURBVEFfREVTQ1JJUFRJT04QDBIdChlGSUVMRF9NRVRBREFUQV9FTlRSWV9UWVBFEA0SGgoWRklFTERfTUVUQURBVEFfQ09NTUVOVBAOEh4KGkZJRUxEX01FVEFEQVRBX0RFUFJFQ0FUSU9OEA8SFwoTRklFTERfTUVUQURBVEFfVU5JVBAQEiQKIEZJRUxEX01FVEFEQVRBX1ZBTFVFX1JFU1RSSUNUSU9OEBESGwoXRklFTERfTUVUQURBVEFfQUNUVUFUT1IQFBIZChVGSUVMRF9NRVRBREFUQV9TRU5TT1IQHhIcChhGSUVMRF9NRVRBREFUQV9BVFRSSUJVVEUQKA==');
+@$core.Deprecated('Use dataEntryDescriptor instead')
+const DataEntry$json = const {
+ '1': 'DataEntry',
+ '2': const [
+ const {'1': 'path', '3': 1, '4': 1, '5': 9, '10': 'path'},
+ const {'1': 'value', '3': 2, '4': 1, '5': 11, '6': '.kuksa.val.v1.Datapoint', '10': 'value'},
+ const {'1': 'actuator_target', '3': 3, '4': 1, '5': 11, '6': '.kuksa.val.v1.Datapoint', '10': 'actuatorTarget'},
+ const {'1': 'metadata', '3': 10, '4': 1, '5': 11, '6': '.kuksa.val.v1.Metadata', '10': 'metadata'},
+ ],
+};
+
+/// Descriptor for `DataEntry`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List dataEntryDescriptor = $convert.base64Decode('CglEYXRhRW50cnkSEgoEcGF0aBgBIAEoCVIEcGF0aBItCgV2YWx1ZRgCIAEoCzIXLmt1a3NhLnZhbC52MS5EYXRhcG9pbnRSBXZhbHVlEkAKD2FjdHVhdG9yX3RhcmdldBgDIAEoCzIXLmt1a3NhLnZhbC52MS5EYXRhcG9pbnRSDmFjdHVhdG9yVGFyZ2V0EjIKCG1ldGFkYXRhGAogASgLMhYua3Vrc2EudmFsLnYxLk1ldGFkYXRhUghtZXRhZGF0YQ==');
+@$core.Deprecated('Use datapointDescriptor instead')
+const Datapoint$json = const {
+ '1': 'Datapoint',
+ '2': const [
+ const {'1': 'timestamp', '3': 1, '4': 1, '5': 11, '6': '.google.protobuf.Timestamp', '10': 'timestamp'},
+ const {'1': 'string', '3': 11, '4': 1, '5': 9, '9': 0, '10': 'string'},
+ const {'1': 'bool', '3': 12, '4': 1, '5': 8, '9': 0, '10': 'bool'},
+ const {'1': 'int32', '3': 13, '4': 1, '5': 17, '9': 0, '10': 'int32'},
+ const {'1': 'int64', '3': 14, '4': 1, '5': 18, '9': 0, '10': 'int64'},
+ const {'1': 'uint32', '3': 15, '4': 1, '5': 13, '9': 0, '10': 'uint32'},
+ const {'1': 'uint64', '3': 16, '4': 1, '5': 4, '9': 0, '10': 'uint64'},
+ const {'1': 'float', '3': 17, '4': 1, '5': 2, '9': 0, '10': 'float'},
+ const {'1': 'double', '3': 18, '4': 1, '5': 1, '9': 0, '10': 'double'},
+ const {'1': 'string_array', '3': 21, '4': 1, '5': 11, '6': '.kuksa.val.v1.StringArray', '9': 0, '10': 'stringArray'},
+ const {'1': 'bool_array', '3': 22, '4': 1, '5': 11, '6': '.kuksa.val.v1.BoolArray', '9': 0, '10': 'boolArray'},
+ const {'1': 'int32_array', '3': 23, '4': 1, '5': 11, '6': '.kuksa.val.v1.Int32Array', '9': 0, '10': 'int32Array'},
+ const {'1': 'int64_array', '3': 24, '4': 1, '5': 11, '6': '.kuksa.val.v1.Int64Array', '9': 0, '10': 'int64Array'},
+ const {'1': 'uint32_array', '3': 25, '4': 1, '5': 11, '6': '.kuksa.val.v1.Uint32Array', '9': 0, '10': 'uint32Array'},
+ const {'1': 'uint64_array', '3': 26, '4': 1, '5': 11, '6': '.kuksa.val.v1.Uint64Array', '9': 0, '10': 'uint64Array'},
+ const {'1': 'float_array', '3': 27, '4': 1, '5': 11, '6': '.kuksa.val.v1.FloatArray', '9': 0, '10': 'floatArray'},
+ const {'1': 'double_array', '3': 28, '4': 1, '5': 11, '6': '.kuksa.val.v1.DoubleArray', '9': 0, '10': 'doubleArray'},
+ ],
+ '8': const [
+ const {'1': 'value'},
+ ],
+};
+
+/// Descriptor for `Datapoint`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List datapointDescriptor = $convert.base64Decode('CglEYXRhcG9pbnQSOAoJdGltZXN0YW1wGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcFIJdGltZXN0YW1wEhgKBnN0cmluZxgLIAEoCUgAUgZzdHJpbmcSFAoEYm9vbBgMIAEoCEgAUgRib29sEhYKBWludDMyGA0gASgRSABSBWludDMyEhYKBWludDY0GA4gASgSSABSBWludDY0EhgKBnVpbnQzMhgPIAEoDUgAUgZ1aW50MzISGAoGdWludDY0GBAgASgESABSBnVpbnQ2NBIWCgVmbG9hdBgRIAEoAkgAUgVmbG9hdBIYCgZkb3VibGUYEiABKAFIAFIGZG91YmxlEj4KDHN0cmluZ19hcnJheRgVIAEoCzIZLmt1a3NhLnZhbC52MS5TdHJpbmdBcnJheUgAUgtzdHJpbmdBcnJheRI4Cgpib29sX2FycmF5GBYgASgLMhcua3Vrc2EudmFsLnYxLkJvb2xBcnJheUgAUglib29sQXJyYXkSOwoLaW50MzJfYXJyYXkYFyABKAsyGC5rdWtzYS52YWwudjEuSW50MzJBcnJheUgAUgppbnQzMkFycmF5EjsKC2ludDY0X2FycmF5GBggASgLMhgua3Vrc2EudmFsLnYxLkludDY0QXJyYXlIAFIKaW50NjRBcnJheRI+Cgx1aW50MzJfYXJyYXkYGSABKAsyGS5rdWtzYS52YWwudjEuVWludDMyQXJyYXlIAFILdWludDMyQXJyYXkSPgoMdWludDY0X2FycmF5GBogASgLMhkua3Vrc2EudmFsLnYxLlVpbnQ2NEFycmF5SABSC3VpbnQ2NEFycmF5EjsKC2Zsb2F0X2FycmF5GBsgASgLMhgua3Vrc2EudmFsLnYxLkZsb2F0QXJyYXlIAFIKZmxvYXRBcnJheRI+Cgxkb3VibGVfYXJyYXkYHCABKAsyGS5rdWtzYS52YWwudjEuRG91YmxlQXJyYXlIAFILZG91YmxlQXJyYXlCBwoFdmFsdWU=');
+@$core.Deprecated('Use metadataDescriptor instead')
+const Metadata$json = const {
+ '1': 'Metadata',
+ '2': const [
+ const {'1': 'data_type', '3': 11, '4': 1, '5': 14, '6': '.kuksa.val.v1.DataType', '10': 'dataType'},
+ const {'1': 'entry_type', '3': 12, '4': 1, '5': 14, '6': '.kuksa.val.v1.EntryType', '10': 'entryType'},
+ const {'1': 'description', '3': 13, '4': 1, '5': 9, '9': 1, '10': 'description', '17': true},
+ const {'1': 'comment', '3': 14, '4': 1, '5': 9, '9': 2, '10': 'comment', '17': true},
+ const {'1': 'deprecation', '3': 15, '4': 1, '5': 9, '9': 3, '10': 'deprecation', '17': true},
+ const {'1': 'unit', '3': 16, '4': 1, '5': 9, '9': 4, '10': 'unit', '17': true},
+ const {'1': 'value_restriction', '3': 17, '4': 1, '5': 11, '6': '.kuksa.val.v1.ValueRestriction', '10': 'valueRestriction'},
+ const {'1': 'actuator', '3': 20, '4': 1, '5': 11, '6': '.kuksa.val.v1.Actuator', '9': 0, '10': 'actuator'},
+ const {'1': 'sensor', '3': 30, '4': 1, '5': 11, '6': '.kuksa.val.v1.Sensor', '9': 0, '10': 'sensor'},
+ const {'1': 'attribute', '3': 40, '4': 1, '5': 11, '6': '.kuksa.val.v1.Attribute', '9': 0, '10': 'attribute'},
+ ],
+ '8': const [
+ const {'1': 'entry_specific'},
+ const {'1': '_description'},
+ const {'1': '_comment'},
+ const {'1': '_deprecation'},
+ const {'1': '_unit'},
+ ],
+};
+
+/// Descriptor for `Metadata`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List metadataDescriptor = $convert.base64Decode('CghNZXRhZGF0YRIzCglkYXRhX3R5cGUYCyABKA4yFi5rdWtzYS52YWwudjEuRGF0YVR5cGVSCGRhdGFUeXBlEjYKCmVudHJ5X3R5cGUYDCABKA4yFy5rdWtzYS52YWwudjEuRW50cnlUeXBlUgllbnRyeVR5cGUSJQoLZGVzY3JpcHRpb24YDSABKAlIAVILZGVzY3JpcHRpb26IAQESHQoHY29tbWVudBgOIAEoCUgCUgdjb21tZW50iAEBEiUKC2RlcHJlY2F0aW9uGA8gASgJSANSC2RlcHJlY2F0aW9uiAEBEhcKBHVuaXQYECABKAlIBFIEdW5pdIgBARJLChF2YWx1ZV9yZXN0cmljdGlvbhgRIAEoCzIeLmt1a3NhLnZhbC52MS5WYWx1ZVJlc3RyaWN0aW9uUhB2YWx1ZVJlc3RyaWN0aW9uEjQKCGFjdHVhdG9yGBQgASgLMhYua3Vrc2EudmFsLnYxLkFjdHVhdG9ySABSCGFjdHVhdG9yEi4KBnNlbnNvchgeIAEoCzIULmt1a3NhLnZhbC52MS5TZW5zb3JIAFIGc2Vuc29yEjcKCWF0dHJpYnV0ZRgoIAEoCzIXLmt1a3NhLnZhbC52MS5BdHRyaWJ1dGVIAFIJYXR0cmlidXRlQhAKDmVudHJ5X3NwZWNpZmljQg4KDF9kZXNjcmlwdGlvbkIKCghfY29tbWVudEIOCgxfZGVwcmVjYXRpb25CBwoFX3VuaXQ=');
+@$core.Deprecated('Use actuatorDescriptor instead')
+const Actuator$json = const {
+ '1': 'Actuator',
+};
+
+/// Descriptor for `Actuator`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List actuatorDescriptor = $convert.base64Decode('CghBY3R1YXRvcg==');
+@$core.Deprecated('Use sensorDescriptor instead')
+const Sensor$json = const {
+ '1': 'Sensor',
+};
+
+/// Descriptor for `Sensor`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List sensorDescriptor = $convert.base64Decode('CgZTZW5zb3I=');
+@$core.Deprecated('Use attributeDescriptor instead')
+const Attribute$json = const {
+ '1': 'Attribute',
+};
+
+/// Descriptor for `Attribute`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List attributeDescriptor = $convert.base64Decode('CglBdHRyaWJ1dGU=');
+@$core.Deprecated('Use valueRestrictionDescriptor instead')
+const ValueRestriction$json = const {
+ '1': 'ValueRestriction',
+ '2': const [
+ const {'1': 'string', '3': 21, '4': 1, '5': 11, '6': '.kuksa.val.v1.ValueRestrictionString', '9': 0, '10': 'string'},
+ const {'1': 'signed', '3': 22, '4': 1, '5': 11, '6': '.kuksa.val.v1.ValueRestrictionInt', '9': 0, '10': 'signed'},
+ const {'1': 'unsigned', '3': 23, '4': 1, '5': 11, '6': '.kuksa.val.v1.ValueRestrictionUint', '9': 0, '10': 'unsigned'},
+ const {'1': 'floating_point', '3': 24, '4': 1, '5': 11, '6': '.kuksa.val.v1.ValueRestrictionFloat', '9': 0, '10': 'floatingPoint'},
+ ],
+ '8': const [
+ const {'1': 'type'},
+ ],
+};
+
+/// Descriptor for `ValueRestriction`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List valueRestrictionDescriptor = $convert.base64Decode('ChBWYWx1ZVJlc3RyaWN0aW9uEj4KBnN0cmluZxgVIAEoCzIkLmt1a3NhLnZhbC52MS5WYWx1ZVJlc3RyaWN0aW9uU3RyaW5nSABSBnN0cmluZxI7CgZzaWduZWQYFiABKAsyIS5rdWtzYS52YWwudjEuVmFsdWVSZXN0cmljdGlvbkludEgAUgZzaWduZWQSQAoIdW5zaWduZWQYFyABKAsyIi5rdWtzYS52YWwudjEuVmFsdWVSZXN0cmljdGlvblVpbnRIAFIIdW5zaWduZWQSTAoOZmxvYXRpbmdfcG9pbnQYGCABKAsyIy5rdWtzYS52YWwudjEuVmFsdWVSZXN0cmljdGlvbkZsb2F0SABSDWZsb2F0aW5nUG9pbnRCBgoEdHlwZQ==');
+@$core.Deprecated('Use valueRestrictionIntDescriptor instead')
+const ValueRestrictionInt$json = const {
+ '1': 'ValueRestrictionInt',
+ '2': const [
+ const {'1': 'min', '3': 1, '4': 1, '5': 18, '9': 0, '10': 'min', '17': true},
+ const {'1': 'max', '3': 2, '4': 1, '5': 18, '9': 1, '10': 'max', '17': true},
+ const {'1': 'allowed_values', '3': 3, '4': 3, '5': 18, '10': 'allowedValues'},
+ ],
+ '8': const [
+ const {'1': '_min'},
+ const {'1': '_max'},
+ ],
+};
+
+/// Descriptor for `ValueRestrictionInt`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List valueRestrictionIntDescriptor = $convert.base64Decode('ChNWYWx1ZVJlc3RyaWN0aW9uSW50EhUKA21pbhgBIAEoEkgAUgNtaW6IAQESFQoDbWF4GAIgASgSSAFSA21heIgBARIlCg5hbGxvd2VkX3ZhbHVlcxgDIAMoElINYWxsb3dlZFZhbHVlc0IGCgRfbWluQgYKBF9tYXg=');
+@$core.Deprecated('Use valueRestrictionUintDescriptor instead')
+const ValueRestrictionUint$json = const {
+ '1': 'ValueRestrictionUint',
+ '2': const [
+ const {'1': 'min', '3': 1, '4': 1, '5': 4, '9': 0, '10': 'min', '17': true},
+ const {'1': 'max', '3': 2, '4': 1, '5': 4, '9': 1, '10': 'max', '17': true},
+ const {'1': 'allowed_values', '3': 3, '4': 3, '5': 4, '10': 'allowedValues'},
+ ],
+ '8': const [
+ const {'1': '_min'},
+ const {'1': '_max'},
+ ],
+};
+
+/// Descriptor for `ValueRestrictionUint`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List valueRestrictionUintDescriptor = $convert.base64Decode('ChRWYWx1ZVJlc3RyaWN0aW9uVWludBIVCgNtaW4YASABKARIAFIDbWluiAEBEhUKA21heBgCIAEoBEgBUgNtYXiIAQESJQoOYWxsb3dlZF92YWx1ZXMYAyADKARSDWFsbG93ZWRWYWx1ZXNCBgoEX21pbkIGCgRfbWF4');
+@$core.Deprecated('Use valueRestrictionFloatDescriptor instead')
+const ValueRestrictionFloat$json = const {
+ '1': 'ValueRestrictionFloat',
+ '2': const [
+ const {'1': 'min', '3': 1, '4': 1, '5': 1, '9': 0, '10': 'min', '17': true},
+ const {'1': 'max', '3': 2, '4': 1, '5': 1, '9': 1, '10': 'max', '17': true},
+ const {'1': 'allowed_values', '3': 3, '4': 3, '5': 1, '10': 'allowedValues'},
+ ],
+ '8': const [
+ const {'1': '_min'},
+ const {'1': '_max'},
+ ],
+};
+
+/// Descriptor for `ValueRestrictionFloat`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List valueRestrictionFloatDescriptor = $convert.base64Decode('ChVWYWx1ZVJlc3RyaWN0aW9uRmxvYXQSFQoDbWluGAEgASgBSABSA21pbogBARIVCgNtYXgYAiABKAFIAVIDbWF4iAEBEiUKDmFsbG93ZWRfdmFsdWVzGAMgAygBUg1hbGxvd2VkVmFsdWVzQgYKBF9taW5CBgoEX21heA==');
+@$core.Deprecated('Use valueRestrictionStringDescriptor instead')
+const ValueRestrictionString$json = const {
+ '1': 'ValueRestrictionString',
+ '2': const [
+ const {'1': 'allowed_values', '3': 3, '4': 3, '5': 9, '10': 'allowedValues'},
+ ],
+};
+
+/// Descriptor for `ValueRestrictionString`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List valueRestrictionStringDescriptor = $convert.base64Decode('ChZWYWx1ZVJlc3RyaWN0aW9uU3RyaW5nEiUKDmFsbG93ZWRfdmFsdWVzGAMgAygJUg1hbGxvd2VkVmFsdWVz');
+@$core.Deprecated('Use errorDescriptor instead')
+const Error$json = const {
+ '1': 'Error',
+ '2': const [
+ const {'1': 'code', '3': 1, '4': 1, '5': 13, '10': 'code'},
+ const {'1': 'reason', '3': 2, '4': 1, '5': 9, '10': 'reason'},
+ const {'1': 'message', '3': 3, '4': 1, '5': 9, '10': 'message'},
+ ],
+};
+
+/// Descriptor for `Error`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List errorDescriptor = $convert.base64Decode('CgVFcnJvchISCgRjb2RlGAEgASgNUgRjb2RlEhYKBnJlYXNvbhgCIAEoCVIGcmVhc29uEhgKB21lc3NhZ2UYAyABKAlSB21lc3NhZ2U=');
+@$core.Deprecated('Use dataEntryErrorDescriptor instead')
+const DataEntryError$json = const {
+ '1': 'DataEntryError',
+ '2': const [
+ const {'1': 'path', '3': 1, '4': 1, '5': 9, '10': 'path'},
+ const {'1': 'error', '3': 2, '4': 1, '5': 11, '6': '.kuksa.val.v1.Error', '10': 'error'},
+ ],
+};
+
+/// Descriptor for `DataEntryError`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List dataEntryErrorDescriptor = $convert.base64Decode('Cg5EYXRhRW50cnlFcnJvchISCgRwYXRoGAEgASgJUgRwYXRoEikKBWVycm9yGAIgASgLMhMua3Vrc2EudmFsLnYxLkVycm9yUgVlcnJvcg==');
+@$core.Deprecated('Use stringArrayDescriptor instead')
+const StringArray$json = const {
+ '1': 'StringArray',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 9, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `StringArray`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List stringArrayDescriptor = $convert.base64Decode('CgtTdHJpbmdBcnJheRIWCgZ2YWx1ZXMYASADKAlSBnZhbHVlcw==');
+@$core.Deprecated('Use boolArrayDescriptor instead')
+const BoolArray$json = const {
+ '1': 'BoolArray',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 8, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `BoolArray`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List boolArrayDescriptor = $convert.base64Decode('CglCb29sQXJyYXkSFgoGdmFsdWVzGAEgAygIUgZ2YWx1ZXM=');
+@$core.Deprecated('Use int32ArrayDescriptor instead')
+const Int32Array$json = const {
+ '1': 'Int32Array',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 17, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `Int32Array`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List int32ArrayDescriptor = $convert.base64Decode('CgpJbnQzMkFycmF5EhYKBnZhbHVlcxgBIAMoEVIGdmFsdWVz');
+@$core.Deprecated('Use int64ArrayDescriptor instead')
+const Int64Array$json = const {
+ '1': 'Int64Array',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 18, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `Int64Array`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List int64ArrayDescriptor = $convert.base64Decode('CgpJbnQ2NEFycmF5EhYKBnZhbHVlcxgBIAMoElIGdmFsdWVz');
+@$core.Deprecated('Use uint32ArrayDescriptor instead')
+const Uint32Array$json = const {
+ '1': 'Uint32Array',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 13, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `Uint32Array`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List uint32ArrayDescriptor = $convert.base64Decode('CgtVaW50MzJBcnJheRIWCgZ2YWx1ZXMYASADKA1SBnZhbHVlcw==');
+@$core.Deprecated('Use uint64ArrayDescriptor instead')
+const Uint64Array$json = const {
+ '1': 'Uint64Array',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 4, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `Uint64Array`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List uint64ArrayDescriptor = $convert.base64Decode('CgtVaW50NjRBcnJheRIWCgZ2YWx1ZXMYASADKARSBnZhbHVlcw==');
+@$core.Deprecated('Use floatArrayDescriptor instead')
+const FloatArray$json = const {
+ '1': 'FloatArray',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 2, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `FloatArray`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List floatArrayDescriptor = $convert.base64Decode('CgpGbG9hdEFycmF5EhYKBnZhbHVlcxgBIAMoAlIGdmFsdWVz');
+@$core.Deprecated('Use doubleArrayDescriptor instead')
+const DoubleArray$json = const {
+ '1': 'DoubleArray',
+ '2': const [
+ const {'1': 'values', '3': 1, '4': 3, '5': 1, '10': 'values'},
+ ],
+};
+
+/// Descriptor for `DoubleArray`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List doubleArrayDescriptor = $convert.base64Decode('CgtEb3VibGVBcnJheRIWCgZ2YWx1ZXMYASADKAFSBnZhbHVlcw==');
diff --git a/lib/generated/kuksa/val/v1/val.pb.dart b/lib/generated/kuksa/val/v1/val.pb.dart
new file mode 100644
index 0000000..761fba0
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/val.pb.dart
@@ -0,0 +1,586 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/val.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+
+import 'package:protobuf/protobuf.dart' as $pb;
+
+import 'types.pb.dart' as $1;
+
+import 'types.pbenum.dart' as $1;
+
+class EntryRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'EntryRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'path')
+ ..e<$1.View>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'view', $pb.PbFieldType.OE, defaultOrMaker: $1.View.VIEW_UNSPECIFIED, valueOf: $1.View.valueOf, enumValues: $1.View.values)
+ ..pc<$1.Field>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fields', $pb.PbFieldType.KE, valueOf: $1.Field.valueOf, enumValues: $1.Field.values, defaultEnumValue: $1.Field.FIELD_UNSPECIFIED)
+ ..hasRequiredFields = false
+ ;
+
+ EntryRequest._() : super();
+ factory EntryRequest({
+ $core.String? path,
+ $1.View? view,
+ $core.Iterable<$1.Field>? fields,
+ }) {
+ final _result = create();
+ if (path != null) {
+ _result.path = path;
+ }
+ if (view != null) {
+ _result.view = view;
+ }
+ if (fields != null) {
+ _result.fields.addAll(fields);
+ }
+ return _result;
+ }
+ factory EntryRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory EntryRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ EntryRequest clone() => EntryRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ EntryRequest copyWith(void Function(EntryRequest) updates) => super.copyWith((message) => updates(message as EntryRequest)) as EntryRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static EntryRequest create() => EntryRequest._();
+ EntryRequest createEmptyInstance() => create();
+ static $pb.PbList<EntryRequest> createRepeated() => $pb.PbList<EntryRequest>();
+ @$core.pragma('dart2js:noInline')
+ static EntryRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<EntryRequest>(create);
+ static EntryRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get path => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set path($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasPath() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPath() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $1.View get view => $_getN(1);
+ @$pb.TagNumber(2)
+ set view($1.View v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasView() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearView() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$1.Field> get fields => $_getList(2);
+}
+
+class GetRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pc<EntryRequest>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'entries', $pb.PbFieldType.PM, subBuilder: EntryRequest.create)
+ ..hasRequiredFields = false
+ ;
+
+ GetRequest._() : super();
+ factory GetRequest({
+ $core.Iterable<EntryRequest>? entries,
+ }) {
+ final _result = create();
+ if (entries != null) {
+ _result.entries.addAll(entries);
+ }
+ return _result;
+ }
+ factory GetRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory GetRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetRequest clone() => GetRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetRequest copyWith(void Function(GetRequest) updates) => super.copyWith((message) => updates(message as GetRequest)) as GetRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetRequest create() => GetRequest._();
+ GetRequest createEmptyInstance() => create();
+ static $pb.PbList<GetRequest> createRepeated() => $pb.PbList<GetRequest>();
+ @$core.pragma('dart2js:noInline')
+ static GetRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<GetRequest>(create);
+ static GetRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<EntryRequest> get entries => $_getList(0);
+}
+
+class GetResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pc<$1.DataEntry>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'entries', $pb.PbFieldType.PM, subBuilder: $1.DataEntry.create)
+ ..pc<$1.DataEntryError>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'errors', $pb.PbFieldType.PM, subBuilder: $1.DataEntryError.create)
+ ..aOM<$1.Error>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'error', subBuilder: $1.Error.create)
+ ..hasRequiredFields = false
+ ;
+
+ GetResponse._() : super();
+ factory GetResponse({
+ $core.Iterable<$1.DataEntry>? entries,
+ $core.Iterable<$1.DataEntryError>? errors,
+ $1.Error? error,
+ }) {
+ final _result = create();
+ if (entries != null) {
+ _result.entries.addAll(entries);
+ }
+ if (errors != null) {
+ _result.errors.addAll(errors);
+ }
+ if (error != null) {
+ _result.error = error;
+ }
+ return _result;
+ }
+ factory GetResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory GetResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetResponse clone() => GetResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetResponse copyWith(void Function(GetResponse) updates) => super.copyWith((message) => updates(message as GetResponse)) as GetResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetResponse create() => GetResponse._();
+ GetResponse createEmptyInstance() => create();
+ static $pb.PbList<GetResponse> createRepeated() => $pb.PbList<GetResponse>();
+ @$core.pragma('dart2js:noInline')
+ static GetResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<GetResponse>(create);
+ static GetResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<$1.DataEntry> get entries => $_getList(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$1.DataEntryError> get errors => $_getList(1);
+
+ @$pb.TagNumber(3)
+ $1.Error get error => $_getN(2);
+ @$pb.TagNumber(3)
+ set error($1.Error v) { setField(3, v); }
+ @$pb.TagNumber(3)
+ $core.bool hasError() => $_has(2);
+ @$pb.TagNumber(3)
+ void clearError() => clearField(3);
+ @$pb.TagNumber(3)
+ $1.Error ensureError() => $_ensure(2);
+}
+
+class EntryUpdate extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'EntryUpdate', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOM<$1.DataEntry>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'entry', subBuilder: $1.DataEntry.create)
+ ..pc<$1.Field>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fields', $pb.PbFieldType.KE, valueOf: $1.Field.valueOf, enumValues: $1.Field.values, defaultEnumValue: $1.Field.FIELD_UNSPECIFIED)
+ ..hasRequiredFields = false
+ ;
+
+ EntryUpdate._() : super();
+ factory EntryUpdate({
+ $1.DataEntry? entry,
+ $core.Iterable<$1.Field>? fields,
+ }) {
+ final _result = create();
+ if (entry != null) {
+ _result.entry = entry;
+ }
+ if (fields != null) {
+ _result.fields.addAll(fields);
+ }
+ return _result;
+ }
+ factory EntryUpdate.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory EntryUpdate.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ EntryUpdate clone() => EntryUpdate()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ EntryUpdate copyWith(void Function(EntryUpdate) updates) => super.copyWith((message) => updates(message as EntryUpdate)) as EntryUpdate; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static EntryUpdate create() => EntryUpdate._();
+ EntryUpdate createEmptyInstance() => create();
+ static $pb.PbList<EntryUpdate> createRepeated() => $pb.PbList<EntryUpdate>();
+ @$core.pragma('dart2js:noInline')
+ static EntryUpdate getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<EntryUpdate>(create);
+ static EntryUpdate? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $1.DataEntry get entry => $_getN(0);
+ @$pb.TagNumber(1)
+ set entry($1.DataEntry v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasEntry() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearEntry() => clearField(1);
+ @$pb.TagNumber(1)
+ $1.DataEntry ensureEntry() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$1.Field> get fields => $_getList(1);
+}
+
+class SetRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SetRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pc<EntryUpdate>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'updates', $pb.PbFieldType.PM, subBuilder: EntryUpdate.create)
+ ..hasRequiredFields = false
+ ;
+
+ SetRequest._() : super();
+ factory SetRequest({
+ $core.Iterable<EntryUpdate>? updates,
+ }) {
+ final _result = create();
+ if (updates != null) {
+ _result.updates.addAll(updates);
+ }
+ return _result;
+ }
+ factory SetRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SetRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SetRequest clone() => SetRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SetRequest copyWith(void Function(SetRequest) updates) => super.copyWith((message) => updates(message as SetRequest)) as SetRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SetRequest create() => SetRequest._();
+ SetRequest createEmptyInstance() => create();
+ static $pb.PbList<SetRequest> createRepeated() => $pb.PbList<SetRequest>();
+ @$core.pragma('dart2js:noInline')
+ static SetRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SetRequest>(create);
+ static SetRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<EntryUpdate> get updates => $_getList(0);
+}
+
+class SetResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SetResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOM<$1.Error>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'error', subBuilder: $1.Error.create)
+ ..pc<$1.DataEntryError>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'errors', $pb.PbFieldType.PM, subBuilder: $1.DataEntryError.create)
+ ..hasRequiredFields = false
+ ;
+
+ SetResponse._() : super();
+ factory SetResponse({
+ $1.Error? error,
+ $core.Iterable<$1.DataEntryError>? errors,
+ }) {
+ final _result = create();
+ if (error != null) {
+ _result.error = error;
+ }
+ if (errors != null) {
+ _result.errors.addAll(errors);
+ }
+ return _result;
+ }
+ factory SetResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SetResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SetResponse clone() => SetResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SetResponse copyWith(void Function(SetResponse) updates) => super.copyWith((message) => updates(message as SetResponse)) as SetResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SetResponse create() => SetResponse._();
+ SetResponse createEmptyInstance() => create();
+ static $pb.PbList<SetResponse> createRepeated() => $pb.PbList<SetResponse>();
+ @$core.pragma('dart2js:noInline')
+ static SetResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SetResponse>(create);
+ static SetResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $1.Error get error => $_getN(0);
+ @$pb.TagNumber(1)
+ set error($1.Error v) { setField(1, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasError() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearError() => clearField(1);
+ @$pb.TagNumber(1)
+ $1.Error ensureError() => $_ensure(0);
+
+ @$pb.TagNumber(2)
+ $core.List<$1.DataEntryError> get errors => $_getList(1);
+}
+
+class SubscribeEntry extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SubscribeEntry', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'path')
+ ..e<$1.View>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'view', $pb.PbFieldType.OE, defaultOrMaker: $1.View.VIEW_UNSPECIFIED, valueOf: $1.View.valueOf, enumValues: $1.View.values)
+ ..pc<$1.Field>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'fields', $pb.PbFieldType.KE, valueOf: $1.Field.valueOf, enumValues: $1.Field.values, defaultEnumValue: $1.Field.FIELD_UNSPECIFIED)
+ ..hasRequiredFields = false
+ ;
+
+ SubscribeEntry._() : super();
+ factory SubscribeEntry({
+ $core.String? path,
+ $1.View? view,
+ $core.Iterable<$1.Field>? fields,
+ }) {
+ final _result = create();
+ if (path != null) {
+ _result.path = path;
+ }
+ if (view != null) {
+ _result.view = view;
+ }
+ if (fields != null) {
+ _result.fields.addAll(fields);
+ }
+ return _result;
+ }
+ factory SubscribeEntry.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SubscribeEntry.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SubscribeEntry clone() => SubscribeEntry()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SubscribeEntry copyWith(void Function(SubscribeEntry) updates) => super.copyWith((message) => updates(message as SubscribeEntry)) as SubscribeEntry; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SubscribeEntry create() => SubscribeEntry._();
+ SubscribeEntry createEmptyInstance() => create();
+ static $pb.PbList<SubscribeEntry> createRepeated() => $pb.PbList<SubscribeEntry>();
+ @$core.pragma('dart2js:noInline')
+ static SubscribeEntry getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SubscribeEntry>(create);
+ static SubscribeEntry? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get path => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set path($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasPath() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearPath() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $1.View get view => $_getN(1);
+ @$pb.TagNumber(2)
+ set view($1.View v) { setField(2, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasView() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearView() => clearField(2);
+
+ @$pb.TagNumber(3)
+ $core.List<$1.Field> get fields => $_getList(2);
+}
+
+class SubscribeRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SubscribeRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pc<SubscribeEntry>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'entries', $pb.PbFieldType.PM, subBuilder: SubscribeEntry.create)
+ ..hasRequiredFields = false
+ ;
+
+ SubscribeRequest._() : super();
+ factory SubscribeRequest({
+ $core.Iterable<SubscribeEntry>? entries,
+ }) {
+ final _result = create();
+ if (entries != null) {
+ _result.entries.addAll(entries);
+ }
+ return _result;
+ }
+ factory SubscribeRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SubscribeRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SubscribeRequest clone() => SubscribeRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SubscribeRequest copyWith(void Function(SubscribeRequest) updates) => super.copyWith((message) => updates(message as SubscribeRequest)) as SubscribeRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SubscribeRequest create() => SubscribeRequest._();
+ SubscribeRequest createEmptyInstance() => create();
+ static $pb.PbList<SubscribeRequest> createRepeated() => $pb.PbList<SubscribeRequest>();
+ @$core.pragma('dart2js:noInline')
+ static SubscribeRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SubscribeRequest>(create);
+ static SubscribeRequest? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<SubscribeEntry> get entries => $_getList(0);
+}
+
+class SubscribeResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'SubscribeResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..pc<EntryUpdate>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'updates', $pb.PbFieldType.PM, subBuilder: EntryUpdate.create)
+ ..hasRequiredFields = false
+ ;
+
+ SubscribeResponse._() : super();
+ factory SubscribeResponse({
+ $core.Iterable<EntryUpdate>? updates,
+ }) {
+ final _result = create();
+ if (updates != null) {
+ _result.updates.addAll(updates);
+ }
+ return _result;
+ }
+ factory SubscribeResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory SubscribeResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ SubscribeResponse clone() => SubscribeResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ SubscribeResponse copyWith(void Function(SubscribeResponse) updates) => super.copyWith((message) => updates(message as SubscribeResponse)) as SubscribeResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static SubscribeResponse create() => SubscribeResponse._();
+ SubscribeResponse createEmptyInstance() => create();
+ static $pb.PbList<SubscribeResponse> createRepeated() => $pb.PbList<SubscribeResponse>();
+ @$core.pragma('dart2js:noInline')
+ static SubscribeResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<SubscribeResponse>(create);
+ static SubscribeResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.List<EntryUpdate> get updates => $_getList(0);
+}
+
+class GetServerInfoRequest extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetServerInfoRequest', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..hasRequiredFields = false
+ ;
+
+ GetServerInfoRequest._() : super();
+ factory GetServerInfoRequest() => create();
+ factory GetServerInfoRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory GetServerInfoRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetServerInfoRequest clone() => GetServerInfoRequest()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetServerInfoRequest copyWith(void Function(GetServerInfoRequest) updates) => super.copyWith((message) => updates(message as GetServerInfoRequest)) as GetServerInfoRequest; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetServerInfoRequest create() => GetServerInfoRequest._();
+ GetServerInfoRequest createEmptyInstance() => create();
+ static $pb.PbList<GetServerInfoRequest> createRepeated() => $pb.PbList<GetServerInfoRequest>();
+ @$core.pragma('dart2js:noInline')
+ static GetServerInfoRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<GetServerInfoRequest>(create);
+ static GetServerInfoRequest? _defaultInstance;
+}
+
+class GetServerInfoResponse extends $pb.GeneratedMessage {
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GetServerInfoResponse', package: const $pb.PackageName(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'kuksa.val.v1'), createEmptyInstance: create)
+ ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name')
+ ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'version')
+ ..hasRequiredFields = false
+ ;
+
+ GetServerInfoResponse._() : super();
+ factory GetServerInfoResponse({
+ $core.String? name,
+ $core.String? version,
+ }) {
+ final _result = create();
+ if (name != null) {
+ _result.name = name;
+ }
+ if (version != null) {
+ _result.version = version;
+ }
+ return _result;
+ }
+ factory GetServerInfoResponse.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
+ factory GetServerInfoResponse.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ GetServerInfoResponse clone() => GetServerInfoResponse()..mergeFromMessage(this);
+ @$core.Deprecated(
+ 'Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ GetServerInfoResponse copyWith(void Function(GetServerInfoResponse) updates) => super.copyWith((message) => updates(message as GetServerInfoResponse)) as GetServerInfoResponse; // ignore: deprecated_member_use
+ $pb.BuilderInfo get info_ => _i;
+ @$core.pragma('dart2js:noInline')
+ static GetServerInfoResponse create() => GetServerInfoResponse._();
+ GetServerInfoResponse createEmptyInstance() => create();
+ static $pb.PbList<GetServerInfoResponse> createRepeated() => $pb.PbList<GetServerInfoResponse>();
+ @$core.pragma('dart2js:noInline')
+ static GetServerInfoResponse getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<GetServerInfoResponse>(create);
+ static GetServerInfoResponse? _defaultInstance;
+
+ @$pb.TagNumber(1)
+ $core.String get name => $_getSZ(0);
+ @$pb.TagNumber(1)
+ set name($core.String v) { $_setString(0, v); }
+ @$pb.TagNumber(1)
+ $core.bool hasName() => $_has(0);
+ @$pb.TagNumber(1)
+ void clearName() => clearField(1);
+
+ @$pb.TagNumber(2)
+ $core.String get version => $_getSZ(1);
+ @$pb.TagNumber(2)
+ set version($core.String v) { $_setString(1, v); }
+ @$pb.TagNumber(2)
+ $core.bool hasVersion() => $_has(1);
+ @$pb.TagNumber(2)
+ void clearVersion() => clearField(2);
+}
+
diff --git a/lib/generated/kuksa/val/v1/val.pbenum.dart b/lib/generated/kuksa/val/v1/val.pbenum.dart
new file mode 100644
index 0000000..0500def
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/val.pbenum.dart
@@ -0,0 +1,7 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/val.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
diff --git a/lib/generated/kuksa/val/v1/val.pbgrpc.dart b/lib/generated/kuksa/val/v1/val.pbgrpc.dart
new file mode 100644
index 0000000..3a9a3c8
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/val.pbgrpc.dart
@@ -0,0 +1,133 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/val.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:async' as $async;
+
+import 'dart:core' as $core;
+
+import 'package:grpc/service_api.dart' as $grpc;
+import 'val.pb.dart' as $0;
+export 'val.pb.dart';
+
+class VALClient extends $grpc.Client {
+ static final _$get = $grpc.ClientMethod<$0.GetRequest, $0.GetResponse>(
+ '/kuksa.val.v1.VAL/Get',
+ ($0.GetRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) => $0.GetResponse.fromBuffer(value));
+ static final _$set = $grpc.ClientMethod<$0.SetRequest, $0.SetResponse>(
+ '/kuksa.val.v1.VAL/Set',
+ ($0.SetRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) => $0.SetResponse.fromBuffer(value));
+ static final _$subscribe =
+ $grpc.ClientMethod<$0.SubscribeRequest, $0.SubscribeResponse>(
+ '/kuksa.val.v1.VAL/Subscribe',
+ ($0.SubscribeRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.SubscribeResponse.fromBuffer(value));
+ static final _$getServerInfo =
+ $grpc.ClientMethod<$0.GetServerInfoRequest, $0.GetServerInfoResponse>(
+ '/kuksa.val.v1.VAL/GetServerInfo',
+ ($0.GetServerInfoRequest value) => value.writeToBuffer(),
+ ($core.List<$core.int> value) =>
+ $0.GetServerInfoResponse.fromBuffer(value));
+
+ VALClient($grpc.ClientChannel channel,
+ {$grpc.CallOptions? options,
+ $core.Iterable<$grpc.ClientInterceptor>? interceptors})
+ : super(channel, options: options, interceptors: interceptors);
+
+ $grpc.ResponseFuture<$0.GetResponse> get($0.GetRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$get, request, options: options);
+ }
+
+ $grpc.ResponseFuture<$0.SetResponse> set($0.SetRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$set, request, options: options);
+ }
+
+ $grpc.ResponseStream<$0.SubscribeResponse> subscribe(
+ $0.SubscribeRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createStreamingCall(
+ _$subscribe, $async.Stream.fromIterable([request]),
+ options: options);
+ }
+
+ $grpc.ResponseFuture<$0.GetServerInfoResponse> getServerInfo(
+ $0.GetServerInfoRequest request,
+ {$grpc.CallOptions? options}) {
+ return $createUnaryCall(_$getServerInfo, request, options: options);
+ }
+}
+
+abstract class VALServiceBase extends $grpc.Service {
+ $core.String get $name => 'kuksa.val.v1.VAL';
+
+ VALServiceBase() {
+ $addMethod($grpc.ServiceMethod<$0.GetRequest, $0.GetResponse>(
+ 'Get',
+ get_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) => $0.GetRequest.fromBuffer(value),
+ ($0.GetResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.SetRequest, $0.SetResponse>(
+ 'Set',
+ set_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) => $0.SetRequest.fromBuffer(value),
+ ($0.SetResponse value) => value.writeToBuffer()));
+ $addMethod($grpc.ServiceMethod<$0.SubscribeRequest, $0.SubscribeResponse>(
+ 'Subscribe',
+ subscribe_Pre,
+ false,
+ true,
+ ($core.List<$core.int> value) => $0.SubscribeRequest.fromBuffer(value),
+ ($0.SubscribeResponse value) => value.writeToBuffer()));
+ $addMethod(
+ $grpc.ServiceMethod<$0.GetServerInfoRequest, $0.GetServerInfoResponse>(
+ 'GetServerInfo',
+ getServerInfo_Pre,
+ false,
+ false,
+ ($core.List<$core.int> value) =>
+ $0.GetServerInfoRequest.fromBuffer(value),
+ ($0.GetServerInfoResponse value) => value.writeToBuffer()));
+ }
+
+ $async.Future<$0.GetResponse> get_Pre(
+ $grpc.ServiceCall call, $async.Future<$0.GetRequest> request) async {
+ return get(call, await request);
+ }
+
+ $async.Future<$0.SetResponse> set_Pre(
+ $grpc.ServiceCall call, $async.Future<$0.SetRequest> request) async {
+ return set(call, await request);
+ }
+
+ $async.Stream<$0.SubscribeResponse> subscribe_Pre($grpc.ServiceCall call,
+ $async.Future<$0.SubscribeRequest> request) async* {
+ yield* subscribe(call, await request);
+ }
+
+ $async.Future<$0.GetServerInfoResponse> getServerInfo_Pre(
+ $grpc.ServiceCall call,
+ $async.Future<$0.GetServerInfoRequest> request) async {
+ return getServerInfo(call, await request);
+ }
+
+ $async.Future<$0.GetResponse> get(
+ $grpc.ServiceCall call, $0.GetRequest request);
+ $async.Future<$0.SetResponse> set(
+ $grpc.ServiceCall call, $0.SetRequest request);
+ $async.Stream<$0.SubscribeResponse> subscribe(
+ $grpc.ServiceCall call, $0.SubscribeRequest request);
+ $async.Future<$0.GetServerInfoResponse> getServerInfo(
+ $grpc.ServiceCall call, $0.GetServerInfoRequest request);
+}
diff --git a/lib/generated/kuksa/val/v1/val.pbjson.dart b/lib/generated/kuksa/val/v1/val.pbjson.dart
new file mode 100644
index 0000000..e6c035c
--- /dev/null
+++ b/lib/generated/kuksa/val/v1/val.pbjson.dart
@@ -0,0 +1,126 @@
+///
+// Generated code. Do not modify.
+// source: kuksa/val/v1/val.proto
+//
+// @dart = 2.12
+// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
+
+import 'dart:core' as $core;
+import 'dart:convert' as $convert;
+import 'dart:typed_data' as $typed_data;
+@$core.Deprecated('Use entryRequestDescriptor instead')
+const EntryRequest$json = const {
+ '1': 'EntryRequest',
+ '2': const [
+ const {'1': 'path', '3': 1, '4': 1, '5': 9, '10': 'path'},
+ const {'1': 'view', '3': 2, '4': 1, '5': 14, '6': '.kuksa.val.v1.View', '10': 'view'},
+ const {'1': 'fields', '3': 3, '4': 3, '5': 14, '6': '.kuksa.val.v1.Field', '10': 'fields'},
+ ],
+};
+
+/// Descriptor for `EntryRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List entryRequestDescriptor = $convert.base64Decode('CgxFbnRyeVJlcXVlc3QSEgoEcGF0aBgBIAEoCVIEcGF0aBImCgR2aWV3GAIgASgOMhIua3Vrc2EudmFsLnYxLlZpZXdSBHZpZXcSKwoGZmllbGRzGAMgAygOMhMua3Vrc2EudmFsLnYxLkZpZWxkUgZmaWVsZHM=');
+@$core.Deprecated('Use getRequestDescriptor instead')
+const GetRequest$json = const {
+ '1': 'GetRequest',
+ '2': const [
+ const {'1': 'entries', '3': 1, '4': 3, '5': 11, '6': '.kuksa.val.v1.EntryRequest', '10': 'entries'},
+ ],
+};
+
+/// Descriptor for `GetRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getRequestDescriptor = $convert.base64Decode('CgpHZXRSZXF1ZXN0EjQKB2VudHJpZXMYASADKAsyGi5rdWtzYS52YWwudjEuRW50cnlSZXF1ZXN0UgdlbnRyaWVz');
+@$core.Deprecated('Use getResponseDescriptor instead')
+const GetResponse$json = const {
+ '1': 'GetResponse',
+ '2': const [
+ const {'1': 'entries', '3': 1, '4': 3, '5': 11, '6': '.kuksa.val.v1.DataEntry', '10': 'entries'},
+ const {'1': 'errors', '3': 2, '4': 3, '5': 11, '6': '.kuksa.val.v1.DataEntryError', '10': 'errors'},
+ const {'1': 'error', '3': 3, '4': 1, '5': 11, '6': '.kuksa.val.v1.Error', '10': 'error'},
+ ],
+};
+
+/// Descriptor for `GetResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getResponseDescriptor = $convert.base64Decode('CgtHZXRSZXNwb25zZRIxCgdlbnRyaWVzGAEgAygLMhcua3Vrc2EudmFsLnYxLkRhdGFFbnRyeVIHZW50cmllcxI0CgZlcnJvcnMYAiADKAsyHC5rdWtzYS52YWwudjEuRGF0YUVudHJ5RXJyb3JSBmVycm9ycxIpCgVlcnJvchgDIAEoCzITLmt1a3NhLnZhbC52MS5FcnJvclIFZXJyb3I=');
+@$core.Deprecated('Use entryUpdateDescriptor instead')
+const EntryUpdate$json = const {
+ '1': 'EntryUpdate',
+ '2': const [
+ const {'1': 'entry', '3': 1, '4': 1, '5': 11, '6': '.kuksa.val.v1.DataEntry', '10': 'entry'},
+ const {'1': 'fields', '3': 2, '4': 3, '5': 14, '6': '.kuksa.val.v1.Field', '10': 'fields'},
+ ],
+};
+
+/// Descriptor for `EntryUpdate`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List entryUpdateDescriptor = $convert.base64Decode('CgtFbnRyeVVwZGF0ZRItCgVlbnRyeRgBIAEoCzIXLmt1a3NhLnZhbC52MS5EYXRhRW50cnlSBWVudHJ5EisKBmZpZWxkcxgCIAMoDjITLmt1a3NhLnZhbC52MS5GaWVsZFIGZmllbGRz');
+@$core.Deprecated('Use setRequestDescriptor instead')
+const SetRequest$json = const {
+ '1': 'SetRequest',
+ '2': const [
+ const {'1': 'updates', '3': 1, '4': 3, '5': 11, '6': '.kuksa.val.v1.EntryUpdate', '10': 'updates'},
+ ],
+};
+
+/// Descriptor for `SetRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List setRequestDescriptor = $convert.base64Decode('CgpTZXRSZXF1ZXN0EjMKB3VwZGF0ZXMYASADKAsyGS5rdWtzYS52YWwudjEuRW50cnlVcGRhdGVSB3VwZGF0ZXM=');
+@$core.Deprecated('Use setResponseDescriptor instead')
+const SetResponse$json = const {
+ '1': 'SetResponse',
+ '2': const [
+ const {'1': 'error', '3': 1, '4': 1, '5': 11, '6': '.kuksa.val.v1.Error', '10': 'error'},
+ const {'1': 'errors', '3': 2, '4': 3, '5': 11, '6': '.kuksa.val.v1.DataEntryError', '10': 'errors'},
+ ],
+};
+
+/// Descriptor for `SetResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List setResponseDescriptor = $convert.base64Decode('CgtTZXRSZXNwb25zZRIpCgVlcnJvchgBIAEoCzITLmt1a3NhLnZhbC52MS5FcnJvclIFZXJyb3ISNAoGZXJyb3JzGAIgAygLMhwua3Vrc2EudmFsLnYxLkRhdGFFbnRyeUVycm9yUgZlcnJvcnM=');
+@$core.Deprecated('Use subscribeEntryDescriptor instead')
+const SubscribeEntry$json = const {
+ '1': 'SubscribeEntry',
+ '2': const [
+ const {'1': 'path', '3': 1, '4': 1, '5': 9, '10': 'path'},
+ const {'1': 'view', '3': 2, '4': 1, '5': 14, '6': '.kuksa.val.v1.View', '10': 'view'},
+ const {'1': 'fields', '3': 3, '4': 3, '5': 14, '6': '.kuksa.val.v1.Field', '10': 'fields'},
+ ],
+};
+
+/// Descriptor for `SubscribeEntry`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List subscribeEntryDescriptor = $convert.base64Decode('Cg5TdWJzY3JpYmVFbnRyeRISCgRwYXRoGAEgASgJUgRwYXRoEiYKBHZpZXcYAiABKA4yEi5rdWtzYS52YWwudjEuVmlld1IEdmlldxIrCgZmaWVsZHMYAyADKA4yEy5rdWtzYS52YWwudjEuRmllbGRSBmZpZWxkcw==');
+@$core.Deprecated('Use subscribeRequestDescriptor instead')
+const SubscribeRequest$json = const {
+ '1': 'SubscribeRequest',
+ '2': const [
+ const {'1': 'entries', '3': 1, '4': 3, '5': 11, '6': '.kuksa.val.v1.SubscribeEntry', '10': 'entries'},
+ ],
+};
+
+/// Descriptor for `SubscribeRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List subscribeRequestDescriptor = $convert.base64Decode('ChBTdWJzY3JpYmVSZXF1ZXN0EjYKB2VudHJpZXMYASADKAsyHC5rdWtzYS52YWwudjEuU3Vic2NyaWJlRW50cnlSB2VudHJpZXM=');
+@$core.Deprecated('Use subscribeResponseDescriptor instead')
+const SubscribeResponse$json = const {
+ '1': 'SubscribeResponse',
+ '2': const [
+ const {'1': 'updates', '3': 1, '4': 3, '5': 11, '6': '.kuksa.val.v1.EntryUpdate', '10': 'updates'},
+ ],
+};
+
+/// Descriptor for `SubscribeResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List subscribeResponseDescriptor = $convert.base64Decode('ChFTdWJzY3JpYmVSZXNwb25zZRIzCgd1cGRhdGVzGAEgAygLMhkua3Vrc2EudmFsLnYxLkVudHJ5VXBkYXRlUgd1cGRhdGVz');
+@$core.Deprecated('Use getServerInfoRequestDescriptor instead')
+const GetServerInfoRequest$json = const {
+ '1': 'GetServerInfoRequest',
+};
+
+/// Descriptor for `GetServerInfoRequest`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getServerInfoRequestDescriptor = $convert.base64Decode('ChRHZXRTZXJ2ZXJJbmZvUmVxdWVzdA==');
+@$core.Deprecated('Use getServerInfoResponseDescriptor instead')
+const GetServerInfoResponse$json = const {
+ '1': 'GetServerInfoResponse',
+ '2': const [
+ const {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'},
+ const {'1': 'version', '3': 2, '4': 1, '5': 9, '10': 'version'},
+ ],
+};
+
+/// Descriptor for `GetServerInfoResponse`. Decode as a `google.protobuf.DescriptorProto`.
+final $typed_data.Uint8List getServerInfoResponseDescriptor = $convert.base64Decode('ChVHZXRTZXJ2ZXJJbmZvUmVzcG9uc2USEgoEbmFtZRgBIAEoCVIEbmFtZRIYCgd2ZXJzaW9uGAIgASgJUgd2ZXJzaW9u');
diff --git a/lib/home_page.dart b/lib/home_page.dart
index 7b91129..e07a507 100644
--- a/lib/home_page.dart
+++ b/lib/home_page.dart
@@ -3,6 +3,9 @@
import 'dart:io';
import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_client.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
import 'package:flutter_hvac/Buttons/fresh_air.dart';
import 'package:flutter_svg_provider/flutter_svg_provider.dart';
import 'package:flutter_hvac/Buttons/AC.dart';
@@ -16,9 +19,22 @@ import 'widgets/left_climate.dart';
import 'widgets/right_climate.dart';
import 'widgets/slider.dart';
-class HomePage extends StatelessWidget {
- final WebSocket socket;
- HomePage({Key? key, required this.socket}) : super(key: key);
+class HomePage extends ConsumerStatefulWidget {
+ const HomePage({Key? key}) : super(key: key);
+
+ @override
+ _HomePageState createState() => _HomePageState();
+}
+
+class _HomePageState extends ConsumerState<HomePage> {
+ late VssClient vss;
+
+ initState() {
+ vss = ref.read(vssClientProvider);
+ vss.run();
+
+ super.initState();
+ }
@override
Widget build(BuildContext context) {
@@ -52,10 +68,10 @@ class HomePage extends StatelessWidget {
),
),
SizedBox(
- height: SizeConfig.screenHeight / 10,
- width: SizeConfig.screenWidth / 10,
- child: Image.asset('images/left_climate.PNG')),
- LeftClimateScrollWidget(socket: socket),
+ height: SizeConfig.screenHeight / 10,
+ width: SizeConfig.screenWidth / 10,
+ child: Image.asset('images/left_climate.PNG')),
+ LeftClimateScrollWidget(),
],
),
Column(
@@ -69,10 +85,10 @@ class HomePage extends StatelessWidget {
),
),
SizedBox(
- height: SizeConfig.screenHeight / 10,
- width: SizeConfig.screenWidth / 10,
- child: Image.asset('images/right_climate.PNG')),
- RightClimateScrollWidget(socket: socket),
+ height: SizeConfig.screenHeight / 10,
+ width: SizeConfig.screenWidth / 10,
+ child: Image.asset('images/right_climate.PNG')),
+ RightClimateScrollWidget(),
],
),
],
@@ -91,9 +107,7 @@ class HomePage extends StatelessWidget {
image: Svg('images/fan.svg'),
color: Colors.lightBlueAccent,
fit: BoxFit.fitWidth)),
- SliderControl(
- socket: socket,
- ),
+ SliderControl(),
],
)),
Flexible(
@@ -103,64 +117,43 @@ class HomePage extends StatelessWidget {
children: [
Column(
children: [
- AC(
- socket: socket,
- serverPath:
- 'Vehicle.Cabin.HVAC.IsAirConditioningActive'),
+ AC(),
SizedBox(
height: SizeConfig.safeBlockVertical,
),
- AcOnFoot(
- img: 'images/ac_on_foot.svg',
- socket: socket,
- ),
+ AcOnFoot(img: 'images/ac_on_foot.svg'),
SizedBox(
height: SizeConfig.safeBlockVertical,
),
- AcOnFace(
- img: 'images/ac_on_face.svg',
- socket: socket,
- ),
+ AcOnFace(img: 'images/ac_on_face.svg'),
],
),
Row(
children: [
- Auto(serverPath: '', socket: socket),
+ Auto(),
SizedBox(
width: SizeConfig.safeBlockHorizontal,
),
- FreshAir(
- serverPath: '',
- socket: socket,
- img: 'images/wind_in.svg'),
+ FreshAir(img: 'images/wind_in.svg'),
],
),
Column(
children: [
CustomButton(
- serverPath:
- 'Vehicle.Cabin.HVAC.IsRecirculationActive',
- socket: socket,
- img: 'images/in_out.svg',
- type: 'Recirculation'),
+ img: 'images/in_out.svg',
+ type: 'Recirculation'),
SizedBox(
height: SizeConfig.safeBlockVertical,
),
CustomButton(
- serverPath:
- 'Vehicle.Cabin.HVAC.IsRearDefrosterActive',
- socket: socket,
- img: 'images/rear_ws.svg',
- type: 'Rear_defrost'),
+ img: 'images/rear_ws.svg',
+ type: 'Rear_defrost'),
SizedBox(
height: SizeConfig.safeBlockVertical,
),
CustomButton(
- serverPath:
- 'Vehicle.Cabin.HVAC.IsFrontDefrosterActive',
- socket: socket,
- img: 'images/wind_shield.svg',
- type: 'Front_defrost'),
+ img: 'images/wind_shield.svg',
+ type: 'Front_defrost'),
],
),
],
diff --git a/lib/kuksa-server/intial_connection.dart b/lib/kuksa-server/intial_connection.dart
deleted file mode 100644
index 0ba4e9f..0000000
--- a/lib/kuksa-server/intial_connection.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-import 'dart:io';
-import 'package:flutter/material.dart';
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_config.dart';
-
-import 'on_boarding_page.dart';
-
-class InitialScreen extends ConsumerWidget {
- InitialScreen({Key? key, required this.client}) : super(key: key);
- final HttpClient client;
- late WebSocket socket;
-
- @override
- Widget build(BuildContext context, ref) {
- final sockConnect = ref.watch(sockConnectprovider(client));
-
- return sockConnect.when(
- data: (socket) {
- this.socket = socket;
- this.socket.pingInterval = const Duration(seconds: 2);
- return OnBoardingPage(client: client, socket: this.socket);
- },
- error: (e, stk) {
- print(e);
- ref.refresh(sockConnectprovider(client));
- return const Scaffold(
- backgroundColor: Colors.black,
- body: Center(
- child: Text(
- 'error',
- style: TextStyle(color: Colors.white),
- )),
- );
- },
- loading: () => const Scaffold(
- backgroundColor: Colors.black,
- body: Center(
- child: Text('loading', style: TextStyle(color: Colors.white))),
- ),
- );
- }
-}
diff --git a/lib/kuksa-server/on_boarding_page.dart b/lib/kuksa-server/on_boarding_page.dart
deleted file mode 100644
index 1bd3a79..0000000
--- a/lib/kuksa-server/on_boarding_page.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:flutter/material.dart';
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_config.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_methods.dart';
-
-import '../home_page.dart';
-
-class OnBoardingPage extends ConsumerStatefulWidget {
- const OnBoardingPage({Key? key, required this.client, required this.socket})
- : super(key: key);
- final WebSocket socket;
- final HttpClient client;
-
- @override
- ConsumerState<OnBoardingPage> createState() => _OnBoardingPageState();
-}
-
-class _OnBoardingPageState extends ConsumerState<OnBoardingPage> {
- late Timer _timer;
- late WebSocket _socket;
-
- @override
- void initState() {
- super.initState();
- _socket = widget.socket;
- VISS.init(widget.socket, ref);
- _timer = Timer.periodic(const Duration(seconds: 2), (timer) {
- if (widget.socket.readyState == 3) {
- ref.refresh(sockConnectprovider(widget.client));
- }
- });
- WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
- widget.socket.listen(
- (data) {},
- onError: (e, stk) {
- print(e.toString());
- ref.refresh(sockConnectprovider(widget.client));
- },
- );
- });
- }
-
- @override
- void dispose() {
- super.dispose();
- _timer.cancel();
- widget.socket.close(786887, "Connection lost with server!");
- }
-
- @override
- Widget build(BuildContext context) {
- return HomePage(
- socket: _socket,
- );
- }
-}
diff --git a/lib/kuksa-server/vehicle-provider.dart b/lib/kuksa-server/vehicle-provider.dart
deleted file mode 100644
index f070a53..0000000
--- a/lib/kuksa-server/vehicle-provider.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle-class.dart';
-
-final vehicleProvider = StateNotifierProvider<VehicleSignal, vehicle>(
- (ref) => VehicleSignal(),
-);
-
-class VehicleSignal extends StateNotifier<vehicle> {
- static vehicle intial_value = vehicle(
- isAcActive: false,
- isAcDirectionDown: false,
- isAcDirectionMiddle: false,
- isAcDirectionUp: false,
- isFrontDefrosterActive: false,
- isRearDefrosterActive: false,
- isRecirculationActive: false,
- isAutoActive: false,
- isFreshAirCirculateActive : false,
- );
- VehicleSignal() : super(intial_value);
-
- void update({
- bool? isAcActive,
- bool? isAcDirectionDown,
- bool? isAcDirectionUp,
- bool? isAcDirectionMiddle,
- bool? isFrontDefrosterActive,
- bool? isRearDefrosterActive,
- bool? isRecirculationActive,
- bool? isAutoActive,
- bool? isFreshAirCirculateActive,
- }) {
- state = state.copywith(
- isAcActive: isAcActive,
- isAcDirectionDown: isAcDirectionDown,
- isAcDirectionMiddle: isAcDirectionMiddle,
- isAcDirectionUp: isAcDirectionUp,
- isFrontDefrosterActive: isFrontDefrosterActive,
- isRearDefrosterActive: isRearDefrosterActive,
- isRecirculationActive: isRecirculationActive,
- isAutoActive : isAutoActive,
- isFreshAirCirculateActive : isFreshAirCirculateActive,
- );
- }
-}
diff --git a/lib/kuksa-server/vehicle_config.dart b/lib/kuksa-server/vehicle_config.dart
deleted file mode 100644
index 6eff800..0000000
--- a/lib/kuksa-server/vehicle_config.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-
-import 'dart:io';
-import 'package:flutter_hvac/config.dart';
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:http/http.dart' as http;
-
-
-
-final sockConnectprovider = FutureProvider.family<WebSocket, HttpClient>(
- (ref, client) => connect(client,ref));
-
-
-
-// load certificates and set context and returns http client
-Future<HttpClient> initializeClient() async {
-
-
- SecurityContext ctx = SecurityContext.defaultContext;
-
- HttpClient client = HttpClient(context: ctx)
- ..findProxy = null
- ..badCertificateCallback = (cert, host, port) {
- return true;
- };
- return client;
-}
-
-
-
-Future<WebSocket> connect(HttpClient client, ref) async {
- final config = ref.read(ConfigStateprovider);
- WebSocket socket = await WebSocket.connect(
- "wss://${config.hostname}:${config.port}",
- customClient: client);
- return socket;
-}
-
diff --git a/lib/kuksa-server/vehicle_methods.dart b/lib/kuksa-server/vehicle_methods.dart
deleted file mode 100644
index 387c02a..0000000
--- a/lib/kuksa-server/vehicle_methods.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:flutter_hvac/config.dart';
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/kuksa-server/vehicle_server_path.dart';
-
-class VISS {
- static const requestId = "test-id";
- static void init(WebSocket socket, WidgetRef ref) {
- authorize(socket, ref);
-
- subscribe(socket, ref, VSPath.vehicleInsideTemperature);
- subscribe(socket, ref, VSPath.vehicleAmbientAirTemperature);
- }
-
- static void update(WebSocket socket, WidgetRef ref) {
- get(socket, ref, VSPath.vehicleInsideTemperature);
- get(socket, ref, VSPath.vehicleAmbientAirTemperature);
- }
-
- static void authorize(WebSocket socket, WidgetRef ref) {
- final config = ref.read(ConfigStateprovider);
- Map<String, dynamic> map = {
- "action": "authorize",
- "tokens": config.kuksaAuthToken,
- "requestId": requestId
- };
- socket.add(jsonEncode(map));
- }
-
- static void get(WebSocket socket, WidgetRef ref, String path) {
- final config = ref.read(ConfigStateprovider);
-
- Map<String, dynamic> map = {
- "action": "get",
- "tokens": config.kuksaAuthToken,
- "path": path,
- "requestId": requestId
- };
- socket.add(jsonEncode(map));
- }
-
- static void set(
- WebSocket socket,
- WidgetRef ref,
- String path,
- String value,
- ) {
- final config = ref.read(ConfigStateprovider);
-
- Map<String, dynamic> map = {
- "action": "set",
- "tokens": config.kuksaAuthToken,
- "path": path,
- "requestId": requestId,
- "value": value
- };
- socket.add(jsonEncode(map));
- }
-
- static void subscribe(WebSocket socket, WidgetRef ref, String path) {
- final config = ref.read(ConfigStateprovider);
-
- Map<String, dynamic> map = {
- "action": "subscribe",
- "tokens": config.kuksaAuthToken,
- "path": path,
- "requestId": requestId
- };
- socket.add(jsonEncode(map));
- }
-}
diff --git a/lib/kuksa-server/vehicle_server_path.dart b/lib/kuksa-server/vehicle_server_path.dart
deleted file mode 100644
index e422aff..0000000
--- a/lib/kuksa-server/vehicle_server_path.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-
-
-class VSPath {
-
-
- static const String vehicleTrunkLocked = "Vehicle.Body.Trunk.IsLocked";
- static const String vehicleTrunkOpen = "Vehicle.Body.Trunk.IsOpen";
-
-
- static const String vehicleAmbientAirTemperature =
- "Vehicle.AmbientAirTemperature";
-
- static const String vehicleFrontLeftTire =
- "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure";
- static const String vehicleFrontRightTire =
- "Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure";
- static const String vehicleRearLeftTire =
- "Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure";
-
- static const String vehicleRearRightTire =
- "Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure";
- static const String vehicleIsChildLockActiveLeft =
- "Vehicle.Cabin.Door.Row2.Left.IsChildLockActive";
- static const String vehicleIsChildLockActiveRight =
- "Vehicle.Cabin.Door.Row2.Right.IsChildLockActive";
- static const String vehicleCurrentLongitude =
- "Vehicle.CurrentLocation.Longitude";
- static const String vehicleCurrentLatitude =
- "Vehicle.CurrentLocation.Latitude";
-
- static const String vehicleInsideTemperature =
- "Vehicle.Cabin.HVAC.AmbientAirTemperature";
- static const String vehicleFrontLeftAc =
- "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution";
-}
diff --git a/lib/main.dart b/lib/main.dart
index 32203fa..beff055 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -4,9 +4,8 @@ import 'dart:io';
import 'dart:ui';
import 'package:flutter/material.dart';
-import 'package:flutter_hvac/config.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'kuksa-server/vehicle_config.dart';
+import 'package:flutter_hvac/home_page.dart';
class MyCustomScrollBehavior extends MaterialScrollBehavior {
// Override behavior methods and getters like dragDevices
@@ -17,13 +16,12 @@ class MyCustomScrollBehavior extends MaterialScrollBehavior {
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
- HttpClient client = await initializeClient();
runApp(
ProviderScope(
child: MaterialApp(
scrollBehavior: MyCustomScrollBehavior(),
- home: GetConfig(client: client),
+ home: HomePage(),
),
),
);
diff --git a/lib/kuksa-server/vehicle-class.dart b/lib/vehicle-signals/vehicle_ac_status_provider.dart
index a04ad90..ce6e470 100644
--- a/lib/kuksa-server/vehicle-class.dart
+++ b/lib/vehicle-signals/vehicle_ac_status_provider.dart
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: Apache-2.0
-class vehicle {
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+class VehicleAcStatus {
late bool isAcActive;
late bool isFrontDefrosterActive;
late bool isRearDefrosterActive;
@@ -11,7 +13,7 @@ class vehicle {
late bool isAutoActive;
late bool isFreshAirCirculateActive;
- vehicle({
+ VehicleAcStatus({
required this.isAcActive,
required this.isAcDirectionDown,
required this.isAcDirectionMiddle,
@@ -23,7 +25,7 @@ class vehicle {
required this.isFreshAirCirculateActive,
});
- vehicle copywith({
+ VehicleAcStatus copywith({
bool? isAcActive,
bool? isAcDirectionDown,
bool? isAcDirectionMiddle,
@@ -34,7 +36,7 @@ class vehicle {
bool? isAutoActive,
bool? isFreshAirCirculateActive,
}) {
- return vehicle(
+ return VehicleAcStatus(
isAcActive: isAcActive ?? this.isAcActive,
isAcDirectionDown: isAcDirectionDown ?? this.isAcDirectionDown,
isAcDirectionMiddle: isAcDirectionMiddle ?? this.isAcDirectionMiddle,
@@ -51,3 +53,46 @@ class vehicle {
);
}
}
+
+class VehicleAcStatusNotifier extends StateNotifier<VehicleAcStatus> {
+ static VehicleAcStatus intial_value = VehicleAcStatus(
+ isAcActive: false,
+ isAcDirectionDown: false,
+ isAcDirectionMiddle: false,
+ isAcDirectionUp: false,
+ isFrontDefrosterActive: false,
+ isRearDefrosterActive: false,
+ isRecirculationActive: false,
+ isAutoActive: false,
+ isFreshAirCirculateActive : false,
+ );
+ VehicleAcStatusNotifier() : super(intial_value);
+
+ void update({
+ bool? isAcActive,
+ bool? isAcDirectionDown,
+ bool? isAcDirectionUp,
+ bool? isAcDirectionMiddle,
+ bool? isFrontDefrosterActive,
+ bool? isRearDefrosterActive,
+ bool? isRecirculationActive,
+ bool? isAutoActive,
+ bool? isFreshAirCirculateActive,
+ }) {
+ state = state.copywith(
+ isAcActive: isAcActive,
+ isAcDirectionDown: isAcDirectionDown,
+ isAcDirectionMiddle: isAcDirectionMiddle,
+ isAcDirectionUp: isAcDirectionUp,
+ isFrontDefrosterActive: isFrontDefrosterActive,
+ isRearDefrosterActive: isRearDefrosterActive,
+ isRecirculationActive: isRecirculationActive,
+ isAutoActive : isAutoActive,
+ isFreshAirCirculateActive : isFreshAirCirculateActive,
+ );
+ }
+}
+
+final vehicleAcStatusProvider = StateNotifierProvider<VehicleAcStatusNotifier, VehicleAcStatus>(
+ (ref) => VehicleAcStatusNotifier(),
+);
diff --git a/lib/vehicle-signals/vss_client.dart b/lib/vehicle-signals/vss_client.dart
new file mode 100644
index 0000000..b9769e1
--- /dev/null
+++ b/lib/vehicle-signals/vss_client.dart
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:io';
+import 'package:meta/meta.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:grpc/grpc.dart';
+import 'package:flutter_hvac/generated/kuksa/val/v1/val.pbgrpc.dart';
+import 'package:flutter_hvac/generated/kuksa/val/v1/types.pb.dart';
+import 'package:flutter_hvac/config.dart';
+
+abstract class VssClient {
+ final KuksaConfig config;
+ final ClientChannel channel;
+ final VALClient stub;
+ final Ref ref;
+
+ // Extenders will likely override this
+ final List<String> signals = [];
+
+ VssClient({required this.config, required this.channel, required this.stub, required this.ref});
+
+ // Abstract method extenders must implement
+ void handleSignalUpdates(EntryUpdate update);
+
+ void run() async {
+ if (signals.isEmpty)
+ return;
+
+ var request = SubscribeRequest();
+ for (var i = 0; i < signals.length; i++) {
+ var entry = SubscribeEntry();
+ entry.path = signals[i];
+ entry.fields.add(Field.FIELD_PATH);
+ entry.fields.add(Field.FIELD_VALUE);
+ request.entries.add(entry);
+ }
+
+ try {
+ Map<String, String> metadata = {};
+ if (config.authorization.isNotEmpty) {
+ metadata = {'authorization': "Bearer ${config.authorization}" };
+ }
+ var responseStream = stub.subscribe(request, options: CallOptions(metadata: metadata));
+ await for (var response in responseStream) {
+ for (var update in response.updates) {
+ if (!(update.hasEntry() && update.entry.hasPath()))
+ continue;
+ handleSignalUpdates(update);
+ }
+ }
+ } catch (e) {
+ print(e);
+ }
+ }
+
+ void setUint32(String path, int value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..uint32 = value;
+ set(path, dp, actuator);
+ }
+
+ void setInt32(String path, int value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..int32 = value;
+ set(path, dp, actuator);
+ }
+
+ void setBool(String path, bool value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..bool_12 = value;
+ set(path, dp, actuator);
+ }
+
+ void setString(String path, String value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..string = value;
+ set(path, dp, actuator);
+ }
+
+ void setFloat(String path, double value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..float = value;
+ set(path, dp, actuator);
+ }
+
+ void setDouble(String path, double value, [bool actuator = true]) async {
+ var dp = Datapoint()
+ ..double_18 = value;
+ set(path, dp, actuator);
+ }
+
+ void set(String path, Datapoint dp, bool actuator) async {
+ var entry = DataEntry()
+ ..path = path;
+ var update = EntryUpdate();
+ if (actuator) {
+ entry.actuatorTarget = dp;
+ update.fields.add(Field.FIELD_ACTUATOR_TARGET);
+ } else {
+ entry.value = dp;
+ update.fields.add(Field.FIELD_VALUE);
+ }
+ update.entry = entry;
+ var request = SetRequest();
+ request.updates.add(update);
+ Map<String, String> metadata = {};
+ if (config.authorization.isNotEmpty) {
+ metadata = {'authorization': "Bearer ${config.authorization}" };
+ }
+ await stub.set(request, options: CallOptions(metadata: metadata));
+ }
+
+}
diff --git a/lib/vehicle-signals/vss_path.dart b/lib/vehicle-signals/vss_path.dart
new file mode 100644
index 0000000..df90a48
--- /dev/null
+++ b/lib/vehicle-signals/vss_path.dart
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: Apache-2.0
+
+
+class VSSPath {
+
+ static const String vehicleOutsideTemperature =
+ "Vehicle.AmbientAirTemperature";
+
+ static const String vehicleInsideTemperature =
+ "Vehicle.Cabin.HVAC.AmbientAirTemperature";
+
+ static const String vehicleIsAirConditioningActive =
+ "Vehicle.Cabin.HVAC.IsAirConditioningActive";
+
+ static const String vehicleIsFrontDefrosterActive =
+ "Vehicle.Cabin.HVAC.IsFrontDefrosterActive";
+
+ static const String vehicleIsRearDefrosterActive =
+ "Vehicle.Cabin.HVAC.IsRearDefrosterActive";
+
+ static const String vehicleIsRecirculationActive =
+ "Vehicle.Cabin.HVAC.IsRecirculationActive";
+
+ static const String vehicleFrontLeftAirDistribution =
+ "Vehicle.Cabin.HVAC.Station.Row1.Left.AirDistribution";
+
+ static const String vehicleFrontLeftFanSpeed =
+ "Vehicle.Cabin.HVAC.Station.Row1.Left.FanSpeed";
+
+ static const String vehicleFrontLeftTemp =
+ "Vehicle.Cabin.HVAC.Station.Row1.Left.Temperature";
+
+ static const String vehicleFrontRightAirDistribution =
+ "Vehicle.Cabin.HVAC.Station.Row1.Right.AirDistribution";
+
+ static const String vehicleFrontRightFanSpeed =
+ "Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed";
+
+ static const String vehicleFrontRightTemp =
+ "Vehicle.Cabin.HVAC.Station.Row1.Right.Temperature";
+
+ static const String vehicleRearLeftAirDistribution =
+ "Vehicle.Cabin.HVAC.Station.Row2.Left.AirDistribution";
+
+ static const String vehicleRearLeftFanSpeed =
+ "Vehicle.Cabin.HVAC.Station.Row2.Left.FanSpeed";
+
+ static const String vehicleRearLeftTemp =
+ "Vehicle.Cabin.HVAC.Station.Row2.Left.Temperature";
+
+ static const String vehicleRearRightAirDistribution =
+ "Vehicle.Cabin.HVAC.Station.Row2.Right.AirDistribution";
+
+ static const String vehicleRearRightFanSpeed =
+ "Vehicle.Cabin.HVAC.Station.Row2.Right.FanSpeed";
+
+ static const String vehicleRearRightTemp =
+ "Vehicle.Cabin.HVAC.Station.Row2.Right.Temperature";
+
+}
diff --git a/lib/vehicle-signals/vss_provider.dart b/lib/vehicle-signals/vss_provider.dart
new file mode 100644
index 0000000..09ce5a1
--- /dev/null
+++ b/lib/vehicle-signals/vss_provider.dart
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: Apache-2.0
+import 'dart:io';
+import 'package:meta/meta.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:grpc/grpc.dart';
+import 'package:flutter_hvac/generated/kuksa/val/v1/val.pbgrpc.dart';
+import 'package:flutter_hvac/generated/kuksa/val/v1/types.pb.dart';
+import 'package:flutter_hvac/config.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_client.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_signal_providers.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
+
+class HvacVssClient extends VssClient {
+ @override
+ final List<String> signals = [
+ VSSPath.vehicleFrontLeftTemp,
+ VSSPath.vehicleFrontRightTemp,
+ VSSPath.vehicleFrontLeftFanSpeed
+ ];
+
+ HvacVssClient({required super.config, required super.channel, required super.stub, required super.ref});
+
+ @override
+ void handleSignalUpdates(EntryUpdate update) {
+ switch (update.entry.path) {
+ case VSSPath.vehicleFrontLeftTemp:
+ if (update.entry.value.hasInt32()) {
+ ref
+ .read(LeftClimateTempProvider.notifier)
+ .update(update.entry.value.int32);
+ }
+ break;
+ case VSSPath.vehicleFrontRightTemp:
+ if (update.entry.value.hasInt32()) {
+ ref
+ .read(RightClimateTempProvider.notifier)
+ .update(update.entry.value.int32);
+ }
+ break;
+ case VSSPath.vehicleFrontLeftFanSpeed:
+ if (update.entry.value.hasInt32()) {
+ ref
+ .read(fanSpeedProvider.notifier)
+ .update(update.entry.value.int32);
+ }
+ break;
+ default:
+ print("ERROR: Unexpected path ${update.entry.path}");
+ break;
+ }
+ }
+}
+
+final vssClientProvider = Provider((ref) {
+ var config = ref.read(kuksaConfigProvider);
+ debugPrint("Using ${config.hostname}:${config.port}");
+ ChannelCredentials creds;
+ if (config.use_tls && config.ca_certificate.isNotEmpty) {
+ print("Using TLS");
+ if (config.tls_server_name.isNotEmpty)
+ creds = ChannelCredentials.secure(certificates: config.ca_certificate, authority: config.tls_server_name);
+ else
+ creds = ChannelCredentials.secure(certificates: config.ca_certificate);
+ } else {
+ creds = ChannelCredentials.insecure();
+ }
+ final channel = ClientChannel(config.hostname,
+ port: config.port,
+ options: ChannelOptions(credentials: creds));
+
+ final stub = VALClient(channel);
+
+ return HvacVssClient(config: config, channel: channel, stub: stub, ref: ref);
+});
diff --git a/lib/provider.dart b/lib/vehicle-signals/vss_signal_providers.dart
index 16d65af..51b8b6c 100644
--- a/lib/provider.dart
+++ b/lib/vehicle-signals/vss_signal_providers.dart
@@ -1,7 +1,10 @@
// SPDX-License-Identifier: Apache-2.0
+import 'package:meta/meta.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+// Left Temperature
+
final LeftClimateTempProvider = StateNotifierProvider<LeftClimateTemp, int>(
(ref) => LeftClimateTemp(),
);
@@ -14,6 +17,8 @@ class LeftClimateTemp extends StateNotifier<int> {
}
}
+// Right Temperature
+
final RightClimateTempProvider = StateNotifierProvider<RightClimateTemp, int>(
(ref) => RightClimateTemp(),
);
@@ -26,6 +31,8 @@ class RightClimateTemp extends StateNotifier<int> {
}
}
+// Fan Speed
+
final fanSpeedProvider =
StateNotifierProvider<fanslider, int>((ref) => fanslider());
diff --git a/lib/widgets/left_climate.dart b/lib/widgets/left_climate.dart
index b45eb0b..6e9d275 100644
--- a/lib/widgets/left_climate.dart
+++ b/lib/widgets/left_climate.dart
@@ -3,16 +3,15 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_signal_providers.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
import 'package:numberpicker/numberpicker.dart';
-import '../kuksa-server/vehicle_methods.dart';
import '../size.dart';
class LeftClimateScrollWidget extends ConsumerWidget {
- LeftClimateScrollWidget({Key? key, required this.socket}) : super(key: key);
-
- WebSocket socket;
+ LeftClimateScrollWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, ref) {
@@ -41,16 +40,11 @@ class LeftClimateScrollWidget extends ConsumerWidget {
},
onChanged: (value) {
ref.read(LeftClimateTempProvider.notifier).update(value);
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row1.Left.Temperature',
- value.toString());
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row2.Left.Temperature',
- value.toString());
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ vss.setInt32(VSSPath.vehicleFrontLeftTemp, value);
+ vss.setInt32(VSSPath.vehicleRearLeftTemp, value);
+ }
},
selectedTextStyle: TextStyle(
color: Colors.lightBlueAccent,
diff --git a/lib/widgets/right_climate.dart b/lib/widgets/right_climate.dart
index 590b511..9b2cc39 100644
--- a/lib/widgets/right_climate.dart
+++ b/lib/widgets/right_climate.dart
@@ -3,16 +3,15 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_signal_providers.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
import 'package:numberpicker/numberpicker.dart';
-import '../kuksa-server/vehicle_methods.dart';
import '../size.dart';
class RightClimateScrollWidget extends ConsumerWidget {
- RightClimateScrollWidget({Key? key, required this.socket}) : super(key: key);
-
- WebSocket socket;
+ RightClimateScrollWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, ref) {
@@ -40,16 +39,11 @@ class RightClimateScrollWidget extends ConsumerWidget {
},
onChanged: (value) {
ref.read(RightClimateTempProvider.notifier).update(value);
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row1.Right.Temperature',
- value.toString());
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row2.Right.Temperature',
- value.toString());
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ vss.setInt32(VSSPath.vehicleFrontRightTemp, value);
+ vss.setInt32(VSSPath.vehicleRearRightTemp, value);
+ }
},
selectedTextStyle: TextStyle(
color: Colors.lightBlueAccent,
diff --git a/lib/widgets/slider.dart b/lib/widgets/slider.dart
index f8bd459..7ca5461 100644
--- a/lib/widgets/slider.dart
+++ b/lib/widgets/slider.dart
@@ -4,14 +4,14 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:flutter_hvac/provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_provider.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_signal_providers.dart';
+import 'package:flutter_hvac/vehicle-signals/vss_path.dart';
-import '../kuksa-server/vehicle_methods.dart';
import '../size.dart';
class SliderControl extends ConsumerWidget {
- WebSocket socket;
- SliderControl({Key? key, required this.socket}) : super(key: key);
+ SliderControl({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, ref) {
@@ -22,20 +22,13 @@ class SliderControl extends ConsumerWidget {
value: ref.watch(fanSpeedProvider).toDouble(),
onChanged: (value) {
ref.read(fanSpeedProvider.notifier).update(value.toInt());
- VISS.set(socket, ref, 'Vehicle.Cabin.HVAC.Station.Row1.Left.FanSpeed',
- value.toInt().toString());
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed',
- value.toInt().toString());
- VISS.set(socket, ref, 'Vehicle.Cabin.HVAC.Station.Row2.Left.FanSpeed',
- value.toInt().toString());
- VISS.set(
- socket,
- ref,
- 'Vehicle.Cabin.HVAC.Station.Row2.Right.FanSpeed',
- value.toInt().toString());
+ var vss = ref.read(vssClientProvider);
+ if (vss != null) {
+ vss.setUint32(VSSPath.vehicleFrontLeftFanSpeed, value.toInt());
+ vss.setUint32(VSSPath.vehicleFrontRightFanSpeed, value.toInt());
+ vss.setUint32(VSSPath.vehicleRearLeftFanSpeed, value.toInt());
+ vss.setUint32(VSSPath.vehicleRearRightFanSpeed, value.toInt());
+ }
},
min: 0,
max: 100,
diff --git a/pubspec.lock b/pubspec.lock
index d38a22a..f20f81e 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1,6 +1,13 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.3.9"
async:
dependency: transitive
description:
@@ -36,6 +43,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.16.0"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.1.1"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.0.2"
fake_async:
dependency: transitive
description:
@@ -43,6 +64,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.1"
flutter:
dependency: "direct main"
description: flutter
@@ -81,6 +109,20 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
+ googleapis_auth:
+ dependency: transitive
+ description:
+ name: googleapis_auth
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.3.1"
+ grpc:
+ dependency: "direct main"
+ description:
+ name: grpc
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.1.0"
http:
dependency: transitive
description:
@@ -88,6 +130,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.5"
+ http2:
+ dependency: transitive
+ description:
+ name: http2
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.1"
http_parser:
dependency: transitive
description:
@@ -102,6 +151,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.6.5"
lints:
dependency: transitive
description:
@@ -165,6 +221,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
+ pointycastle:
+ dependency: transitive
+ description:
+ name: pointycastle
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.7.3"
+ protobuf:
+ dependency: "direct main"
+ description:
+ name: protobuf
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
riverpod:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 614897f..df24576 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
- sdk: ">=2.12.0 <3.0.0"
+ sdk: ">=2.18.0 <3.0.0"
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
@@ -36,6 +36,8 @@ dependencies:
flutter_riverpod: ^1.0.3
yaml: ^3.1.1
+ grpc: ^3.0.0
+ protobuf: ^2.1.0
dev_dependencies:
flutter_test: