Add ril service state change callback.
Change-Id: I1566248d39f2d989ad7bd51dad76b2160d92258d
diff --git a/mbtk/include/mbtk/mbtk_info_api.h b/mbtk/include/mbtk/mbtk_info_api.h
index 2c09366..1b1d88c 100755
--- a/mbtk/include/mbtk/mbtk_info_api.h
+++ b/mbtk/include/mbtk/mbtk_info_api.h
@@ -1038,6 +1038,10 @@
*/
int mbtk_signal_state_change_cb_reg(mbtk_info_handle_t* handle, mbtk_info_callback_func cb);
+/*
+* Set ril server state change callback function.
+*/
+int mbtk_ril_server_state_change_reg(mbtk_info_handle_t* handle, mbtk_info_callback_func cb);
int mbtk_sms_cnmi_set(mbtk_info_handle_t* handle);
diff --git a/mbtk/libmbtk_lib/ril/mbtk_info_api.c b/mbtk/libmbtk_lib/ril/mbtk_info_api.c
index cf1d924..e355cce 100755
--- a/mbtk/libmbtk_lib/ril/mbtk_info_api.c
+++ b/mbtk/libmbtk_lib/ril/mbtk_info_api.c
@@ -20,6 +20,8 @@
#define EPOLL_LISTEN_MAX 100
#define EPOLL_LISTEN_MAX 100
+static mbtk_info_callback_func ril_server_state_cb = NULL;
+
#if 0
struct
{
@@ -268,10 +270,14 @@
int i;
for(i = 0; i < nready; i++)
{
- LOG("fd[%d] event = %x",epoll_events[i].data.fd, epoll_events[i].events);
+ LOGD("fd[%d] event = %x",epoll_events[i].data.fd, epoll_events[i].events);
if(epoll_events[i].events & EPOLLHUP) // Closed by server.
{
-
+ LOGD("Closed by server.");
+ if(ril_server_state_cb) {
+ int state = 1;
+ ril_server_state_cb(&state, sizeof(int));
+ }
}
else if(epoll_events[i].events & EPOLLIN)
{
@@ -2587,3 +2593,19 @@
}
}
+/*
+* Set ril server state change callback function.
+*/
+int mbtk_ril_server_state_change_reg(mbtk_info_handle_t* handle, mbtk_info_callback_func cb)
+{
+ if(handle == NULL)
+ {
+ LOGE("ARG error.");
+ return -1;
+ }
+
+ ril_server_state_cb = cb;
+ return 0;
+}
+
+
diff --git a/mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c b/mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c
index c817e8a..e178b56 100755
--- a/mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c
+++ b/mbtk/libmbtk_lib_v2/audio/mbtk_pcm_stream.c
@@ -23,6 +23,8 @@
static audio_inter_info_t *audio_info = NULL;
static pthread_t recorder_thread_play;
static mbtk_audio_pa_switch_func audio_pa_switch_func = NULL;
+static mbtk_audio_volume_set_func audio_volume_set_func = NULL;
+static int audio_pcm_write_count = 0;
static int lock_get() {
int fd = open(LOCK_FILE, O_WRONLY | O_CREAT | O_TRUNC, 0666);
@@ -247,11 +249,16 @@
return -1;
}
-void mbtk_audio_pcm_pa_func_set(mbtk_audio_pa_switch_func pa_switch_func)
+void mbtk_audio_pa_func_set(mbtk_audio_pa_switch_func pa_switch_func)
{
audio_pa_switch_func = pa_switch_func;
}
+void mbtk_audio_volume_set_func_set(mbtk_audio_volume_set_func volume_set_func)
+{
+ audio_volume_set_func = volume_set_func;
+}
+
int mbtk_audio_pcm_sample_rate_set(mbtk_audio_sample_rate_enum sample_rate)
{
if(!audio_info) {
@@ -288,6 +295,7 @@
audio_info->direction = MBTK_AUDIO_DIRECTION_OUTPUT;
audio_info->info.play.buff_remain_len = 0;
+ audio_pcm_write_count = 0;
return 0;
play_start_fail:
@@ -333,6 +341,21 @@
goto send_fail;
}
+ if(audio_pcm_write_count < 3) {
+ audio_pcm_write_count++;
+ if(audio_pcm_write_count == 3) {
+ // Set audio volume.
+ if(audio_volume_set_func) {
+ audio_volume_set_func();
+ }
+
+ // Open PA
+ if(audio_pa_switch_func) {
+ audio_pa_switch_func(TRUE);
+ }
+ }
+ }
+
index += (audio_info->playback_size - audio_info->info.play.buff_remain_len);
audio_info->info.play.buff_remain_len = 0;
}
@@ -396,7 +419,12 @@
audio_info->info.play.buff_remain_len = 0;
}
- vcm_playback_drain(0);//wait for drain the AP audiostub queue.
+ // Close PA
+ if(audio_pa_switch_func) {
+ audio_pa_switch_func(FALSE);
+ }
+
+ vcm_playback_drain(80);//wait for drain the AP audiostub queue.
usleep(80000);//delay 80ms until DSP play out its buffered data.
audio_info->info.play.stream_out->common.standby(&(audio_info->info.play.stream_out->common));
audio_info->audio_ahw_dev_ubus->close_output_stream(audio_info->audio_ahw_dev_ubus, audio_info->info.play.stream_out);
diff --git a/mbtk/mbtk_rild/src/mbtk_data_call.c b/mbtk/mbtk_rild/src/mbtk_data_call.c
index 161492b..5215f77 100755
--- a/mbtk/mbtk_rild/src/mbtk_data_call.c
+++ b/mbtk/mbtk_rild/src/mbtk_data_call.c
@@ -98,7 +98,7 @@
return MBTK_RESULT_FAIL;
}
-#ifdef MBTK_ALL_CID_SUPPORT
+#if 0
if(apn_set_state[cid] != '1' && apn_set_state[cid] != '2')
{
LOGE("cid [%d] is not exist.", cid);