The multiple transports feature allows apps connected to Core to start another connection over a different transport for certain services (for example, an app connected over bluetooth using WiFi as a secondary transport for video streaming). This guide will walk you through how to configure the multiple transports feature using the smartDeviceLink.ini
file.
RPC and Hybrid services only run on the Primary Transport
There are three protocol control frames which are used in the implementation of multiple transports
StartService ACK
{ audioServiceTransports : [1, 2] videoServiceTransports : [1, 2] secondaryTransports : [TCP_WIFI] }
Core responds to the proxy's StartService
request with additional parameters audioServiceTransports, videoServiceTransports and secondaryTransports.
secondaryTransports
contains an array of the allowed secondary transports for the current primary transport. audioServiceTransports
and videoServiceTransports
describe which services are allowed to run on which transports (Primary, Secondary, or both). The Proxy uses this information and starts services only on allowed transports.TransportEventUpdate
{ tcpIpAddress : 192.168.1.1 tcpPort : 12345 }
Core sends a TransportEventUpdate to the proxy to provide additional information required to connect over the TCP transport
tcpIpAddress
field is empty, the secondary transport is unavailable and proxy will not send a RegisterSecondaryTransport request RegisterSecondaryTransport
Using the information in the StartService ACK and TransportEventUpdate frames, the proxy sends a RegisterSecondary transport request over the secondary transport.
Add the following lines to smartDeviceLink.ini
[MultipleTransports] ... MultipleTransportsEnabled = true
[MultipleTransports] ... SecondaryTransportForBluetooth = WiFi ;SecondaryTransportForUSB = ;SecondaryTransportForWiFi =
The values which can be used in the SecondaryTransportFor
configuration are WiFi
, Bluetooth
and USB
Modify the services map in smartdeviceLink.ini
to restrict video and audio streaming services to specific transport types.
[ServicesMap] ... AudioServiceTransports = TCP_WIFI VideoServiceTransports = TCP_WIFI, AOA_USB
AudioServiceTransports
/VideoServiceTransports
line is omitted, service will be allowed to run on the primary transportList of secondary transport types
String | Description |
---|---|
IAP_BLUETOOTH | iAP over Bluetooth |
IAP_USB | iAP over USB, and Core cannot distinguish between Host Mode and Device Mode. |
IAP_USB_HOST_MODE | iAP over USB, and the phone is running as host |
IAP_USB_DEVICE_MODE | iAP over USB, and the phone is running as device |
IAP_CARPLAY | iAP over Carplay wireless |
SPP_BLUETOOTH | Bluetooth SPP. Either legacy SPP or SPP multiplexing. |
AOA_USB | Android Open Accessory |
TCP_WIFI | TCP connection over Wi-Fi |