LoginSignup
1
1

More than 3 years have passed since last update.

SmartDeviceLink WEB_VIEW by javascript suites を試す

Last updated at Posted at 2020-12-03

まず結果。こんな感じで動きます。

Generic-HMI.gif

Docker はてきとうに用意してね

$ docker run -d -p 12345:12345 -p 8080:8080 -p 8087:8087 -p 3001:3001 --name core smartdevicelink/core:latest

これで、http://localhost:8080 でひらくのは、sdl_hmi で、なんとなくカーナビっぽいHMIなんだけど、実験つかいにくいというか古いUI.

というか、docker hub で build されたイメージが、2017年とかでふるかった。orz

てことで

$ git clone https://github.com/smartdevicelink/sdl_core_docker.git --depth=1
$ cd sdl_core_docker
$ cd master
$ docker build .

エラー出た。めんどうだ。

Generic HMI をためす

手抜きでごめん。ぼくは、Windows 10 の WSL な Ubuntu でためした。
Mac でも、普通に node 環境があれば、動くんじゃないかなと思う。

ほんとうは、上記 docker といっしょに環境作って一撃で動かすとかしたいけど、今は時間がなくてごめん。

sdl_hmi が Ford っぽいやつ
generic_hmi が manticore っぽいやつ

$ git clone https://github.com/smartdevicelink/generic_hmi.git --depth=1

$ git submodule init # deploy_server.sh ないでもやってくれてそう
$ git submodule update # deploy_server.sh ないでもやってくれてそう

$ nvm use 12
$ npm install
$ npm run build

$ ./deploy_server.sh

ブラウザで build/index.html をひらく

WEBSOCKET_PORT = 8081
FILESERVER_PORT = 8082
がうごくよ

3rd_party の make install がとまっている感じ

127.0.0.1 と localhost の関係であれする

smartdevlicelink.ini の 127.0.0.1 が、docker だと外からバインドできない。0.0.0.0 がいいかな
sdl_core port 2020 が、websocket for webengine ぽい

FROM ubuntu:18.04

ENV CORE_BRANCH=master \
    CORE_CWD=/usr/sdl_core \
    BUILD_CWD=/usr/sdl_build

RUN apt-get update && apt-get install -y --no-install-recommends \
        git \
        ca-certificates \
        sudo

RUN git clone --depth 1 -b $CORE_BRANCH https://github.com/smartdevicelink/sdl_core.git $CORE_CWD   

ENV DEBCONF_NOWARNINGS yes

RUN apt-get install -y --no-install-recommends \
    cmake build-essential sqlite3 libsqlite3-dev libssl1.0-dev libssl1.0.0 libusb-1.0-0-dev libudev-dev libgtest-dev libbluetooth3 libbluetooth-dev bluez-tools libpulse-dev python3-pip python3-setuptools

WORKDIR $CORE_CWD

RUN git submodule init \
    && git submodule update

RUN mkdir $BUILD_CWD
WORKDIR  $BUILD_CWD

RUN cmake -DENABLE_HMI_PTU_DECRYPTION=OFF $CORE_CWD \
    && make install-3rd_party \
    && make -j `nproc` install


# Starting SmartDeviceLink Core
# /usr/sdl_build/bin/smartDeviceLinkCore: error while loading shared libraries: libexpat.so: cannot open shared object file: No such file or directory
#
# why ?
#
WORKDIR ${BUILD_CWD}/src/3rd_party/expat-2.1.0/
RUN make install

RUN ldconfig

WORKDIR ${BUILD_CWD}/bin


# TODO: change 127.0.0.1 to 0.0.0.0 in smartdevicelink.ini
RUN sed -i -e 's/ServerAddress = 127.0.0.1/ServerAddress = 0.0.0.0/' smartDeviceLink.ini

# Expose the following ports
#   2020: Expose WebEngine Web Socket port
#   3001: Exposes Core's file system
#   8087:  Expose SDL Core's Web Socket port. Used to comunicate with the HMI
#   12345: Expose SDL Core's primary port. Used to communicate with the SDL Core instance over TCP
EXPOSE 2020 3001 8087 12345

# Run the start script that will launch SDL Core!
ENTRYPOINT $PWD/start.sh

docker build -t sdlcore .
docker run -d -p 12345:12345 -p 8087:8087 -p 3001:3001 -p 2020:2020 --name sdlcore sdlcore

apt install vim less iproute2

docker exec -it sdlcore bash
apt install vim
vi smartdevicelink.ini

ip address show

3285 DEBUG [07:15:17,404][RPCServiceImpl] Conversion result: { "info" : "WEB_VIEW AppHmiType is absent in application policies, because they are empty",
"resultCode" : "DISALLOWED",
"success" : false
}

Change the contents of that array to include this instead: [“Base-4”, “Location-1", “Notifications”, “DrivingCharacteristics-3", “VehicleInfo-3”, “PropriataryData-1", “PropriataryData-2”, “ProprietaryData-3", “Emergency-1”, “Navigation-1", “Base-6”, “OnKeyboardInputOnlyGroup”, “OnTouchEventOnlyGroup”, “DiagnosticMessageOnly”, “DataConsent-2”, “BaseBeforeDataConsent”, “SendLocation”, “WayPoints”, “BackgroundAPT”]

also
"appHMIType: [" WEB_VIEW "] to the app_policies.

At the time of this proposal being in review,
a set of driver distraction rules are being created and proposed to have
the possibility to enable 3rd party using the projection mode in the future.
The following bullet points are items that will be described further in the ruleset:

  • minimum font size
  • minimum contrast between font and background
  • min/max brightness (for day and night mode)
  • number of buttons
  • minimum size of a button
  • no customized keyboard
  • no video playback (exceptions in standstill per countries)
  • NHTSA related guidelines
    • Amount of text (button and text fields)
    • number of lines of text
    • Complexity of use cases (number of steps to fulfill a use case)

More items may be included in the ruleset as they become Driver Distraction affected.

/generic_hmi/src/js/Flags.js
https://sdl-webengine-app-store-example.s3.amazonaws.com/app-directory.json

Something went wrong

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1