Merge "[Feature][ZXW-59][AUTOSUSPEND]fix autosuspend demo address"
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h b/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
index ec50ef7..3bb398f 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
@@ -64,6 +64,9 @@
int lynq_hangup_waiting_or_background(void);
int lynq_hangup_foreground_resume_background(void);
+/* add for T106bug-213 2023/9/18 */
+void lynq_release_wait_call();
+
/*lei add for API-163/API-164 2023/1/3*/
/**
* @brief wait_call_state_change
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
index b40f6c1..58849e7 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -765,7 +765,6 @@
return LYNQ_E_PARAMETER_ANONALY;
}
g_module_init_flag = MODULE_SWITCHING;
- s_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -819,7 +818,6 @@
lynq_close_all_rc_socket_thread();
lynq_stop_call_list_loop();
g_module_init_flag = MODULE_CLOSED;
- pthread_mutex_destroy(&s_call_state_change_mutex);
return 0;
}
@@ -1457,7 +1455,10 @@
}
/*audio end*/
-
+void lynq_release_wait_call()
+{
+ pthread_cond_signal(&s_call_state_change_cond);
+}
bool is_support_urc(int urc_id)
{
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
index fa210e6..a35a192 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
@@ -48,6 +48,10 @@
while (s_voice_thread_status)
{
lynq_wait_call_state_change(&handle);
+ if(s_voice_thread_status == 0)
+ {
+ return NULL;
+ }
lynq_get_current_call_state(&handle,&call_state,&toa,&direction,addr);
if (call_state == LYNQ_CALL_ACTIVE)
{
@@ -141,19 +145,14 @@
int qser_voice_call_removestatehandle(voice_client_handle_type h_voice)
{
- int ret;
- if (s_lynq_voice_tid != -1)
- {
- ret = pthread_cancel(s_lynq_voice_tid);
- LYDBGLOG("pthread cancel ret = %d",ret);
- }
- if (s_lynq_voice_tid != -1)
- {
- ret = pthread_join(s_lynq_voice_tid,NULL);
- LYDBGLOG("pthread cancel ret = %d",ret);
- s_lynq_voice_tid = -1;
- }
+
+ LYINFLOG("Enter removestatehandle !!!");
s_voice_thread_status = 0;
+ if(s_lynq_voice_tid != -1)
+ {
+ lynq_release_wait_call();
+ }
+
s_voice_cb = NULL;
return RESULT_OK;
}
diff --git a/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp b/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
index 3d17411..b3b7827 100755
--- a/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
+++ b/cap/zx297520v3/src/lynq/lib/libpoweralarm/libpoweralarm.cpp
@@ -31,7 +31,6 @@
static int wk_rtc_id = 1;
-static int pw_rtc_id = 2;
static int wk_srcid = 0;
typedef int (*sc_rtc_timer_exp_cb)(unsigned int src_id, int rtc_id);
@@ -42,6 +41,10 @@
extern int sc_rtc_timer_add_utc(int srcid, int rtc_id, struct tm *utc_sec, int wakeup, sc_rtc_timer_exp_cb rtc_notify);
+extern int sc_rtc_get_poweroff_alarm_modid(int src_id,char *name);
+
+extern int sc_rtc_add_poweroff_alarm(int srcid, int alarm_modid, int rtc_id, struct tm *utc_sec, sc_rtc_timer_exp_cb rtc_notify);
+
/*****************************************
* @brief:sc_rtc_timer_add_cb
* @param count [IN]:src_id, rtc_id,
@@ -72,10 +75,10 @@
int ret = 0;
char *buf_bak = buffer;
time_t tmp_time = 0;
- struct tm *ptime = NULL;
+
struct tm *wake_arlarm = NULL;
tmp_time = time(NULL);
- ptime = localtime(&tmp_time);
+ localtime(&tmp_time);
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -155,7 +158,15 @@
unsigned long time_sec = 0;
int ret = 0;
char *buf_bak = buffer;
-
+
+ int alarmid = 0;
+ char username[8] = "user";
+ time_t tmp_time = 0;
+ struct tm *power_arlarm = NULL;
+ tmp_time = time(NULL);
+ localtime(&tmp_time);
+
+
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -181,6 +192,10 @@
buffer = buf_bak;
time_sec = strtoul(buffer,NULL,10);
+
+ tmp_time += time_sec;
+ power_arlarm = localtime(&tmp_time);
+
if(time_sec < MIN_TIME || time_sec > MAX_TIME || errno == ERANGE)
{
LYERRLOG("Illeagle input: too large or too small !!!");
@@ -194,23 +209,30 @@
LYERRLOG("rtc_timer_init fail!");
return -1;
}
- ret = sc_rtc_timer_add(srcid, pw_rtc_id, time_sec, sc_rtc_timer_add_cb);
- if(ret < 0)
+
+ alarmid = sc_rtc_get_poweroff_alarm_modid(srcid, username);
+ if(alarmid < 0)
{
- LYERRLOG("Add rtc timer failed!!!!");
+ LYERRLOG("Get poweroff alarm id failed !!!");
return -1;
}
-
- LYINFLOG("Set poweralarm success !!!");
+
+ ret = sc_rtc_add_poweroff_alarm(srcid, alarmid, 0, power_arlarm, sc_rtc_timer_add_cb);
+ if(ret < 0)
+ {
+ LYERRLOG("Set power alarm failed !!!");
+ return -1;
+ }
+ LYINFLOG("Set power alarm success !!!!");
ret = sc_rtc_timer_uninit();
if(ret != 0)
{
- LYINFLOG("Deinit failed");
+ LYINFLOG("Deinit failed!!!");
}
return 0;
-
+
}
/**********************************************
@@ -254,6 +276,18 @@
int ret = 0;
int srcid = 0;
+ int alarmid = 0;
+ char username[8] = "user";
+
+ time_t tmp_time = 0;
+ struct tm *power_arlarm = NULL;
+ tmp_time = time(NULL);
+ localtime(&tmp_time);
+
+
+ tmp_time += time_sec;
+ power_arlarm = localtime(&tmp_time);
+
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -262,30 +296,39 @@
LYERRLOG("Illeagle input: too large or too small !!!");
return -1;
}
-
- LYINFLOG("lynq_set_poweralarm %lu seconds",time_sec);
+
+ LYINFLOG("lynq_set_poweralarm %lu seconds",time_sec);
srcid = sc_rtc_timer_init();
if (srcid <= 0)
{
LYERRLOG("rtc_timer_init fail!");
return -1;
}
- ret = sc_rtc_timer_add(srcid, pw_rtc_id, time_sec, sc_rtc_timer_add_cb);
+
+ alarmid = sc_rtc_get_poweroff_alarm_modid(srcid, username);
+ if(alarmid < 0)
+ {
+ LYERRLOG("Get poweroff alarm id failed !!!");
+ return -1;
+ }
+
+ ret = sc_rtc_add_poweroff_alarm(srcid, alarmid, 0, power_arlarm, sc_rtc_timer_add_cb);
if(ret < 0)
{
- LYINFLOG("Add rtc timer failed!!!!");
+ LYERRLOG("Set power alarm failed !!!");
return -1;
}
- LYINFLOG("Set poweralarm success !!!");
-
+ LYINFLOG("Set power alarm success !!!!");
+
ret = sc_rtc_timer_uninit();
if(ret != 0)
{
- LYINFLOG("Deinit failed");
+ LYINFLOG("Deinit rtc_timer failed!!!");
}
return 0;
+
}
@@ -304,10 +347,9 @@
int ret = 0;
time_t tmp_time = 0;
- struct tm *ptime = NULL;
struct tm *wake_arlarm = NULL;
tmp_time = time(NULL);
- ptime = localtime(&tmp_time);
+ localtime(&tmp_time);
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);