From 686113b376edbf2e58599ea053a87c7224b34e21 Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Fri, 2 Feb 2024 07:18:15 +0100 Subject: [PATCH 1/6] feature(Build): Remove F-Droid BuildType Closes: #44 Signed-off-by: Andre Weber --- app/build.gradle.kts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 72f2e08..16a440e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -71,11 +71,6 @@ android { ) signingConfig = signingConfigs.getByName("release") } - // For the F-Droid store release where an unsigned artifact is needed - create("fDroid") { - initWith(getByName("release")) - signingConfig = null - } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 From b3d3df75a46530962add1bf8069bade247087699 Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Fri, 2 Feb 2024 13:12:02 +0100 Subject: [PATCH 2/6] docs: Add Quickstart Guide Closes: #18 Signed-off-by: Andre Weber --- README.md | 3 ++ docs/CONTRIBUTING.md | 3 ++ docs/QUICKSTART.md | 72 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 docs/QUICKSTART.md diff --git a/README.md b/README.md index 0fbb882..ee6bcf6 100644 --- a/README.md +++ b/README.md @@ -31,5 +31,8 @@ Find out more about KUKSA: - KUKSA Android SDK: https://github.com/eclipse-kuksa/kuksa-android-sdk/ - KUKSA Companion App: https://github.com/eclipse-kuksa/kuksa-android-companion/ +Read our [quickstart guide](docs/QUICKSTART.md) to find out how to use the KUKSA Companion App +and setup it's infrastructure. + Includes digital car model by BMW AG licensed under CC-BY-4.0 (https://github.com/bmwcarit/digital-car-3d). diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index c561a5e..796dacd 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,5 +1,8 @@ ## Getting started +Read our [quickstart guide](docs/QUICKSTART.md) to find out how to use the KUKSA Companion App +and setup it's infrastructure. + ### Make Changes ### Commit Messages diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md new file mode 100644 index 0000000..05b320d --- /dev/null +++ b/docs/QUICKSTART.md @@ -0,0 +1,72 @@ +## Introduction + +This guide explains on how to setup the infrastructure to use and test the KUKSA Companion App. + +## Requirements + +- Android Device with API Level >= 27 (Android 8.1) +- a running DataBroker +- a running MockService (Optional) + +## Setup Databroker + +To use the Companion App a connection to a Databroker is required. This Databroker might run inside +a car or on your local system for testing purposes. The steps to set up a local Databroker can be +found in +the [KUKSA.val Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) + +## Setup Mock Service (Optional) + +This step is only required when connecting to a local running Databroker, which is not integrated +into an actual vehicle. + +To use the Companion App the Databroker needs to be connected to the Mock Service. +The Mock Service simulates the interaction with the car e.g. interactions with the different +interactors of a car. The steps to set up a local Databroker can be found in the +[KUKSA.val Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) + +The Mock Service needs to be run with the +following [mock.py](https://github.com/eclipse-kuksa/kuksa-android-companion/blob/main/mock/mock.py) + +## Configure Companion App + +When you have access to a Databroker, the next step is to setup the Companion App so it can connect +to the Databroker. +For this enter the "Settings" screen from inside the NavigationBar of the app. + +Here you have to enter the following connection information: + +- Host: The host on which the Databroker is running. +- Port: The port on which the Databroker is running. + Make sure you used the same port, when starting the Databroker. The Apps default value is 55556. +- Enable TLS: This switch needs to be enabled, when you started your Databroker in secure mode. + Make sure you used the same mode, when starting the Databroker. +- Certificate: If TLS is enabled, it is mandatory to set a Certificate, which is used to establish + the secure connection. + +You can press the small "refresh" button in the Connection Status Bar, to start a new connection +cycle. + +## Questions + +### Can't connect to Databroker from Android Emulator + +When the App is run from an Android Emulator and the host device is running the Databroker. The host +to be used is `10.0.2.2`. This is the internal loopback address of the host device. See for further +details: https://developer.android.com/studio/run/emulator-networking + +### I can't connect to the Databroker from my mobile device. I am using a Proxy. + +The Proxy might prevent communication between the mobile device and the host device. Therefore even +though the host device is running the Databroker just fine, it is not possible for the mobile device +to connect to it. + +This can be solved by +a) using an Android Emulator +b) setting up a reverse port forwarding using adb +`adb reverse tcp:55556 tcp:55556` +This forwards all data from the host device port 55556 to the mobile device port 55556. +The host to be used is `localhost:55556` in this case. + +Reverse port forwarding requires host device and mobile device to be connected using usb, +usb debugging to be enabled on the mobile device and adb to be accessible on the host device. From 72b83bcb6e930ba8d63df57de5c22a5ea14f6a63 Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Mon, 5 Feb 2024 07:52:58 +0100 Subject: [PATCH 3/6] docs: Adapt Documentation as per Review Findings --- docs/QUICKSTART.md | 117 +++++++++++++++++++++++++++++++++------------ 1 file changed, 86 insertions(+), 31 deletions(-) diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 05b320d..3f70b63 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -5,61 +5,69 @@ This guide explains on how to setup the infrastructure to use and test the KUKSA ## Requirements - Android Device with API Level >= 27 (Android 8.1) -- a running DataBroker -- a running MockService (Optional) +- a running [KUKSA.val DataBroker](https://github.com/eclipse/kuksa.val/tree/master/kuksa_databroker) +- a running [Vehicle Mock Service](https://github.com/eclipse/kuksa.val.services/tree/main/mock_service) (Optional) -## Setup Databroker +## Setup KUKSA.val Databroker -To use the Companion App a connection to a Databroker is required. This Databroker might run inside -a car or on your local system for testing purposes. The steps to set up a local Databroker can be -found in +To use the Companion App a connection to a KUKSA.val Databroker is required. The +KUKSA.val Databroker might run inside a car or on your local system for testing purposes. The steps +to set up a local KUKSA.val Databroker can be found in the [KUKSA.val Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) -## Setup Mock Service (Optional) +## Setup Vehicle Mock Service (Optional) -This step is only required when connecting to a local running Databroker, which is not integrated -into an actual vehicle. +This step is only required when connecting to a local running KUKSA.val Databroker, which is not +integrated into an actual vehicle. -To use the Companion App the Databroker needs to be connected to the Mock Service. -The Mock Service simulates the interaction with the car e.g. interactions with the different -interactors of a car. The steps to set up a local Databroker can be found in the -[KUKSA.val Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) +To use the Companion App the KUKSA.val Databroker needs to be connected to the Mock Service. +The Mock Service simulates the interaction with the car e.g. sensors and actuators of a car. +The steps to set up a local instance of the Vehicle Mock Service can be found here: +[Running mockservice](https://github.com/eclipse/kuksa.val.services/tree/main/mock_service#running-mockservice) The Mock Service needs to be run with the -following [mock.py](https://github.com/eclipse-kuksa/kuksa-android-companion/blob/main/mock/mock.py) +following [mock.py](https://github.com/eclipse-kuksa/kuksa-android-companion/blob/main/mock/mock.py). +Simply replace the mock.py inside the Vehicle Mock Service repository with the one provided by this +project to use it. ## Configure Companion App -When you have access to a Databroker, the next step is to setup the Companion App so it can connect -to the Databroker. -For this enter the "Settings" screen from inside the NavigationBar of the app. +When you have access to a KUKSA.val Databroker, the next step is to setup the Companion App so it +can connect to the it. +For this enter the "Settings" screen. The Settings screen can be found when clicking on the gear +icon in the Navigation Bar. Depending on your orientation the Navigation Bar can be found on top +(portrait) or to the left (landscape) of the screen. Here you have to enter the following connection information: -- Host: The host on which the Databroker is running. -- Port: The port on which the Databroker is running. - Make sure you used the same port, when starting the Databroker. The Apps default value is 55556. -- Enable TLS: This switch needs to be enabled, when you started your Databroker in secure mode. - Make sure you used the same mode, when starting the Databroker. +- Host: The host on which the KUKSA.val Databroker is running. +- Port: The port on which the KUKSA.val Databroker is running. + Make sure you used the same port, when starting the KUKSA.val Databroker. The default value + expected by the App is 55556 while the KUKSA.val Databroker by default starts at port 55555. +- Enable TLS: This switch needs to be enabled, when you started your KUKSA.val Databroker in + secure mode. Make sure you used the same mode, when starting the KUKSA.val Databroker. - Certificate: If TLS is enabled, it is mandatory to set a Certificate, which is used to establish the secure connection. -You can press the small "refresh" button in the Connection Status Bar, to start a new connection -cycle. +You can press the "refresh"-button, to start a new connection cycle. The "refresh"-button is the +self-referencing arrow in the Connection Status Bar. Depending on your connection status the +Connection Status Bar is colored red if no connection could be established or green if you are +successfully connected to the KUKSA.val Databroker. ## Questions -### Can't connect to Databroker from Android Emulator +### Can't connect to KUKSA.val Databroker from Android Emulator -When the App is run from an Android Emulator and the host device is running the Databroker. The host -to be used is `10.0.2.2`. This is the internal loopback address of the host device. See for further -details: https://developer.android.com/studio/run/emulator-networking +When the App is run from an Android Emulator and the host device is running the +KUKSA.val Databroker. The host to be used is `10.0.2.2`. This is the internal loopback address of +the host device. See the [android documentation](https://developer.android.com/studio/run/emulator-networking) +for further details -### I can't connect to the Databroker from my mobile device. I am using a Proxy. +### I can't connect to the KUKSA.val Databroker from my mobile device. I am using a Proxy. The Proxy might prevent communication between the mobile device and the host device. Therefore even -though the host device is running the Databroker just fine, it is not possible for the mobile device -to connect to it. +though the host device is running the KUKSA.val Databroker just fine, it is not possible for the +mobile device to connect to it. This can be solved by a) using an Android Emulator @@ -70,3 +78,50 @@ The host to be used is `localhost:55556` in this case. Reverse port forwarding requires host device and mobile device to be connected using usb, usb debugging to be enabled on the mobile device and adb to be accessible on the host device. + +## Which Signals are used inside the Companion App + +The KUKSA Companion App is based on version 4.0 of the Vehicle Signal Specification. + +It uses only a small portion of the Signals specified by the Vehicle Signal Specification for +it's show case. + +Here is a list of signals which are used inside the app: + +Door Control: +- Vehicle.Cabin.Door.Row1.DriverSide.IsLocked +- Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked +- Vehicle.Cabin.Door.Row2.DriverSide.IsLocked +- Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked +- Vehicle.Body.Trunk.Rear.IsLocked +- Vehicle.Cabin.Door.Row1.DriverSide.IsOpen +- Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen +- Vehicle.Cabin.Door.Row2.DriverSide.IsOpen +- Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen +- Vehicle.Body.Trunk.Rear.IsOpen + +Temperature Control: +- Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature +- Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature +- Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature +- Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature + +Light Control: +- Vehicle.Body.Lights.Beam.High.IsOn +- Vehicle.Body.Lights.Beam.Low.IsOn +- Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling +- Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling +- Vehicle.Body.Lights.Fog.Front.IsOn +- Vehicle.Body.Lights.Fog.Rear.IsOn +- Vehicle.Body.Lights.Hazard.IsSignaling +- Vehicle.Body.Lights.Parking.IsOn +- Vehicle.Body.Lights.Running.IsOn + +Tire Pressure: +- Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure +- Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure +- Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure +- Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure + +You can find more information about the signals used inside the app or other existing signals +[here](https://covesa.github.io/vehicle_signal_specification/). From a014e947ff6e271e3921f6b6dc6a279d2524ad9a Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Mon, 5 Feb 2024 08:12:22 +0100 Subject: [PATCH 4/6] chore: Drop ".val" suffix --- docs/QUICKSTART.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 3f70b63..0cf6fc0 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -5,22 +5,22 @@ This guide explains on how to setup the infrastructure to use and test the KUKSA ## Requirements - Android Device with API Level >= 27 (Android 8.1) -- a running [KUKSA.val DataBroker](https://github.com/eclipse/kuksa.val/tree/master/kuksa_databroker) +- a running [KUKSA DataBroker](https://github.com/eclipse/kuksa.val/tree/master/kuksa_databroker) - a running [Vehicle Mock Service](https://github.com/eclipse/kuksa.val.services/tree/main/mock_service) (Optional) -## Setup KUKSA.val Databroker +## Setup KUKSA Databroker -To use the Companion App a connection to a KUKSA.val Databroker is required. The -KUKSA.val Databroker might run inside a car or on your local system for testing purposes. The steps -to set up a local KUKSA.val Databroker can be found in -the [KUKSA.val Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) +To use the Companion App a connection to a KUKSA Databroker is required. The +KUKSA Databroker might run inside a car or on your local system for testing purposes. The steps +to set up a local KUKSA Databroker can be found in +the [KUKSA Quickstart Guide](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md) ## Setup Vehicle Mock Service (Optional) -This step is only required when connecting to a local running KUKSA.val Databroker, which is not +This step is only required when connecting to a local running KUKSA Databroker, which is not integrated into an actual vehicle. -To use the Companion App the KUKSA.val Databroker needs to be connected to the Mock Service. +To use the Companion App the KUKSA Databroker needs to be connected to the Mock Service. The Mock Service simulates the interaction with the car e.g. sensors and actuators of a car. The steps to set up a local instance of the Vehicle Mock Service can be found here: [Running mockservice](https://github.com/eclipse/kuksa.val.services/tree/main/mock_service#running-mockservice) @@ -32,7 +32,7 @@ project to use it. ## Configure Companion App -When you have access to a KUKSA.val Databroker, the next step is to setup the Companion App so it +When you have access to a KUKSA Databroker, the next step is to setup the Companion App so it can connect to the it. For this enter the "Settings" screen. The Settings screen can be found when clicking on the gear icon in the Navigation Bar. Depending on your orientation the Navigation Bar can be found on top @@ -40,33 +40,33 @@ icon in the Navigation Bar. Depending on your orientation the Navigation Bar can Here you have to enter the following connection information: -- Host: The host on which the KUKSA.val Databroker is running. -- Port: The port on which the KUKSA.val Databroker is running. - Make sure you used the same port, when starting the KUKSA.val Databroker. The default value - expected by the App is 55556 while the KUKSA.val Databroker by default starts at port 55555. -- Enable TLS: This switch needs to be enabled, when you started your KUKSA.val Databroker in - secure mode. Make sure you used the same mode, when starting the KUKSA.val Databroker. +- Host: The host on which the KUKSA Databroker is running. +- Port: The port on which the KUKSA Databroker is running. + Make sure you used the same port, when starting the KUKSA Databroker. The default value + expected by the App is 55556 while the KUKSA Databroker by default starts at port 55555. +- Enable TLS: This switch needs to be enabled, when you started your KUKSA Databroker in + secure mode. Make sure you used the same mode, when starting the KUKSA Databroker. - Certificate: If TLS is enabled, it is mandatory to set a Certificate, which is used to establish the secure connection. You can press the "refresh"-button, to start a new connection cycle. The "refresh"-button is the self-referencing arrow in the Connection Status Bar. Depending on your connection status the Connection Status Bar is colored red if no connection could be established or green if you are -successfully connected to the KUKSA.val Databroker. +successfully connected to the KUKSA Databroker. ## Questions -### Can't connect to KUKSA.val Databroker from Android Emulator +### Can't connect to KUKSA Databroker from Android Emulator When the App is run from an Android Emulator and the host device is running the -KUKSA.val Databroker. The host to be used is `10.0.2.2`. This is the internal loopback address of +KUKSA Databroker. The host to be used is `10.0.2.2`. This is the internal loopback address of the host device. See the [android documentation](https://developer.android.com/studio/run/emulator-networking) for further details -### I can't connect to the KUKSA.val Databroker from my mobile device. I am using a Proxy. +### I can't connect to the KUKSA Databroker from my mobile device. I am using a Proxy. The Proxy might prevent communication between the mobile device and the host device. Therefore even -though the host device is running the KUKSA.val Databroker just fine, it is not possible for the +though the host device is running the KUKSA Databroker just fine, it is not possible for the mobile device to connect to it. This can be solved by From e8f0a45632407ec5914da26a539e2f51266c06ef Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Mon, 5 Feb 2024 08:35:24 +0100 Subject: [PATCH 5/6] chore: Add Info about KUKSA CLI and Python Library --- docs/QUICKSTART.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 0cf6fc0..b3771d0 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -54,7 +54,7 @@ self-referencing arrow in the Connection Status Bar. Depending on your connectio Connection Status Bar is colored red if no connection could be established or green if you are successfully connected to the KUKSA Databroker. -## Questions +## FAQ ### Can't connect to KUKSA Databroker from Android Emulator @@ -79,7 +79,7 @@ The host to be used is `localhost:55556` in this case. Reverse port forwarding requires host device and mobile device to be connected using usb, usb debugging to be enabled on the mobile device and adb to be accessible on the host device. -## Which Signals are used inside the Companion App +## Which Signals are used inside the Companion App? The KUKSA Companion App is based on version 4.0 of the Vehicle Signal Specification. @@ -125,3 +125,9 @@ Tire Pressure: You can find more information about the signals used inside the app or other existing signals [here](https://covesa.github.io/vehicle_signal_specification/). + +## Are there alternate ways to change the data of a VSS path? + +You can change the data of an underlying VSS path manually by using the +- [KUKSA CLI](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md#reading-and-writing-vss-data-via-cli) +- [KUKSA Python Library](https://github.com/eclipse/kuksa.val/blob/master/doc/quickstart.md#reading-and-writing-vss-data-with-code) From 6b8f443f20d9e0dd8a336b686a0c110d8889b87f Mon Sep 17 00:00:00 2001 From: Andre Weber Date: Mon, 5 Feb 2024 11:13:19 +0100 Subject: [PATCH 6/6] feature: Add Icon for F-Droid to Fastlane F-Droid only supports *.jp(e)g and *.png files therefore our icon was not recognized. Closes: #51 Signed-off-by: Andre Weber --- fastlane/metadata/android/en-US/images/icon.png | Bin 0 -> 38117 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 fastlane/metadata/android/en-US/images/icon.png diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..167b40b8dfa5e7ef67d8417b4eb35f65d2d0e4d3 GIT binary patch literal 38117 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%0Dhw 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 literal 0 HcmV?d00001