@@ -383,7 +383,6 @@ class TelnyxClient(
383
383
* Returns a MutableList of available audio devices
384
384
* Audio devices are represented by their Int reference ids
385
385
*
386
- * @param logLevel, the LogLevel specified for the SDK
387
386
* @return [MutableList] of [Int]
388
387
*/
389
388
private fun getAvailableAudioOutputTypes (): MutableList <Int > {
@@ -405,9 +404,9 @@ class TelnyxClient(
405
404
when (audioDevice) {
406
405
AudioDevice .BLUETOOTH -> {
407
406
if (availableTypes.contains(AudioDevice .BLUETOOTH .code)) {
408
- audioManager!! .mode = AudioManager .MODE_IN_COMMUNICATION ;
409
- audioManager.startBluetoothSco()
410
- audioManager.isBluetoothScoOn = true
407
+ audioManager? .mode = AudioManager .MODE_IN_COMMUNICATION
408
+ audioManager? .startBluetoothSco()
409
+ audioManager? .isBluetoothScoOn = true
411
410
} else {
412
411
Timber .d(
413
412
" [%s] :: No Bluetooth device detected" ,
@@ -417,17 +416,17 @@ class TelnyxClient(
417
416
}
418
417
AudioDevice .PHONE_EARPIECE -> {
419
418
// For phone ear piece
420
- audioManager!! .mode = AudioManager .MODE_IN_COMMUNICATION ;
421
- audioManager.stopBluetoothSco();
422
- audioManager.isBluetoothScoOn = false
423
- audioManager.isSpeakerphoneOn = false
419
+ audioManager? .mode = AudioManager .MODE_IN_COMMUNICATION
420
+ audioManager? .stopBluetoothSco()
421
+ audioManager? .isBluetoothScoOn = false
422
+ audioManager? .isSpeakerphoneOn = false
424
423
}
425
424
AudioDevice .LOUDSPEAKER -> {
426
425
// For phone speaker(loudspeaker)
427
- audioManager!! .mode = AudioManager .MODE_NORMAL ;
428
- audioManager.stopBluetoothSco();
429
- audioManager.isBluetoothScoOn = false ;
430
- audioManager.isSpeakerphoneOn = true ;
426
+ audioManager? .mode = AudioManager .MODE_NORMAL
427
+ audioManager? .stopBluetoothSco()
428
+ audioManager? .isBluetoothScoOn = false
429
+ audioManager? .isSpeakerphoneOn = true
431
430
}
432
431
}
433
432
}
@@ -500,7 +499,7 @@ class TelnyxClient(
500
499
501
500
/* *
502
501
* Fires once we have successfully received a 'REGED' gateway response, meaning login was successful
503
- * @param sessionId , the session ID of the successfully registered session.
502
+ * @param receivedLoginSessionId , the session ID of the successfully registered session.
504
503
*/
505
504
internal fun onLoginSuccessful (receivedLoginSessionId : String ) {
506
505
Timber .d(
@@ -584,20 +583,53 @@ class TelnyxClient(
584
583
val params = result.asJsonObject.get(" params" )
585
584
val sessionId = result.asJsonObject.get(" sessid" ).asString
586
585
gatewayState = params.asJsonObject.get(" state" ).asString
587
- if (gatewayState == GatewayState .REGED .state) {
588
- gatewayResponseTimer?.cancel()
589
- gatewayResponseTimer?.purge()
590
- gatewayResponseTimer = null
591
- waitingForReg = false
592
- onLoginSuccessful(sessionId)
593
- } else if (gatewayState == GatewayState .NOREG .state) {
594
- gatewayResponseTimer?.cancel()
595
- gatewayResponseTimer?.purge()
596
- gatewayResponseTimer = null
597
- socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has timed out" ))
586
+ when (gatewayState) {
587
+ GatewayState .REGED .state -> {
588
+ invalidateGatewayResponseTimer()
589
+ waitingForReg = false
590
+ onLoginSuccessful(sessionId)
591
+ }
592
+ GatewayState .NOREG .state -> {
593
+ invalidateGatewayResponseTimer()
594
+ socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has timed out" ))
595
+ }
596
+ GatewayState .FAILED .state -> {
597
+ invalidateGatewayResponseTimer()
598
+ socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has failed" ))
599
+ }
600
+ GatewayState .FAIL_WAIT .state -> {
601
+ invalidateGatewayResponseTimer()
602
+ socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has received fail wait response" ))
603
+ }
604
+ GatewayState .EXPIRED .state -> {
605
+ invalidateGatewayResponseTimer()
606
+ socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has timed out" ))
607
+ }
608
+ GatewayState .UNREGED .state -> {
609
+ // NOOP - logged within TxSocket
610
+ }
611
+ GatewayState .TRYING .state -> {
612
+ // NOOP - logged within TxSocket
613
+ }
614
+ GatewayState .REGISTER .state -> {
615
+ // NOOP - logged within TxSocket
616
+ }
617
+ GatewayState .UNREGISTER .state -> {
618
+ // NOOP - logged within TxSocket
619
+ }
620
+ else -> {
621
+ invalidateGatewayResponseTimer()
622
+ socketResponseLiveData.postValue(SocketResponse .error(" Gateway registration has failed with an unknown error" ))
623
+ }
598
624
}
599
625
}
600
626
627
+ private fun invalidateGatewayResponseTimer () {
628
+ gatewayResponseTimer?.cancel()
629
+ gatewayResponseTimer?.purge()
630
+ gatewayResponseTimer = null
631
+ }
632
+
601
633
override fun onConnectionEstablished () {
602
634
Timber .d(" [%s] :: onConnectionEstablished" , this @TelnyxClient.javaClass.simpleName)
603
635
socketResponseLiveData.postValue(SocketResponse .established())
0 commit comments