Expand Minimize Picture-in-picture Power Device Status Voice Recognition Skip Back Skip Forward Minus Plus Play Search
Documentation
Sidebar

4.8. Development View

4.8.1. Implementation Technologies

  • C++98 language is selected as a programming language for SmartDeviceLink as a OS and CPU architecture independent.
  • CMake tool-chain selected as a cross-platform building tools.
  • Google Test with Google Mock extension is chosen as an opensource C++ test framework.

4.8.2. Modules and Code Base Organization

Development view organizes SmartDeviceLink components into logical and abstract groups called layers. The layers describe the major tasks that the components perform. The layers have different responsibilities and different providers

Development View Diagram

Development View

Elements description

OS Layer

  • Responsibility
    • Providing high-level interface for OS and hardware resource manipulation.
  • Relations:
    • Used by all other layers
  • Interfaces:
    • Provides threads, timers, synchronization, data, time, file and logging interfaces
  • Behavior:
    • Wrapping all OS-system-specific API to C++ Objects.
  • Constraints:
    • N/A

Transport Layer

  • Responsibility
    • Encapsulates mobile and HMI transports usage
  • Relations:
    • Protocol layer
  • Interfaces:
    • TransportManager
    • HMIMessageHandler
  • Behavior:
    • Opens connection
    • Performs device discovery
    • Sends / receives messages
  • Constraints:

Protocol Layer

  • Responsibility:
    • Encapsulates protocol manipulation.
  • Relations:
    • Application layer
    • Transport layer
  • Interfaces:
    • ProtocolHandler
    • ConnectionHandler
    • SecurityManager
  • Behavior:
    • Parses and handles messages from transport layer according to Protocol
    • Notify upper level about new transport and protocol layer events
    • Provides Transport Layer manipulation by upper layers
  • Constraints:

Application Layer

  • Responsibility:
    • Represents main business logic implementation
  • Relations:
    • Protocol Layer
  • Interfaces:
    • ApplicationManager
    • MediaManager
    • RPC Service
    • RequestController
    • App Launch
    • Resumption
    • Plugin Manager
    • RC RPC Plugin
    • SDL RPC Plugin
    • VehicleInfo Plugin
    • Policy
  • Behavior:
    • Main business logic functionality.
  • Constraints:

4.8.3. Development Environment and Standards

  • Minimum development and testing environment for Ubuntu:
    • Debug Environment: Ubuntu 16.04 LTS x32/x64, Qt 5.3
    • Compiler: GCC 5.3.1 (OS Ubuntu), Lua 5.2
    • Build system: Cmake 3.10.2
  • Recommended development and testing environment for Ubuntu:
    • Debug Environment: Ubuntu 18.04 LTS x32/x64, Qt 5.3
    • Compiler: GCC 7.3.0 (OS Ubuntu), Lua 5.2
    • Build system: Cmake 3.10.2
  • Development and testing environment for SDL Windows x64:
    • Build system: Windows 7 x64, CMake
    • Compiler: Microsoft Visual Studio Express Edition 2013 x64
  • Development and testing environment for SDL Qt for Windows x32:
    • Build system: Windows 7 x32, Qt 5.5, CMake, QT Creator
    • Compiler: Microsoft Visual Studio Express Edition 2010 x32
  • Requirements Management system: LuxProject (JIRA, Confluence)
  • Source Control System: GitHub
  • Issue Tracking System: LuxProject (JIRA)
  • Document Management System: LuxProject (JIRA, Confluence, SVN)
  • Coding style: SDL C++ Style
View on GitHub.com
Previous Section Next Section