summaryrefslogtreecommitdiff
path: root/sdl_android/src/main/java/com/smartdevicelink/proxy/interfaces/ISdl.java
blob: d7e2758c680234fa7ef4961428e7e774d1d1eb03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
package com.smartdevicelink.proxy.interfaces;

import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.util.Version;
import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import com.smartdevicelink.streaming.audio.AudioStreamingCodec;
import com.smartdevicelink.streaming.audio.AudioStreamingParams;
import com.smartdevicelink.streaming.video.VideoStreamingParameters;

import java.util.List;

/*
 * Copyright (c) 2017 Livio, Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following
 * disclaimer in the documentation and/or other materials provided with the
 * distribution.
 *
 * Neither the name of the Livio Inc. nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
@SuppressWarnings("unused")
public interface ISdl {

    /**
     * Starts the connection with the module
     */
    void start();

    /**
     * Ends connection with the module
     */
    void stop();

    /**
     * Method to check if the session is connected
     * @return if there is a connected session
     */
    boolean isConnected();

    /**
     * Add a service listener for a specific service type
     * @param serviceType service type that the listener will be attached to
     * @param sdlServiceListener listener for events that happen to the service
     */
    void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener);

    /**
     * Remote a service listener for a specific service type
     * @param serviceType service type that the listener was attached to
     * @param sdlServiceListener service listener that was previously added for the service type
     */
    void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener);

    /**
     * Starts the video streaming service
     * @param parameters desired video streaming params for this sevice to be started with
     * @param encrypted flag to start this service with encryption or not
     */
    void startVideoService(VideoStreamingParameters parameters, boolean encrypted);

    /**
     * Stops the video service if open
     */
    void stopVideoService();

    /**
     * Starts the video streaming service
     * @param isEncrypted flag to start this service with encryption or not
     * @param parameters desired video streaming params for this sevice to be started with
     */
    IVideoStreamListener startVideoStream(boolean isEncrypted, VideoStreamingParameters parameters);

    /**
     * Starts the Audio streaming service
     * @param encrypted flag to start this service with encryption or not
     */
    void startAudioService(boolean encrypted, AudioStreamingCodec codec, AudioStreamingParams params);

    /**
     * Starts the Audio streaming service
     * @param encrypted flag to start this service with encryption or not
     */
    void startAudioService(boolean encrypted);

    /**
     * Stops the audio service if open
     */
    void stopAudioService();

    /**
     * Start Audio Stream and return IAudioStreamListener
     * @param isEncrypted
     * @param codec
     * @param params
     * @return IAudioStreamListener
     */
    IAudioStreamListener startAudioStream(boolean isEncrypted, AudioStreamingCodec codec, AudioStreamingParams params);

    /**
     * Pass an RPC message through the proxy to be sent to the connected module
     * @param message RPCRequest that should be sent to the module
     */
    void sendRPCRequest(RPCRequest message);

    /**
     * Pass a list of RPC requests through the proxy to be sent to core
     * @param rpcs List of RPC requests
     * @param listener OnMultipleRequestListener that is called between requests and after all are processed
     */
    void sendRequests(List<? extends RPCRequest> rpcs, final OnMultipleRequestListener listener);

    /**
     * Add an OnRPCNotificationListener for specified notification
     * @param notificationId FunctionID of the notification that is to be listened for
     * @param listener listener that should be added for the notification ID
     */
    void addOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener);

    /**
     * Removes an OnRPCNotificationListener for specified notification
     * @param notificationId FunctionID of the notification that was to be listened for
     * @param listener listener that was previously added for the notification ID
     */
    boolean removeOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener);

    /**
     * Add an OnRPCResponseListener for specified response
     * @param responseId FunctionID of the response that is to be listened for
     * @param listener listener that should be added for the response ID
     */
    void addOnRPCListener(FunctionID responseId, OnRPCListener listener);

    /**
     * Removes an OnRPCResponseListener for specified response
     * @param responseId FunctionID of the response that was to be listened for
     * @param listener listener that was previously added for the response ID
     */
    boolean removeOnRPCListener(FunctionID responseId, OnRPCListener listener);

    /**
     * Get SystemCapability Object
     * @param systemCapabilityType
     * @return Object
     */
    Object getCapability(SystemCapabilityType systemCapabilityType);

    /**
     * Get Capability
     * @param systemCapabilityType
     * @param scListener
     */
    void getCapability(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener scListener);

    /**
     * Check if capability is supported
     * @param systemCapabilityType
     * @return Boolean
     */
    boolean isCapabilitySupported(SystemCapabilityType systemCapabilityType);

    /**
     * Add a listener to be called whenever a new capability is retrieved
     * @param systemCapabilityType Type of capability desired
     * @param listener callback to execute upon retrieving capability
     */
    void addOnSystemCapabilityListener(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener listener);

    /**
     * Remove an OnSystemCapabilityListener that was previously added
     * @param systemCapabilityType Type of capability
     * @param listener the listener that should be removed
     */
    boolean removeOnSystemCapabilityListener(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener listener);

    /**
     * Get SdlMsgVersion
     * @return SdlMsgVersion
     */
    SdlMsgVersion getSdlMsgVersion();

    /**
     * Get WiPro version
     * @return byte value representing WiPro version
     */
    byte getWiProVersion();

}