Register callback fucntion for bt, wifi and ffw when recorder stops 58/210158/2
authorwn.jang <wn.jang@samsung.com>
Tue, 16 Jul 2019 08:19:59 +0000 (17:19 +0900)
committerwn.jang <wn.jang@samsung.com>
Tue, 16 Jul 2019 08:20:58 +0000 (17:20 +0900)
Change-Id: I0eaa0dc7caf568932c568aae010ffa1755270af2
Signed-off-by: wn.jang <wn.jang@samsung.com>
server/vcd_recorder.c

index f487b16..e2fefaf 100644 (file)
@@ -464,15 +464,9 @@ int vcd_recorder_create(vcd_recoder_audio_cb audio_cb, vcd_recorder_interrupt_cb
        if (NULL == g_farfieldvoice_h) {
                SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to init farfield_voice_init");
        }
-
-       if (g_farfieldvoice_h) {
-               SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Register farfield voice audio callback");
-               farfield_voice_register_audio_cb(g_farfieldvoice_h, _ffv_audio_function_cb, NULL);
-       }
 #endif
 
 #ifdef TV_BT_MODE
-
        bool is_bt_failed = false;
 
        if (false == is_bt_failed && BT_ERROR_NONE != bt_product_init()) {
@@ -485,12 +479,6 @@ int vcd_recorder_create(vcd_recoder_audio_cb audio_cb, vcd_recorder_interrupt_cb
                is_bt_failed = true;
        }
 
-       if (false == is_bt_failed && BT_ERROR_NONE != bt_hid_set_audio_data_receive_cb(_bt_hid_audio_data_receive_cb, NULL)) {
-               SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_set_audio_data_receive_cb()");
-               is_bt_failed = true;
-       }
-
-
        if (false == is_bt_failed) {
                SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] Bluetooth is available");
                g_is_valid_bt_in = true;
@@ -545,7 +533,6 @@ int vcd_recorder_destroy()
 #ifdef TV_FFV_MODE
        if (NULL != g_farfieldvoice_h) {
                SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Unregister farfield voice");
-               farfield_voice_unregister_audio_cb(g_farfieldvoice_h);
                farfield_voice_final(g_farfieldvoice_h);
                g_farfieldvoice_h = NULL;
        }
@@ -1038,6 +1025,10 @@ int vcd_recorder_start()
        if (NULL != g_current_audio_type) {
                if (0 == strncmp(VCE_AUDIO_ID_BLUETOOTH, g_current_audio_type, strlen(VCE_AUDIO_ID_BLUETOOTH))) {
 #ifdef TV_BT_MODE
+                       if (BT_ERROR_NONE != bt_hid_set_audio_data_receive_cb(_bt_hid_audio_data_receive_cb, NULL)) {
+                               SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail bt_hid_set_audio_data_receive_cb()");
+                       }
+
                        const unsigned char input_data[2] = {SMART_CONTROL_START_CMD, 0x00};
                        int bt_retry = 0;
                        while (5 > bt_retry) {
@@ -1062,7 +1053,11 @@ int vcd_recorder_start()
                        g_bt_extend_count = 0;
 #endif
                } else if (0 == strncmp(VCE_AUDIO_ID_FFV, g_current_audio_type, strlen(VCE_AUDIO_ID_FFV))) {
-                       SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] call FARFIELD() function");
+                       SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] call farfield_voice_register_audio_cb() function");
+                       if (g_farfieldvoice_h) {
+                               SLOG(LOG_INFO, TAG_VCD, "[Recorder INFO] Register farfield voice audio callback");
+                               farfield_voice_register_audio_cb(g_farfieldvoice_h, _ffv_audio_function_cb, NULL);
+                       }
                        started = true;
                } else if (0 == strncmp(VCE_AUDIO_ID_WIFI, g_current_audio_type, strlen(VCE_AUDIO_ID_WIFI))) {
                        SLOG(LOG_DEBUG, TAG_VCD, "[Recorder] call RegisterMSFAudioCallback() function");
@@ -1149,7 +1144,6 @@ int vcd_recorder_start()
 int vcd_recorder_stop()
 {
        int ret = -1;
-
        vcd_audio_streaming_mode_e streaming_mode;
        vcd_config_get_audio_streaming_mode(&streaming_mode);
        if (VCD_AUDIO_STREAMING_MODE_MULTI_ASSISTANT == streaming_mode || VCD_AUDIO_STREAMING_MODE_OUTSIDE == streaming_mode) {
@@ -1171,6 +1165,9 @@ int vcd_recorder_stop()
        if (NULL != g_current_audio_type) {
                if (0 == strncmp(VCE_AUDIO_ID_BLUETOOTH, g_current_audio_type, strlen(VCE_AUDIO_ID_BLUETOOTH))) {
 #ifdef TV_BT_MODE
+                       // Unregister callback for bluetooth audio
+                       bt_hid_unset_audio_data_receive_cb();
+
                        int bt_retry = 0;
                        while (5 > bt_retry) {
                                ret = bt_hid_rc_stop_sending_voice(NULL);
@@ -1201,6 +1198,11 @@ int vcd_recorder_stop()
 #endif
                } else if (0 == strncmp(VCE_AUDIO_ID_FFV, g_current_audio_type, strlen(VCE_AUDIO_ID_FFV))) {
                        SLOG(LOG_DEBUG, TAG_VCD, "[DEBUG] FFV");
+#ifdef TV_FFV_MODE
+                       // Unregister callback for far field audio
+                       if (g_farfieldvoice_h)
+                               farfield_voice_unregister_audio_cb(g_farfieldvoice_h);
+#endif
                        if (NULL != g_current_audio_type &&
                                        (!strncmp(g_current_audio_type, VCE_AUDIO_ID_BLUETOOTH, sizeof(VCE_AUDIO_ID_BLUETOOTH)) ||
                                        !strncmp(g_current_audio_type, VCE_AUDIO_ID_FFV, sizeof(VCE_AUDIO_ID_FFV)) ||
@@ -1209,10 +1211,11 @@ int vcd_recorder_stop()
                                vcd_recorder_set(VCE_AUDIO_ID_NONE, g_audio_type, g_audio_rate, g_audio_channel);
                        }
                        stoped = true;
-
                } else if (0 == strncmp(VCE_AUDIO_ID_WIFI, g_current_audio_type, strlen(VCE_AUDIO_ID_WIFI))) {
 #ifdef TV_MSF_WIFI_MODE
+                       // Unregister callback for wifi audio
                        UnRegisterMSFAudioCallback();
+
                        if (NULL != g_current_audio_type &&
                                        (!strncmp(g_current_audio_type, VCE_AUDIO_ID_BLUETOOTH, sizeof(VCE_AUDIO_ID_BLUETOOTH)) ||
                                         !strncmp(g_current_audio_type, VCE_AUDIO_ID_WIFI, sizeof(VCE_AUDIO_ID_WIFI)))) {