Copyright (C) 2014-2016, Jaguar Land Rover
This document is licensed under Creative Commons Attribution-ShareAlike 4.0 International.
Version 0.5.1
This document describes the installation process for the RVI project
on Raspbian. Packages are also available for
Ubuntu and Raspbian.
See BUILD.md
for building from source.
Please see README.md
for a general description of the project
and its structure.
Please see CONFIGURE.md
for details on configuring and launching
the system once it has been built.
The first milestone of the RVI project is the HVAC demo. Please see
hvac_demo/README.md
for details on how to setup, launch and
drive the demo.
In order to build the system, the reader is assumed to be able to:
- Have a basic understanding of Linux system operations.
- Install packages on the system.
Please note that the configuration process described in
CONFIGURE.md
may have additional skill requirements.
- The Raspbian system has the latest updates installed.
- The user has sudo access to install packages.
- There is at least 5GB of space availabled for packages and code.
Download the Raspbian package from https://github.com/PDXostc/rvi_core/releases. Then extract the tarball to get packages for Erlang and RVI, as well as an install script.
Make the install script executable:
sudo chmod +x installRVI
Then run the install script:
./installRVI
This does the following:
- Extracts the Erlang tarball
- Installs the required Erlang packages
erlang-base
erlang-asnl
erlang-crypto
erlang-eunit
erlang-public key
erlang-ssl
erlang-syntax-tools
- Installs other dependencies (
bluez
andpython-jsonrpclib
) - Installs
rvi
- Starts
rvi
viasystemctl
- Checks the status of
rvi
viasystemctl
.
To confirm that RVI has started, use systemctl
as root user:
systemctl status rvi
Expected output:
● rvi.service - Remote Vehicle Interaction Service
Loaded: loaded (/lib/systemd/system/rvi.service; disabled)
Active: active (running) since Tue 2016-02-23 18:30:03 UTC; 48ms ago
Process: 6049 ExecStart=/usr/bin/rvi_ctl -c /etc/rvi/rvi.config start (code=exited, status=0/SUCCESS)
Main PID: 6081 (run_erl)
CGroup: /system.slice/rvi.service
├─6081 run_erl -daemon /tmp/rvi_6049/ /var/log/rvi exec erl -boot /tmp/rvi_6049/rvi/start -sname rvi -config /tmp/rvi_6049/rvi/sys -setcookie rvi_cookie
├─6084 /usr/lib/erlang/erts-7.2/bin/erlexec -boot /tmp/rvi_6049/rvi/start -sname rvi -config /tmp/rvi_6049/rvi/sys -setcookie rvi_cookie
├─6093 sh -c "/usr/lib/erlang/erts-7.2/bin/epmd" -daemon
└─6094 /usr/lib/erlang/erts-7.2/bin/epmd -daemon
Find out which services are registered through rvi_get_services
:
/usr/lib/rvi_core/rvi_get_services
The command should return no output, since we have not registered any services yet.
Register a service by calling rvi_service
-- start with "hello":
/usr/lib/rvi_core/rvi_service hello
Expected output:
RVI General Service.
RVI node URL: http://localhost:9001
Service: genivi.org/vin/default_vin/hello
Press enter to quit:
In another terminal, call rvi_get_services
again to see the newly registered service:
genivi.org/vin/default_vin/hello
Invoke the service through rvi_call
and the full service name:
/usr/lib/rvi_core/rvi_call genivi.org/vin/default_vin/hello
In terminal 1 (where you called rvi_service
), you should see the following output:
Service invoked!
args: {}
In terminal 2 (where you called rvi_call
), you should see the following output:
RVI Node: http://localhost:9001
Service: genivi.org/vin/default_vin/hello
args: {}
You can pass arguments to a service call with the format name=value:
/usr/lib/rvi_core/rvi_call genivi.org/vin/default_vin/hello \
a=b message=hello
The installer configures a release with default (insecure) values.
See CONFIGURE.md
for details on configuring and creating a
developer and production release that can be launched.