Fix audio api block.
Change-Id: Ic48fe6c79a252291adac0524144d2cf17fb047c1
diff --git a/mbtk/mbtk_lib/src/mbtk_audio.c b/mbtk/mbtk_lib/src/mbtk_audio.c
index 1858fa1..bdf3a77 100755
--- a/mbtk/mbtk_lib/src/mbtk_audio.c
+++ b/mbtk/mbtk_lib/src/mbtk_audio.c
@@ -123,6 +123,10 @@
static struct mbtk_audio_ubus_db_t *mbtk_audio_ubus_db = NULL;
+#ifdef MBTK_YX_SUPPORT
+static struct ubus_context *audio_ctx = NULL;
+static uint32_t ubus_id_audio_if = 0;
+#endif
static int record_fd = 0;
@@ -458,25 +462,15 @@
}
#else
- static struct ubus_context *ctx;
- ctx = ubus_connect(NULL);
- if (!ctx) {
- printf("Failed to connect to ubus\n");
- return;
- }
-
static struct blob_buf b;
- uint32_t id;
int ret;
- ret = ubus_lookup_id(ctx, AUDIO_UBUS_REQUEST_NAME, &id);
- if (ret) {
- printf("ubus_lookup_id() fail.\n");
- return ret;
- }
+ if(audio_ctx == NULL || ubus_id_audio_if == 0) {
+ return;
+ }
blob_buf_init(&b, 0);
blobmsg_add_u32(&b, "param0", mode);
- if((ret = ubus_invoke(ctx, id, AUDIO_UBUS_SWITCH_PCM, b.head, NULL, NULL, 0)) != UBUS_STATUS_OK) {
+ if((ret = ubus_invoke(audio_ctx, ubus_id_audio_if, AUDIO_UBUS_SWITCH_PCM, b.head, NULL, NULL, 2000)) != UBUS_STATUS_OK) {
printf("ubus_invoke fail:%d.\n", ret);
} else {
printf("ubus_invoke success.\n");
@@ -892,7 +886,6 @@
int mbtk_audio_ubus_client_init(mbtk_audio_client_handle_type *ph_audio, mbtk_dtmf_cb cb)
{
- int id;
#ifndef MBTK_YX_SUPPORT
// Set call handle.
if(ph_audio == NULL || mbtk_audio_ubus_db != NULL)
@@ -917,7 +910,17 @@
*ph_audio = mbtk_audio_ubus_db;
LOGI("%s %d:%x", __FUNCTION__, __LINE__, mbtk_audio_ubus_db);
#else
- // Do nothong for YX.
+ audio_ctx = ubus_connect(NULL);
+ if (!audio_ctx) {
+ printf("Failed to connect to ubus\n");
+ return -1;
+ }
+
+ int ret = ubus_lookup_id(audio_ctx, AUDIO_UBUS_REQUEST_NAME, &ubus_id_audio_if);
+ if (ret) {
+ printf("ubus_lookup_id() fail.\n");
+ return ret;
+ }
#endif
return 0;
}
@@ -960,7 +963,10 @@
free(h_audio);
mbtk_audio_ubus_db = NULL;
#else
- // Do nothong for YX.
+ if(audio_ctx) {
+ ubus_free(audio_ctx);
+ audio_ctx = NULL;
+ }
#endif
return 0;
}