diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/call/CallService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/call/CallService.kt index f691a4a920..b16747048d 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/call/CallService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/call/CallService.kt @@ -25,14 +25,17 @@ interface CallService { fun getTurnServer(callback: MatrixCallback) /** + * Start a call * Send offer SDP to the other participant. + * @param callId a callId that the caller can create, it will be used to identify the call for other methods */ - fun sendOfferSdp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) + fun startCall(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) /** + * Accept an incoming call * Send answer SDP to the other participant. */ - fun sendAnswerSdp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) + fun pickUp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) /** * Send Ice candidate to the other participant. @@ -47,7 +50,7 @@ interface CallService { /** * Send a hangup event */ - fun sendHangup(callId: String, roomId: String) + fun hangup(callId: String, roomId: String) fun addCallListener(listener: CallsListener) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/call/DefaultCallService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/call/DefaultCallService.kt index 7fd1433dd3..55560228cb 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/call/DefaultCallService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/call/DefaultCallService.kt @@ -54,7 +54,7 @@ internal class DefaultCallService @Inject constructor( TODO("not implemented") // To change body of created functions use File | Settings | File Templates. } - override fun sendOfferSdp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) { + override fun startCall(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) { val eventContent = CallInviteContent( callId = callId, lifetime = CALL_TIMEOUT_MS, @@ -72,7 +72,7 @@ internal class DefaultCallService @Inject constructor( } } - override fun sendAnswerSdp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) { + override fun pickUp(callId: String, roomId: String, sdp: SessionDescription, callback: MatrixCallback) { val eventContent = CallAnswerContent( callId = callId, answer = CallAnswerContent.Answer(sdp = sdp.description) @@ -114,7 +114,7 @@ internal class DefaultCallService @Inject constructor( override fun sendLocalIceCandidateRemovals(callId: String, roomId: String, candidates: List) { } - override fun sendHangup(callId: String, roomId: String) { + override fun hangup(callId: String, roomId: String) { val eventContent = CallHangupContent(callId = callId) createEventAndLocalEcho(type = EventType.CALL_HANGUP, roomId = roomId, content = eventContent.toContent()).let { event -> roomEventSender.sendEvent(event) diff --git a/vector/src/main/java/im/vector/riotx/features/call/WebRtcPeerConnectionManager.kt b/vector/src/main/java/im/vector/riotx/features/call/WebRtcPeerConnectionManager.kt index d59dd8d101..a45dadc122 100644 --- a/vector/src/main/java/im/vector/riotx/features/call/WebRtcPeerConnectionManager.kt +++ b/vector/src/main/java/im/vector/riotx/features/call/WebRtcPeerConnectionManager.kt @@ -304,9 +304,10 @@ class WebRtcPeerConnectionManager @Inject constructor( peerConnection?.setLocalDescription(object : SdpObserverAdapter() { override fun onSetSuccess() { Timber.v("## setLocalDescription success") - callId = UUID.randomUUID().toString() - Timber.v("## sending offer to callId: $callId roomId: $signalingRoomId") - sessionHolder.getActiveSession().callService().sendOfferSdp(callId ?: "", signalingRoomId + val id = UUID.randomUUID().toString() + callId = id + Timber.v("## sending offer to callId: $id roomId: $signalingRoomId") + sessionHolder.getActiveSession().callService().startCall(id, signalingRoomId ?: "", sessionDescription, object : MatrixCallback {}) } }, sessionDescription) @@ -449,7 +450,7 @@ class WebRtcPeerConnectionManager @Inject constructor( fun endCall() { if (callId != null && signalingRoomId != null) { - sessionHolder.getActiveSession().callService().sendHangup(callId!!, signalingRoomId!!) + sessionHolder.getActiveSession().callService().hangup(callId!!, signalingRoomId!!) } close() }