apps/flutter-ics-homescreen.git
3 months agoAdd gitlab issue/merge request templates master 12.1.20 17.90.0 lamprey/12.1.20 lamprey_12.1.20 ricefish/17.90.0 ricefish_17.90.0
Jan-Simon Moeller [Tue, 13 Feb 2024 21:50:48 +0000 (22:50 +0100)]
Add gitlab issue/merge request templates

Add template files for gitlab

Bug-AGL: SPEC-4474
Change-Id: If4b29597e5807a411429e5cca00294682b8614ed
Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
4 months agoImprove background disabling 07/29607/1
Scott Murray [Tue, 23 Jan 2024 21:22:17 +0000 (16:22 -0500)]
Improve background disabling

Rework things to show the first frame of the background animation
when the animation is disabled. A new 'plain-bg' option has been
added to the configuration in case the previous behavior is still
desired.

Bug-AGL: SPEC-5054

Change-Id: I15dde41fe8472bea8ef9690ad188ee6d2ba5c3af
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoFix TLS server name parsing 06/29606/1
Scott Murray [Tue, 23 Jan 2024 20:56:41 +0000 (15:56 -0500)]
Fix TLS server name parsing

Fix typo in the TLS server name parsing for KUKSA.val databroker
configuration.

Bug-AGL: SPEC-5053

Change-Id: I0fd27e59adda44e31e6feb104c439a38602c01ff
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoConnect audio settings button 05/29605/1
Scott Murray [Tue, 23 Jan 2024 20:51:45 +0000 (15:51 -0500)]
Connect audio settings button

Rework to connect the audio settings button on the media pages
to the appropriate settings page, and have the back button go
back to the expected previous page.  To enable this, the global
AppState provider was reworked to track the previous page and add
explicit update and back member functions.

Bug-AGL: SPEC-5030

Change-Id: I5858d1b1bf511a184b6538b2ce8c183b00c24fc6
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoRotate dashboard gauges 81/29581/1
Scott Murray [Fri, 5 Jan 2024 01:22:28 +0000 (20:22 -0500)]
Rotate dashboard gauges

Use Transform.rotate to rotate the CircularProgressIndicator and
associated custom painter widgets used for the speed, rpm, and fuel
gauges on the dashboard page by 180 degrees.  Having the progress
bars start from the six o'clock position looks more like existing
systems and should better match user expectations.  Future work
should likely involve an investigation into using something other
than the highly limited CircularProgressIndicator widget.

Bug-AGL: SPEC-5043

Change-Id: I1bbc3abd2eb4ca362bf92cd06495a3b0a5154843
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoConfigurable units fixes 80/29580/1
Scott Murray [Fri, 5 Jan 2024 01:13:01 +0000 (20:13 -0500)]
Configurable units fixes

Notable changes:
- Add pressure unit to the units model.
- Add tire pressure unit configuration page under settings.
- Rework the VSS client, provider, and the associated handling in
  the vehicle and audio state providers to make the signal updating
  code reusable for processing the result of VAL API get commands.
- Add logic to get the initial values of the used VSS signals so
  the initial application state looks sane in demo scenarios.
- Add VSS signal support to the units provider so that changes will
  be pushed out for e.g. IC use.
- Fix pressure unit use in various widgets.
- Fix up range calculation for dashboard to correctly account for
  units and the incoming VSS value being in meters.
- Fix some unit naming inconsistencies around capitalization.

Bug-AGL: SPEC-5031, SPEC-5032

Change-Id: I33ac735dfbe35283bd30c92aa157cbdb7af1837c
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoTweak idle speed in hybrid animation logic 79/29579/1
Scott Murray [Fri, 5 Jan 2024 01:05:15 +0000 (20:05 -0500)]
Tweak idle speed in hybrid animation logic

To improve the behavior with our simple CAN simulator script and
agl-demo-control-panel, tweak the hybrid animation logic to treat
600 rpm as the threshold for idling, instead of using 0.  This
should trigger the battery charging animation more often in the
demo scenarios.

Bug-AGL: SPEC-5027

Change-Id: I1578c39e220c5d2943959194640ade4219bc2b1b
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoInitial mediaplayer implementation 75/29575/1
Scott Murray [Wed, 3 Jan 2024 23:14:12 +0000 (18:14 -0500)]
Initial mediaplayer implementation

Notable changes:
- Added dart_mpd package as a dependency.
- Added MPD client class and associated provider.
- Added MPD client configuration to the configuration file for
  potential usecases where MPD may not be available locally.
- Added playlist, play state, art, etc. providers for use in the
  mediaplayer front end UI.
- Reworked MediaPlayer classes to wire up MPD client backend.
- Removed volume slider from the bottom of the media pages to
  make more room for playlist / preset tables, as only being
  able to show 3 entries in each was not usable in practice.
- Reworked media player mocked up position indicator into an
  actual slider control, and reworked the radio slider styling
  to match for better UI consistency.
- Reworked media player and radio playlist / preset tables to
  attempt to have them layout at the same location and add an
  always visible scroll bar.  The scroll bars currently have a
  layout issue with respect to scroll track size that does not
  seem to have an obvious fix.  They are usable for now, and
  further investigation will be done when time permits.
- Wired up play/pause button on the side volume control via a
  new set of play state and controller providers.

Bug-AGL: SPEC-5028, SPEC-5029

Change-Id: I87efecc58b4e185443942eb32ff8148ebcd675c3
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
4 months agoInitial radio implementation 74/29574/1
Scott Murray [Sun, 31 Dec 2023 21:24:51 +0000 (16:24 -0500)]
Initial radio implementation

Notable changes:
- Add radio gRPC API protobuf definitation and generated files.
- Reworked existing single gRPC APIs library to split it into
  per-API libraries to avoid name collision issues.
- Add radio gRPC client class and associated radio state class
  and RiverPod providers.
- Split media controls and play list table classes into media
  player and radio specific versions to facilitate customization
  and wiring up their appropriate backends in a straightforward
  fashion.  Some potential rationalization of styling widgets
  may be done as a follow up to avoid some duplication.
- Added radio configuration and presets loading.  The presets
  will be populated with the contents of a radio-presets.yaml
  file from the configured location, the default location is
  the /etc/xdg/AGL/ics-homescreen directory.
- Implemented FM radio player against the radio gRPC API.
  For the sake of expediency, no attempt has been made to make
  the player able to handle AM band support.
- Reworked media page navigation state so that active player is
  restored when coming back to the page.  Logic has been added to
  start/stop the radio on navigating to or leaving the FM radio
  sub-page.  This will potentially be reworked before CES to work
  with the pause/stop button present on the other pages.
- Started pruning down global exports.dart a bit to remove files
  only used in a specific page/hierarchy, starting with media.

Bug-AGL: SPEC-5029

Change-Id: I1ae0aca4a7a8218e69e4286c863f01509a1cccb7
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
5 months agoFix late initialization warning 58/29558/2
Scott Murray [Thu, 21 Dec 2023 22:37:57 +0000 (17:37 -0500)]
Fix late initialization warning

A late initialization warning was being triggered when leaving the
home/dashboard page when the random hybrid animation is disabled.
Initialize the associated timer member as null and add logic to
avoid referencing it in the non-random case where the timer does
not get created.

Bug-AGL: SPEC-5027

Change-Id: I63bd21db3005f70f2fe0d2d34181d0079cd25b00
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
5 months agoAdd application launcher support 57/29557/2
Scott Murray [Thu, 21 Dec 2023 22:22:52 +0000 (17:22 -0500)]
Add application launcher support

Changes:
- Add required agl-shell and applauncher gRPC API source and
  generated files.
- Remove unused deprecated databroker gRPC API files as cleanup.
- Add app launcher helper object and associated RiverPod provider.
  The implementation is based on code from the old Flutter
  homescreen.  There will likely be follow up work to use the
  recent changes to the agl-shell gRPC API to handle display
  setting for applications needing remote displays.
- Wire up application enumeration and starting in the app page.
  A placeholder generic application icon has been added that will
  be used for the external applications for now, as the SVG icons
  being used with the old homescreens are not really suitable.
- Wire up activating the homescreen again if the bottom panel is
  touched after an external application has been started.

Bug-AGL: SPEC-5026

Change-Id: I01de4760cfd098d3b5f2e6843ad9103a8ea87935
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
5 months agoImplement audio settings 42/29542/2
Scott Murray [Sun, 17 Dec 2023 20:48:21 +0000 (15:48 -0500)]
Implement audio settings

Changes:
- Rework KUKSA.val "VAL" gRPC API implementation to separate it
  from the vehicle model + notifier, and more easily allow using
  it from other notifiers.
- Move volume handling from the vehicle model + notifier to the
  audio set for clarity.
- Wire up the new VSS audio signals in the audio notifier. The
  "rearFront" variable naming has been changed to "fade" in
  several places to match expected terminology.
- Add a balance slider to the audio settings page.
- Change the min/max labels on the fade slider to be Text instead
  of Icon's since we do not have the equivalent to use with the
  balance slider, and text seems like it'd be what you would want
  for any potential future internationalization.
- Rework configuration file to be usable from anywhere via a
  RiverPod Provider instead of tied to the vehicle notifier code,
  and shifted the background and hybrid animation flags to be handled
  with it.  This change removes the built-in asset with defaults in
  favor of maintaining the defaults for the ICS environment in the
  AppConfig and KuksaConfig classes, with a goal of avoiding the need
  for using async methods in the config provider.
- Change some notifiers from using StateNotifier to the RiverPod
  2.0 Notifier class for improved flexibility.  The other notifiers
  will be updated in future work.
- Added select's to several ref.watches in the new hybrid animation
  code to avoid unnecessary repaints.
- Fix several spelling issues in method and parameter names
  across the codebase.

Bug-AGL: SPEC-5001

Change-Id: Iefae417fa870405d659303497d96e519e6b6d1de
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
5 months agoHybrid animation from env variable 28/29528/2
Lisandro Pérez Meyer [Thu, 14 Dec 2023 16:24:42 +0000 (13:24 -0300)]
Hybrid animation from env variable

This commit changes central hybrid animation on dashboard screen.
For now we can set from env randomHybridAnimation variable.
If true animation should be switching randomly. If false just
setting proper hybrid mode based on speed and RPM value.

Also increase childLocks touch target

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I71f09c63bd1bfeda174f92feafc58019c23d07cb
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
5 months agoMore signaling fixes 10/29510/1
Scott Murray [Fri, 8 Dec 2023 01:28:48 +0000 (10:28 +0900)]
More signaling fixes

Changes:
- Fixed parsing of engine speed from databroker response to use
  uint32 again to match VSS type.
- Shifted engine speed definitions in Vehicle class next to
  vehicle speed since that seems a bit saner than having it down at
  the bottom with the temperature values.
- Removed duplicate temperature state from temperature control
  widget, and pushed the use of the providers from the HVAC widget.
  The existing scheme was somewhat broken with respect to having the
  values managed with RiverPod, e.g. new values from external updates
  would not show up until switching away and back to the HVAC tab.
- Moved HVAC "SYNC" button state into the Vehicle state class to
  manage it with RiverPod, and allow use from both the HVAC and
  temperature widgets so that the expected behavior can actually be
  implemented.
- Fixed brace usage in a couple of debugPrint statements.

Bug-AGL: SPEC-4999

Change-Id: I07ea49d20fedca47e6f9e54f45ad34296e0a873c
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
6 months agoVSS signal fixes 94/29494/1
Scott Murray [Wed, 29 Nov 2023 20:29:59 +0000 (15:29 -0500)]
VSS signal fixes

Changes:
- Fix sets of HVAC and volume control signals to update the
  actuator target value instead of the current value.  With the
  KUKSA.val ecosystem, it is the actuator implementation / backend
  that updates the current value after actuating.
- Add authorization token to subscribe request metadata if it is
  present.
- Switch type used for engine speed to double to match VSS signal
  definition.  This fixes receiving updates, and avoids needing
  to convert types as well.
- Added logic to push out the HVAC fan speed setting and handle
  external updates.
- Remove unused core/constants/paths.dart file to avoid confusion
  over VSS signals used and their variable naming.

Bug-AGL: SPEC-4999

Change-Id: Ifbf69af25e3c563e9c707a4145089e4242b89bcd
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
6 months agoUpdate HVAC fan. 85/29485/3
Lisandro Pérez Meyer [Tue, 28 Nov 2023 16:40:59 +0000 (13:40 -0300)]
Update HVAC fan.

This also removes commented out code.

Original by Sabin Sajeevan <ssajeevan@ics.com>.

Bug-AGL: SPEC-4971

Change-Id: I31c3b3046f6e3bdd9cc641d403467eda11144f31
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoRefactor: Dispaly user name 67/29467/1
Lisandro Pérez Meyer [Thu, 23 Nov 2023 14:48:25 +0000 (11:48 -0300)]
Refactor: Dispaly user name

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>
Bug-AGL: SPEC-4971

Change-Id: I58c7f3281260fecc04515b8b7680955ab066c9eb
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoUpdate volume bar. 55/29455/2
Lisandro Pérez Meyer [Tue, 21 Nov 2023 17:14:02 +0000 (14:14 -0300)]
Update volume bar.

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I80ed2fb908488dce3eb88b2cdb361ea9802d9a6b
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoUpdate: Update gitignore file. Exclude vscode configuration. 54/29454/1
Lisandro Pérez Meyer [Tue, 21 Nov 2023 13:20:50 +0000 (10:20 -0300)]
Update: Update gitignore file. Exclude vscode configuration.

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: Ibbb322950b680a50629dfdc40ecd7bb3e481728d
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoDate time updates 51/29451/3
Lisandro Pérez Meyer [Mon, 20 Nov 2023 20:47:26 +0000 (17:47 -0300)]
Date time updates

Original from Sabin Sajeevan <ssajeevan@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I7a961e57715fdbf8b05f54dfcf8e56159cadd068
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoRefactor: env variables. 50/29450/1
Lisandro Pérez Meyer [Mon, 20 Nov 2023 13:05:49 +0000 (10:05 -0300)]
Refactor: env variables.

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I95f23d4f475aa7db82b6d34f2fc62e9f10092a75
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoSet environment variables for enabling debugging screen and main animation. 48/29448/4
Lisandro Pérez Meyer [Fri, 17 Nov 2023 17:11:58 +0000 (14:11 -0300)]
Set environment variables for enabling debugging screen and main animation.

Change-Id: Ia4100f300b7f8507564ef80a1fc56c2352cfd5ce
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoTurn off device preview. 47/29447/1
Lisandro Pérez Meyer [Fri, 17 Nov 2023 15:26:24 +0000 (12:26 -0300)]
Turn off device preview.

Bug-AGL: SPEC-4971

Change-Id: I46b8567195f932953570136374f3308fbbb9fd52
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoFix rebase issue 44/29444/1
Scott Murray [Fri, 17 Nov 2023 14:56:24 +0000 (23:56 +0900)]
Fix rebase issue

The update of the ValClientHelper constructor arguments seems to
have been missed in a rebase of an internal change, update caller
to fix the build.

Bug-AGL: SPEC-4971

Change-Id: Ie6342bbf7bdfcd4d0945db078b5f002d2ebfccbb
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
6 months agoDisable value animation at start up % update FuelLevel path. 43/29443/3
Lisandro Pérez Meyer [Fri, 17 Nov 2023 12:17:29 +0000 (09:17 -0300)]
Disable value animation at start up % update FuelLevel path.

Also:
 - Remove some warnings.
 - Improvements of hvac temp buttons.

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: Ic10e9ec5ec79f79f63d951469924325f29ea3fa7
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoBug fixes. Fixed Fan mode selection off state bug. 42/29442/2
Lisandro Pérez Meyer [Fri, 17 Nov 2023 01:44:34 +0000 (22:44 -0300)]
Bug fixes. Fixed Fan mode selection off state bug.

Fixes ICS' internal AGL-48,49,50.

Original from Sabin Sajeevan <ssajeevan@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I66c875551a69a1b53eee2d6e1d3fa725b20ff41b
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoDisable value animation at start up % update FuelLevel path. 40/29440/3
Lisandro Pérez Meyer [Thu, 16 Nov 2023 18:42:22 +0000 (15:42 -0300)]
Disable value animation at start up % update FuelLevel path.

Remove some warnings.

Original from: Dominik Wawrzonek <dwawrzonek@ics.com>

Bug-AGL: SPEC-4971

Change-Id: I3693fa74f7995b4dcb016812403ed800702cb81c
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoUpdate Kuksa databroker configuration scheme 15/29415/1
Scott Murray [Wed, 15 Nov 2023 22:24:08 +0000 (07:24 +0900)]
Update Kuksa databroker configuration scheme

Rework Kuksa databroker configuration to also read a configuration
yaml file from /etc/xdg/AGL/ics-homescreen.yaml at runtime to allow
overriding the built-in default configuration.  The latter is left
as is with the addition of an explicit disabling of TLS, to still
match the internal test setup at ICS.  The AGL build will supply
a runtime configuration that enables TLS and an authorization token.

Additionally:
- the ValClientHelper constructor has been changed to take the
  stub and authorization token as arguments to allow authorization
  with the VAL API requests.  The channel argument has been
  removed since it is not used, only the stub is.
- the apparently unused vss_provider.dart source file has been
  removed to avoid potential confusion.

Bug-AGL: SPEC-4969

Change-Id: Ic7b867eaf565ef22f2e70df0afe7b5272b604d04
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
6 months agoRe enable background animation. 14/29414/1
Lisandro Pérez Meyer [Wed, 15 Nov 2023 17:12:34 +0000 (14:12 -0300)]
Re enable background animation.

Bug-AGL: SPEC-4969

Change-Id: I7af59c4df7b3697d01f31d174bc808b87413cb66
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoRename config directory to avoid collisions 11/29411/2
Scott Murray [Tue, 14 Nov 2023 23:06:48 +0000 (08:06 +0900)]
Rename config directory to avoid collisions

The application was failing to build due to the presence of the
"config" directory, which seems to conflict with the generation
of files with "flutter config" during builds with meta-flutter's
flutter-app bbclass.  Rename the directory and update references
to it to allow building.

Bug-AGL: SPEC-4969

Change-Id: I5d36d8fb2c91f0a1aa6c4deb86a040424bc35ac5
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
6 months agoFix hybrid animation. 12/29412/2
Lisandro Pérez Meyer [Wed, 15 Nov 2023 02:17:03 +0000 (23:17 -0300)]
Fix hybrid animation.

Originally by david.poole <dpoole@ics.com>.

Bug-AGL: SPEC-4969

Change-Id: Ia22852ae639bd38ab77f74c58f8a763f4ef39e02
Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>
6 months agoInitial cleanup push.
Lisandro Pérez Meyer [Tue, 14 Nov 2023 20:20:58 +0000 (17:20 -0300)]
Initial cleanup push.

Based on agldemo2024 on commit 2a5dc04d801134338150c3f6afc67eaa65599763

Disable device preview.

Disable Lottie animation.

The original commit was b3c493c340fcb4bb0a937692838fc830bec3e9ea
but I am just keeping this change, because the json did not really
needed to change. I think.

Signed-off-by: Lisandro Pérez Meyer <lpmeyer@ics.com>