• Stars
    star
    241
  • Rank 167,643 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created about 10 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SmartDeviceLink In-Vehicle Software and Sample HMI

Slack Status Github Actions Build Status Jenkins Build Status Jenkins Build Status Jenkins Build Status

SmartDeviceLink (SDL)

SmartDeviceLink (SDL) is a standard set of protocols and messages that connect applications on a smartphone to a vehicle head unit. This messaging enables a consumer to interact with their application using common in-vehicle interfaces such as a touch screen display, embedded voice recognition, steering wheel controls and various vehicle knobs and buttons. There are three main components that make up the SDL ecosystem.

  • The Core component is the software which Vehicle Manufacturers (OEMs) include in their vehicle head units. Integrating this component into their head unit and HMI based on a set of guidelines and templates enables access to various smartphone applications.
  • The optional SDL Server can be used by Vehicle OEMs to update application policies and gather usage information for connected applications.
  • The iOS and Android libraries are implemented by app developers into their applications to enable command and control via the connected head unit.

SDL Core

The Core component of SDL runs on a vehicle's computing system (head unit). Core’s primary responsibility is to route messages between connected smartphone applications and the vehicle HMI. It can connect a smartphone to a vehicle's head unit via a variety of transport protocols such as Bluetooth, USB, Android AOA, and TCP. Once a connection is established, Core discovers compatible applications and displays them to the driver for interaction via voice or display. The Core component is configured to follow a set of policies defined in its local policy database and updated by a policy server. The messaging between a connected application and SDL Core is defined by the Mobile API and the messaging between SDL Core and the vehicle is defined by the HMI API.

Pull Requests Welcome!

Environment

Currently supported:

  • Ubuntu Linux 18.04 with GCC 7.5.x
  • Ubuntu Linux 20.04 with GCC 9.3.x
  • C++11 standard

Getting Started

See the Getting Started guide in the developer portal for instructions on how to build and start SDL Core.

Connect a Web HMI

After setting up SDL Core, you will need to connect it to an external HMI. The HMI component of SDL needs to be developed separately from this project, and should be tailored to your specific head unit. Several sample browser-based HMIs are available for testing purposes:

  1. The Generic HMI (preferred) is a reference implementation for an SDL-connected HMI, including examples of many of the UI elements and templates available to SDL applications.
  2. The SDL HMI emulates a full infotainment system which includes a simplified SDL component.

See the HMI Development Guide for more information on building your own HMI.

Manticore

If you are just developing an SDL-connected application and simply want an environment to test it in, it is not necessary to build SDL Core from scratch. You can use our Manticore project first, which creates a testing environment in the cloud using SDL Core and the Generic HMI.

Frequently Asked Questions

If you have any questions regarding the setup of SDL Core or regarding the integration of SDL into a head unit, first visit our SDL Core FAQ. If you still have questions, you can post a question in the core-help channel of our Slack group (sign up here).

Additional References

Contributions

Conversation regarding the design and development of SmartDeviceLink technology is managed via the SDL Evolution Process. We also encourage interested parties to write issues and submit pull requests right here in the GitHub repository. If you choose to do so, please read our Contributing Guide beforehand.

More Repositories

1

sdl_java_suite

SmartDeviceLink libraries for Android, Java SE, and Java EE
Java
186
star
2

sdl_ios

Get your app connected to the πŸš™, make your users feel like a 🌟
Objective-C
169
star
3

sdl_evolution

Tracking and proposing changes to SDL's public APIs.
Objective-C
33
star
4

sdl_server

The SmartDeviceLink (SDL) server handles authentication, data collection, and basic configurations for SDL connected vehicles.
JavaScript
20
star
5

sdl_app_library_guides

DocDown Guide Content for
16
star
6

sdl_javascript_suite

SmartDeviceLink library for applications developed in JavaScript
JavaScript
15
star
7

rpc_spec

Spec for RPC messages
Python
15
star
8

protocol_spec

Describes the communication protocol between a smartdevicelink enabled head unit and mobile application
14
star
9

sdl_hmi

JavaScript
14
star
10

rpc_builder_app_ios

App designed to allow free testing of the SDL Interface during development
Objective-C
13
star
11

relay_app_ios

Objective-C
13
star
12

sdl_hmi_integration_guidelines

Integration Guidelines for SDL Core into the vehicle HMI
12
star
13

generic_hmi

A sample HMI to use with sdl_core
JavaScript
8
star
14

sdl_core_docker

Docker build for SDL Core
Shell
7
star
15

manticore

Dynamically provision SDL Core and SDL HMI instances in the cloud
JavaScript
6
star
16

sdl_atf

Automated Tests for SmartDeviceLink
Lua
5
star
17

sdl_core_guides

3
star
18

rpc_builder_app_android

RPC builder for Android
Java
3
star
19

sdl_core_documentation

Software Architecture Documentation for SDL Core
3
star
20

sdl_security_ios

A TLS based security library built to interact with sdl_ios and provide TLS certificate authentication and encryption / decryption
Objective-C
3
star
21

sdl_requirements

Collection of requirements/technical tasks for new sdl_core features
2
star
22

sdl_markdown_spec

Specification writing documentation in DocDown
2
star
23

sdl_security_java_suite

Open Source TLS Based Security Library for SDL Java Suite
C
2
star
24

sdl_overview_guides

Python
2
star
25

sdl_atf_test_scripts

Test scripts for sdl_atf
Lua
2
star
26

sdl_whitepaper

Technical overview whitepaper markdown repository
1
star
27

SHAIDkit_js

A Javascript API wrapper for SHAID
JavaScript
1
star
28

hardwarevalidator_android

Hardware Validator - Android
1
star
29

sdl_server_guides

Documentation for the sdl_server
1
star
30

manticore-images

A repository of the code used to construct images for use by Manticore
JavaScript
1
star
31

sdl_shaid_docs

Documentation in DocDown for SHAID.
1
star
32

bson_c_lib

Library for converting a map to and from BSON format
Shell
1
star
33

sdl_broker

JavaScript
1
star
34

sdl_ci

Documentation and configurations for Jenkins CI projects tied to sdl_core
1
star
35

sdl_core_ci

Repository for housing continuous integration related scripts and files for SDL Core
Shell
1
star