diff options
author | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-06-03 13:32:26 -0400 |
---|---|---|
committer | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-06-03 13:32:26 -0400 |
commit | afb592c0804c55be7a5ba395f181dc4d50d745f5 (patch) | |
tree | 79c9eba3ac7ec2132963f7a6b308b0ff9fedf1c4 | |
parent | f2ee959c1d252d7ecc8537fcb108e8c57f162a8e (diff) | |
download | sdl_android-afb592c0804c55be7a5ba395f181dc4d50d745f5.tar.gz |
Move NAV & PCM code to Android LifecycleManager
2 files changed, 317 insertions, 311 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java index 66fc880f4..d4eeff1df 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java @@ -36,18 +36,40 @@ import android.support.annotation.RestrictTo; import com.smartdevicelink.SdlConnection.SdlSession; import com.smartdevicelink.SdlConnection.SdlSession2; +import com.smartdevicelink.protocol.enums.SessionType; +import com.smartdevicelink.proxy.interfaces.ISdlServiceListener; +import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType; +import com.smartdevicelink.streaming.video.VideoStreamingParameters; import com.smartdevicelink.transport.BaseTransportConfig; import com.smartdevicelink.transport.MultiplexTransportConfig; import com.smartdevicelink.transport.TCPTransportConfig; import com.smartdevicelink.transport.enums.TransportType; +import com.smartdevicelink.util.DebugTool; + +import java.util.concurrent.Callable; +import java.util.concurrent.Executors; +import java.util.concurrent.FutureTask; +import java.util.concurrent.ScheduledExecutorService; /** * The lifecycle manager creates a central point for all SDL session logic to converge. It should only be used by * the library itself. Usage outside the library is not permitted and will not be protected for in the future. + * * @author Bilal Alsharifi. */ @RestrictTo(RestrictTo.Scope.LIBRARY) public class LifecycleManager extends BaseLifecycleManager { + private static final int RESPONSE_WAIT_TIME = 2000; + private ISdlServiceListener navServiceListener; + private boolean navServiceStartResponseReceived = false; + private boolean navServiceStartResponse = false; + private boolean navServiceEndResponseReceived = false; + private boolean navServiceEndResponse = false; + private boolean pcmServiceStartResponseReceived = false; + private boolean pcmServiceStartResponse = false; + private boolean pcmServiceEndResponseReceived = false; + private boolean pcmServiceEndResponse = false; + public LifecycleManager(AppConfig appConfig, BaseTransportConfig config, LifecycleListener listener) { super(appConfig, listener); @@ -59,4 +81,247 @@ public class LifecycleManager extends BaseLifecycleManager { this.session = SdlSession.createSession((byte) getProtocolVersion().getMajor(), sdlConnectionListener, config); } } + + @Override + void onProtocolSessionStarted(SessionType sessionType) { + super.onProtocolSessionStarted(sessionType); + if (sessionType.eq(SessionType.NAV)) { + navServiceStartResponseReceived = true; + navServiceStartResponse = true; + } else if (sessionType.eq(SessionType.PCM)) { + pcmServiceStartResponseReceived = true; + pcmServiceStartResponse = true; + } + } + + @Override + void onProtocolSessionStartedNACKed(SessionType sessionType) { + super.onProtocolSessionStartedNACKed(sessionType); + if (sessionType.eq(SessionType.NAV)) { + navServiceStartResponseReceived = true; + navServiceStartResponse = false; + } else if (sessionType.eq(SessionType.PCM)) { + pcmServiceStartResponseReceived = true; + pcmServiceStartResponse = false; + } + } + + @Override + void onProtocolSessionEnded(SessionType sessionType) { + super.onProtocolSessionEnded(sessionType); + if (sessionType.eq(SessionType.NAV)) { + navServiceEndResponseReceived = true; + navServiceEndResponse = true; + } else if (sessionType.eq(SessionType.PCM)) { + pcmServiceEndResponseReceived = true; + pcmServiceEndResponse = true; + } + } + + @Override + void onProtocolSessionEndedNACKed(SessionType sessionType) { + super.onProtocolSessionEndedNACKed(sessionType); + if (sessionType.eq(SessionType.NAV)) { + navServiceEndResponseReceived = true; + navServiceEndResponse = false; + } else if (sessionType.eq(SessionType.PCM)) { + pcmServiceEndResponseReceived = true; + pcmServiceEndResponse = false; + } + } + + /** + * This method will try to start the video service with the requested parameters. + * When it returns it will attempt to store the accepted parameters if available. + * + * @param isEncrypted if the service should be encrypted + * @param parameters the desired video streaming parameters + */ + @Override + void startVideoService(boolean isEncrypted, VideoStreamingParameters parameters) { + if (session == null) { + DebugTool.logWarning("SdlSession is not created yet."); + return; + } + if (!session.getIsConnected()) { + DebugTool.logWarning("Connection is not available."); + return; + } + + session.setDesiredVideoParams(parameters); + tryStartVideoStream(isEncrypted, parameters); + } + + /** + * Try to open a video service by using the video streaming parameters supplied. + * Only information from codecs, width and height are used during video format negotiation. + * + * @param isEncrypted Specify true if packets on this service have to be encrypted + * @param parameters VideoStreamingParameters that are desired. Does not guarantee this is what will be accepted. + * @return If the service is opened successfully, an instance of VideoStreamingParams is + * returned which contains accepted video format. If the service is opened with legacy + * mode (i.e. without any negotiation) then an instance of VideoStreamingParams is + * returned. If the service was not opened then null is returned. + */ + private VideoStreamingParameters tryStartVideoStream(boolean isEncrypted, VideoStreamingParameters parameters) { + if (session == null) { + DebugTool.logWarning("SdlSession is not created yet."); + return null; + } + if (getProtocolVersion() != null && getProtocolVersion().getMajor() >= 5 && !systemCapabilityManager.isCapabilitySupported(SystemCapabilityType.VIDEO_STREAMING)) { + DebugTool.logWarning("Module doesn't support video streaming."); + return null; + } + if (parameters == null) { + DebugTool.logWarning("Video parameters were not supplied."); + return null; + } + + if (!navServiceStartResponseReceived || !navServiceStartResponse //If we haven't started the service before + || (navServiceStartResponse && isEncrypted && !session.isServiceProtected(SessionType.NAV))) { //Or the service has been started but we'd like to start an encrypted one + session.setDesiredVideoParams(parameters); + + navServiceStartResponseReceived = false; + navServiceStartResponse = false; + + session.startService(SessionType.NAV, session.getSessionId(), isEncrypted); + addNavListener(); + FutureTask<Void> fTask = new FutureTask<>(new CallableMethod(RESPONSE_WAIT_TIME)); + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.execute(fTask); + + //noinspection StatementWithEmptyBody + while (!navServiceStartResponseReceived && !fTask.isDone()) ; + scheduler.shutdown(); + } + + if (navServiceStartResponse) { + if (getProtocolVersion() != null && getProtocolVersion().getMajor() < 5) { //Versions 1-4 do not support streaming parameter negotiations + session.setAcceptedVideoParams(parameters); + } + return session.getAcceptedVideoParams(); + } + + return null; + } + + private void addNavListener() { + // videos may be started and stopped. Only add this once + if (navServiceListener == null) { + + navServiceListener = new ISdlServiceListener() { + @Override + public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted) { + } + + @Override + public void onServiceEnded(SdlSession session, SessionType type) { + // reset nav flags so nav can start upon the next transport connection + navServiceStartResponseReceived = false; + navServiceStartResponse = false; + } + + @Override + public void onServiceError(SdlSession session, SessionType type, String reason) { + // if there is an error reset the flags so that there is a chance to restart streaming + navServiceStartResponseReceived = false; + navServiceStartResponse = false; + } + }; + session.addServiceListener(SessionType.NAV, navServiceListener); + } + } + + /** + * Closes the opened video service (serviceType 11) + * + * @return true if the video service is closed successfully, return false otherwise + */ + @Override + boolean endVideoStream() { + if (session == null) { + DebugTool.logWarning("SdlSession is not created yet."); + return false; + } + if (!session.getIsConnected()) { + DebugTool.logWarning("Connection is not available."); + return false; + } + + navServiceEndResponseReceived = false; + navServiceEndResponse = false; + session.stopVideoStream(); + + FutureTask<Void> fTask = new FutureTask<>(new CallableMethod(RESPONSE_WAIT_TIME)); + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.execute(fTask); + + //noinspection StatementWithEmptyBody + while (!navServiceEndResponseReceived && !fTask.isDone()) ; + scheduler.shutdown(); + + return navServiceEndResponse; + } + + @Override + void startAudioService(boolean isEncrypted) { + if (session == null) { + DebugTool.logWarning("SdlSession is not created yet."); + return; + } + if (!session.getIsConnected()) { + DebugTool.logWarning("Connection is not available."); + return; + } + session.startService(SessionType.PCM, session.getSessionId(), isEncrypted); + } + + /** + * Closes the opened audio service (serviceType 10) + * + * @return true if the audio service is closed successfully, return false otherwise + */ + @Override + boolean endAudioStream() { + if (session == null) { + DebugTool.logWarning("SdlSession is not created yet."); + return false; + } + if (!session.getIsConnected()) { + DebugTool.logWarning("Connection is not available."); + return false; + } + + pcmServiceEndResponseReceived = false; + pcmServiceEndResponse = false; + session.stopAudioStream(); + + FutureTask<Void> fTask = new FutureTask<>(new CallableMethod(RESPONSE_WAIT_TIME)); + ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + scheduler.execute(fTask); + + //noinspection StatementWithEmptyBody + while (!pcmServiceEndResponseReceived && !fTask.isDone()) ; + scheduler.shutdown(); + + return pcmServiceEndResponse; + } + + private class CallableMethod implements Callable<Void> { + private final long waitTime; + + public CallableMethod(int timeInMillis) { + this.waitTime = timeInMillis; + } + + @Override + public Void call() { + try { + Thread.sleep(waitTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return null; + } + } } diff --git a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java index abafc5313..b56336dbb 100644 --- a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java @@ -32,6 +32,7 @@ package com.smartdevicelink.managers.lifecycle; +import android.content.Intent; import android.support.annotation.NonNull; import android.support.annotation.RestrictTo; import android.util.Log; @@ -138,20 +139,6 @@ abstract class BaseLifecycleManager { Version minimumProtocolVersion; Version minimumRPCVersion; - private static final int RESPONSE_WAIT_TIME = 2000; - private ISdlServiceListener navServiceListener; - private boolean navServiceStartResponseReceived = false; - private boolean navServiceStartResponse = false; - private List<String> navServiceStartRejectedParams = null; - private boolean pcmServiceStartResponseReceived = false; - private boolean pcmServiceStartResponse = false; - private List<String> pcmServiceStartRejectedParams = null; - private boolean navServiceEndResponseReceived = false; - private boolean navServiceEndResponse = false; - private boolean pcmServiceEndResponseReceived = false; - private boolean pcmServiceEndResponse = false; - - BaseLifecycleManager(AppConfig appConfig, LifecycleListener listener){ this.lifecycleListener = listener; @@ -916,86 +903,23 @@ abstract class BaseLifecycleManager { @Override public void onProtocolSessionStartedNACKed(SessionType sessionType, byte sessionID, byte version, String correlationID, List<String> rejectedParams) { Log.w(TAG, sessionType + " onProtocolSessionStartedNACKed " + sessionID + " RejectedParams: " + rejectedParams); - - if (sessionType.eq(SessionType.NAV)) { - NavServiceStartedNACK(rejectedParams); - } - else if (sessionType.eq(SessionType.PCM)) { - AudioServiceStartedNACK(rejectedParams); - } + BaseLifecycleManager.this.onProtocolSessionStartedNACKed(sessionType); } @Override public void onProtocolSessionStarted(SessionType sessionType, byte sessionID, byte version, String correlationID, int hashID, boolean isEncrypted) { - Log.i(TAG, "on protocol session started"); - if (sessionType != null) { - if (minimumProtocolVersion != null && minimumProtocolVersion.isNewerThan(getProtocolVersion()) == 1) { - Log.w(TAG, String.format("Disconnecting from head unit, the configured minimum protocol version %s is greater than the supported protocol version %s", minimumProtocolVersion, getProtocolVersion())); - session.endService(sessionType, session.getSessionId()); - cleanProxy(); - return; - } - - if (sessionType.equals(SessionType.RPC)) { - if (appConfig != null) { - - appConfig.prepare(); - - SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(); - sdlMsgVersion.setMajorVersion(MAX_SUPPORTED_RPC_VERSION.getMajor()); - sdlMsgVersion.setMinorVersion(MAX_SUPPORTED_RPC_VERSION.getMinor()); - sdlMsgVersion.setPatchVersion(MAX_SUPPORTED_RPC_VERSION.getPatch()); - - RegisterAppInterface rai = new RegisterAppInterface(sdlMsgVersion, - appConfig.getAppName(), appConfig.isMediaApp(), appConfig.getLanguageDesired(), - appConfig.getHmiDisplayLanguageDesired(), appConfig.getAppID()); - rai.setCorrelationID(REGISTER_APP_INTERFACE_CORRELATION_ID); - - rai.setTtsName(appConfig.getTtsName()); - rai.setNgnMediaScreenAppName(appConfig.getNgnMediaScreenAppName()); - rai.setVrSynonyms(appConfig.getVrSynonyms()); - rai.setAppHMIType(appConfig.getAppType()); - rai.setDayColorScheme(appConfig.getDayColorScheme()); - rai.setNightColorScheme(appConfig.getNightColorScheme()); - - //Add device/system info in the future - //TODO attach previous hash id - - sendRPCMessagePrivate(rai); - } else { - Log.e(TAG, "App config was null, soo..."); - } - - - } else if (sessionType.eq(SessionType.NAV)) { - NavServiceStarted(); - } else if (sessionType.eq(SessionType.PCM)) { - AudioServiceStarted(); - } else { - lifecycleListener.onServiceStarted(sessionType); - } - } + BaseLifecycleManager.this.onProtocolSessionStarted(sessionType); } @Override public void onProtocolSessionEnded(SessionType sessionType, byte sessionID, String correlationID) { - if (sessionType.eq(SessionType.NAV)) { - NavServiceEnded(); - } - else if (sessionType.eq(SessionType.PCM)) { - AudioServiceEnded(); - } + BaseLifecycleManager.this.onProtocolSessionEnded(sessionType); } @Override public void onProtocolSessionEndedNACKed(SessionType sessionType, byte sessionID, String correlationID) { - if (sessionType.eq(SessionType.NAV)) { - NavServiceEndedNACK(); - } - else if (sessionType.eq(SessionType.PCM)) { - AudioServiceEndedNACK(); - } + BaseLifecycleManager.this.onProtocolSessionEndedNACKed(sessionType); } @Override @@ -1053,16 +977,12 @@ abstract class BaseLifecycleManager { @Override public void startVideoService(VideoStreamingParameters parameters, boolean encrypted) { - if(isConnected()){ - BaseLifecycleManager.this.startVideoService(encrypted,parameters); - } + BaseLifecycleManager.this.startVideoService(encrypted, parameters); } @Override public void stopVideoService() { - if(isConnected()){ - BaseLifecycleManager.this.endVideoStream(); - } + BaseLifecycleManager.this.endVideoStream(); } @Override @@ -1078,16 +998,12 @@ abstract class BaseLifecycleManager { @Override public void startAudioService(boolean encrypted) { - if(isConnected()){ - BaseLifecycleManager.this.startService(SessionType.PCM, encrypted); - } + BaseLifecycleManager.this.startAudioService(encrypted); } @Override public void stopAudioService() { - if(isConnected()){ - BaseLifecycleManager.this.endAudioStream(); - } + BaseLifecycleManager.this.endAudioStream(); } @Override @@ -1514,242 +1430,67 @@ abstract class BaseLifecycleManager { } } + /* ******************************************************************************************************* + ********************************** Platform specific methods - START ************************************* + *********************************************************************************************************/ - - - ///////////////////////////// - - /** - * Try to open a video service by using the video streaming parameters supplied. - * <p> - * Only information from codecs, width and height are used during video format negotiation. - * - * @param isEncrypted Specify true if packets on this service have to be encrypted - * @param parameters VideoStreamingParameters that are desired. Does not guarantee this is what will be accepted. - * @return If the service is opened successfully, an instance of VideoStreamingParams is - * returned which contains accepted video format. If the service is opened with legacy - * mode (i.e. without any negotiation) then an instance of VideoStreamingParams is - * returned. If the service was not opened then null is returned. - */ - private VideoStreamingParameters tryStartVideoStream(boolean isEncrypted, VideoStreamingParameters parameters) { - if (session == null) { - DebugTool.logWarning("SdlSession is not created yet."); - return null; - } - if (getProtocolVersion() != null && getProtocolVersion().getMajor() >= 5 && !systemCapabilityManager.isCapabilitySupported(SystemCapabilityType.VIDEO_STREAMING)) { - DebugTool.logWarning("Module doesn't support video streaming."); - return null; - } - if (parameters == null) { - DebugTool.logWarning("Video parameters were not supplied."); - return null; - } - - if (!navServiceStartResponseReceived || !navServiceStartResponse //If we haven't started the service before - || (navServiceStartResponse && isEncrypted && !session.isServiceProtected(SessionType.NAV))) { //Or the service has been started but we'd like to start an encrypted one - session.setDesiredVideoParams(parameters); - - navServiceStartResponseReceived = false; - navServiceStartResponse = false; - navServiceStartRejectedParams = null; - - session.startService(SessionType.NAV, session.getSessionId(), isEncrypted); - addNavListener(); - FutureTask<Void> fTask = createFutureTask(new CallableMethod(RESPONSE_WAIT_TIME)); - ScheduledExecutorService scheduler = createScheduler(); - scheduler.execute(fTask); - - //noinspection StatementWithEmptyBody - while (!navServiceStartResponseReceived && !fTask.isDone()) ; - scheduler.shutdown(); - } - - if (navServiceStartResponse) { - if (getProtocolVersion() != null && getProtocolVersion().getMajor() < 5) { //Versions 1-4 do not support streaming parameter negotiations - session.setAcceptedVideoParams(parameters); + void onProtocolSessionStarted (SessionType sessionType) { + if (sessionType != null) { + if (minimumProtocolVersion != null && minimumProtocolVersion.isNewerThan(getProtocolVersion()) == 1) { + Log.w(TAG, String.format("Disconnecting from head unit, the configured minimum protocol version %s is greater than the supported protocol version %s", minimumProtocolVersion, getProtocolVersion())); + session.endService(sessionType, session.getSessionId()); + cleanProxy(); + return; } - return session.getAcceptedVideoParams(); - } - return null; - } + if (sessionType.equals(SessionType.RPC)) { + if (appConfig != null) { - private void addNavListener() { - // videos may be started and stopped. Only add this once - if (navServiceListener == null) { + appConfig.prepare(); - navServiceListener = new ISdlServiceListener() { - @Override - public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted) { - } + SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(); + sdlMsgVersion.setMajorVersion(MAX_SUPPORTED_RPC_VERSION.getMajor()); + sdlMsgVersion.setMinorVersion(MAX_SUPPORTED_RPC_VERSION.getMinor()); + sdlMsgVersion.setPatchVersion(MAX_SUPPORTED_RPC_VERSION.getPatch()); - @Override - public void onServiceEnded(SdlSession session, SessionType type) { - // reset nav flags so nav can start upon the next transport connection - resetNavStartFlags(); - // propagate notification up to proxy listener so the developer will know that the service is ended - if (lifecycleListener != null) { - lifecycleListener.onServiceEnded(type); - } - } + RegisterAppInterface rai = new RegisterAppInterface(sdlMsgVersion, + appConfig.getAppName(), appConfig.isMediaApp(), appConfig.getLanguageDesired(), + appConfig.getHmiDisplayLanguageDesired(), appConfig.getAppID()); + rai.setCorrelationID(REGISTER_APP_INTERFACE_CORRELATION_ID); - @Override - public void onServiceError(SdlSession session, SessionType type, String reason) { - // if there is an error reset the flags so that there is a chance to restart streaming - resetNavStartFlags(); - } - }; - session.addServiceListener(SessionType.NAV, navServiceListener); - } - } - - /** - * This method will try to start the video service with the requested parameters. - * When it returns it will attempt to store the accepted parameters if available. - * - * @param isEncrypted if the service should be encrypted - * @param parameters the desiered video streaming parameters - */ - private void startVideoService(boolean isEncrypted, VideoStreamingParameters parameters) { - if (session == null) { - DebugTool.logWarning("SdlSession is not created yet."); - return; - } - if (!session.getIsConnected()) { - DebugTool.logWarning("Connection is not available."); - return; - } - - session.setDesiredVideoParams(parameters); - - tryStartVideoStream(isEncrypted, parameters); - } - - - /** - * Closes the opened video service (serviceType 11) - * - * @return true if the video service is closed successfully, return false otherwise - */ - private boolean endVideoStream() { - if (session == null) { - return false; - } - - navServiceEndResponseReceived = false; - navServiceEndResponse = false; - session.stopVideoStream(); - - FutureTask<Void> fTask = createFutureTask(new CallableMethod(RESPONSE_WAIT_TIME)); - ScheduledExecutorService scheduler = createScheduler(); - scheduler.execute(fTask); - - //noinspection StatementWithEmptyBody - while (!navServiceEndResponseReceived && !fTask.isDone()) ; - scheduler.shutdown(); - - return navServiceEndResponse; - } - - private void startService(SessionType serviceType, boolean isEncrypted) { - session.startService(serviceType, session.getSessionId(), isEncrypted); - } - - - /** - * Closes the opened audio service (serviceType 10) - * - * @return true if the audio service is closed successfully, return false otherwise - */ - private boolean endAudioStream() { - if (session == null || !session.getIsConnected()) return false; + rai.setTtsName(appConfig.getTtsName()); + rai.setNgnMediaScreenAppName(appConfig.getNgnMediaScreenAppName()); + rai.setVrSynonyms(appConfig.getVrSynonyms()); + rai.setAppHMIType(appConfig.getAppType()); + rai.setDayColorScheme(appConfig.getDayColorScheme()); + rai.setNightColorScheme(appConfig.getNightColorScheme()); - pcmServiceEndResponseReceived = false; - pcmServiceEndResponse = false; - session.stopAudioStream(); + //Add device/system info in the future + //TODO attach previous hash id - FutureTask<Void> fTask = createFutureTask(new CallableMethod(RESPONSE_WAIT_TIME)); - ScheduledExecutorService scheduler = createScheduler(); - scheduler.execute(fTask); - - //noinspection StatementWithEmptyBody - while (!pcmServiceEndResponseReceived && !fTask.isDone()) ; - scheduler.shutdown(); - - return pcmServiceEndResponse; - } - - private class CallableMethod implements Callable<Void> { - private final long waitTime; - - public CallableMethod(int timeInMillis) { - this.waitTime = timeInMillis; - } - - @Override - public Void call() { - try { - Thread.sleep(waitTime); - } catch (InterruptedException e) { - e.printStackTrace(); + sendRPCMessagePrivate(rai); + } else { + Log.e(TAG, "App config was null, soo..."); + } } - return null; } } - private FutureTask<Void> createFutureTask(CallableMethod callMethod) { - return new FutureTask<>(callMethod); - } + void onProtocolSessionStartedNACKed (SessionType sessionType) {} - private ScheduledExecutorService createScheduler() { - return Executors.newSingleThreadScheduledExecutor(); - } + void onProtocolSessionEnded (SessionType sessionType) {} - private void NavServiceStarted() { - navServiceStartResponseReceived = true; - navServiceStartResponse = true; - } - - private void NavServiceStartedNACK(List<String> rejectedParams) { - navServiceStartResponseReceived = true; - navServiceStartResponse = false; - navServiceStartRejectedParams = rejectedParams; - } - - private void AudioServiceStarted() { - pcmServiceStartResponseReceived = true; - pcmServiceStartResponse = true; - } - - private void AudioServiceStartedNACK(List<String> rejectedParams) { - pcmServiceStartResponseReceived = true; - pcmServiceStartResponse = false; - pcmServiceStartRejectedParams = rejectedParams; - } + void onProtocolSessionEndedNACKed (SessionType sessionType) {} - private void NavServiceEnded() { - navServiceEndResponseReceived = true; - navServiceEndResponse = true; - } + void startVideoService(boolean encrypted, VideoStreamingParameters parameters) {} - private void NavServiceEndedNACK() { - navServiceEndResponseReceived = true; - navServiceEndResponse = false; - } + boolean endVideoStream() { return false; } - private void AudioServiceEnded() { - pcmServiceEndResponseReceived = true; - pcmServiceEndResponse = true; - } + void startAudioService(boolean encrypted) {} - private void AudioServiceEndedNACK() { - pcmServiceEndResponseReceived = true; - pcmServiceEndResponse = false; - } + boolean endAudioStream() { return false; } - private void resetNavStartFlags() { - navServiceStartResponseReceived = false; - navServiceStartResponse = false; - navServiceStartRejectedParams = null; - } + /* ******************************************************************************************************* + ********************************** Platform specific methods - End ************************************* + *********************************************************************************************************/ } |