SmartDeviceLink (SDL)

SmartDeviceLink 车载软件和人机界面样本。「SmartDeviceLink In-Vehicle Software and Sample HMI」

Github stars Tracking Chart

SmartDeviceLink (SDL)

SmartDeviceLink (SDL) 是一套标准的协议和信息,可将智能手机上的应用程序连接到车头装置。这种消息传递使消费者能够使用常见的车载界面(如触摸屏显示器、嵌入式语音识别、方向盘控制和各种车辆旋钮和按钮)与他们的应用程序进行交互。构成SDL生态系统的主要组件有三个。

Core 组件是车辆制造商 (OEM) 在其车头装置中包含的软件。根据一套准则和模板将该组件集成到其车头装置和 HMI 中,可以访问各种智能手机应用程序。

可选的 SDL 服务器 可供车辆 OEM 使用,以更新应用策略并收集连接应用的使用信息。

应用程序开发人员可在其应用程序中实现 iOSAndroid 库,以实现通过连接的车头装置进行命令和控制。

SDL Core

SDL 的 Core 组件在车辆的计算系统(头部单元)上运行。Core 的主要职责是在连接的智能手机应用程序和车辆 HMI 之间路由消息。它可以通过各种传输协议(如蓝牙、USB、Android AOA 和 TCP)将智能手机连接到车辆的头部单元。一旦建立了连接,Core 就会发现兼容的应用程序,并将其显示给驾驶员,以便通过语音或显示屏进行交互。Core 组件被配置为遵循在其本地策略数据库中定义并由 策略服务器 更新的一组策略。连接的应用程序和 SDL Core 之间的消息传递由 Mobile API 定义,SDL Core 和车辆之间的消息传递由 HMI API 定义。

欢迎 PR。

环境

目前支持:

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

入门

有关如何构建和启动 SDL Core 的说明,请参见开发人员门户中的 入门指南

连接 Web HMI

设置 SDL Core 后,您需要将其连接到外部 HMI。SDL 的 HMI 组件需要与本项目单独开发,并应根据您的特定头装置进行定制。有几个基于浏览器的 HMI 示例可供测试使用。

  1. 通用 HMI(首选)是 SDL 连接的 HMI 的参考实现,包括 SDL 应用程序可用的许多 UI 元素和模板的示例。
  2. SDL HMI 模拟了一个完整的信息娱乐系统,其中包括一个简化的 SDL 组件。

有关构建您自己的HMI的更多信息,请参阅 《HMI开发指南》

Manticore

如果您只是在开发一个与 SDL 连接的应用程序,并且只是想要一个环境来测试它,那么就没有必要从头开始构建 SDL Core。您可以先使用我们的 Manticore 项目,该项目使用 SDL Core 和通用人机界面在云端创建一个测试环境。

常见问题解答

如果您对 SDL Core 的设置或将 SDL 集成到磁头单元方面有任何疑问,请首先访问我们的 SDL Core FAQ。如果您仍有问题,可以在我们 Slack 组的 core-help 频道中发布问题(在此 注册)。

其他参考资料

贡献

有关 SmartDeviceLink 技术的设计和开发的对话通过 SDL 演进过程 进行管理。我们还鼓励感兴趣的各方在 GitHub 仓库中编写问题和提交拉取请求。如果您选择这样做,请事先阅读我们的 贡献指南


Overview

Name With Ownersmartdevicelink/sdl_core
Primary LanguageC++
Program languageCMake (Language Count: 7)
PlatformLinux
License:BSD 3-Clause "New" or "Revised" License
Release Count75
Last Release Name8.2.0 (Posted on )
First Release Name4.0.0-RC1 (Posted on )
Created At2014-10-02 15:16:26
Pushed At2022-10-26 15:46:58
Last Commit At2022-10-26 11:34:13
Stargazers Count238
Watchers Count86
Fork Count247
Commits Count5k
Has Issues Enabled
Issues Count1391
Issue Open Count68
Pull Requests Count2021
Pull Requests Open Count15
Pull Requests Close Count522
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Slack Status
codecov.io
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) implement 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.

Pull Requests Welcome!

Documentation

SDL Core

The Core component of SDL runs on a vehicle's computing system (head unit). Core’s primary responsibility is to pass messages between connected smartphone applications and the vehicle HMI, and pass notifications from the vehicle to those applications. 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 implemented into the vehicle HMI based on the integration guidelines above. The core component is configured to follow a set of policies defined in a policy database and updated by a policy server. The messaging between a connected application and core is defined by the Mobile API and the messaging between sdl core and the vehicle is defined by the HMI API.

Project Status

We're ramping up our efforts to get SmartDeviceLink developed and maintained directly in the open. For the Mobile libraries, we're expecting better integration soon, SDL Core is slightly more complicated. We are currently working on generating documentation, creating a developer portal, an open forum, Mobile validation, and everything else that we've been asked for to renew the community's interest in this project. From a technical standpoint, SDL is stable, and the most work is being put into making it a more robust solution for app connectivity. We are, however, definitely looking for and interested in other people and company's contributions to SDL whether it be feature based, bug fixes, healthy conversation, or even just suggestions for improvement.

Getting Started

A quick guide to installing, configuring, and running an instance of the SDL Core on a linux OS.

  1. Clone this repository
  2. Create a folder for your build outside of the source folder and run cmake {path_to_sdl_core_source_folder} from the build folder you created
  3. If there are any dependency issues, install missing dependencies
  4. Run the following commands to compile and install smartdevicelink
%make
%make install

Start SDL Core

Once SDL Core is compiled and installed you can start it from the executable in the bin folder

%cd bin/
%./start.sh

Start WEB HMI

Web HMI is separated from SDL Core and located in another repository. So to make it workable please do next steps.

  1. Clone http://github.com/smartdevicelink/sdl_hmi.git
  2. Follow the instruction from readme file in sdl_hmi repository.

A quick note about dependencies

The dependencies for SDL Core vary based on the configuration. You can change SDL Core's configuration in the top level CMakeLists.txt. We have defaulted this file to a configuration which we believe is common for people who are interested in getting up and running quickly, generally on a Linux VM.

Dependencies list

To the top