[bugfix]api-102 api-55 api-53
Change-Id: I4e0010244fe43b3cab5fd8e96150d0d8dd9cbe6b
diff --git a/lib/liblynq-call/lynq_call.cpp b/lib/liblynq-call/lynq_call.cpp
index a72566c..6fb06f0 100755
--- a/lib/liblynq-call/lynq_call.cpp
+++ b/lib/liblynq-call/lynq_call.cpp
@@ -362,6 +362,7 @@
{
if(call_list[i].call_state ==4)//LYNQ_CALL_INCOMING = 4, /* MT call only */
{
+ /*you call me, and i call you,One party failed to dial*/
if(!checkHasCall(call_list[i].addr))
{
lynqIncomingCallId = getUnusedElement();
@@ -369,6 +370,18 @@
sendSignalIncomingCall();
}
}
+ /*if state changed*/
+ else
+ {
+ /*update call state*/
+ for(int n = 0 ; n < LYNQ_CALL_MAX; n++)
+ {
+ if(strcmp(call_list[i].addr,lynq_call_lists[n].addr)==0)
+ {
+ updateCallList(&lynq_call_lists[n],call_list[i].call_id,call_list[i].call_state,call_list[i].toa,call_list[i].direction);
+ }
+ }
+ }
}
else
{
@@ -698,7 +711,7 @@
if(error==0)
{
isDial = 1;
- if(waitCallstateChange(3000)==ETIMEDOUT)//3000ms
+ if(waitCallstateChange(6000)==ETIMEDOUT)//6000ms
{
error = LYNQ_E_TIME_OUT;
LYERRLOG("timeout:wait Call state fail!!!");
@@ -874,8 +887,36 @@
LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);
return error;
}
+
+/**
+ * @brief Check whether DTMF is valid
+ *
+ * @param callnum dtmf eg:0-9 * #
+ * @return int
+ */
+static int judge_dtmf(const char callnum)
+{
+ if(callnum == '#')
+ {
+ return 1;
+ }
+ if(callnum == '*')
+ {
+ return 1;
+ }
+ if(callnum >= '0'&& callnum <= '9')
+ {
+ return 1;
+ }
+ return 0;
+}
+
int lynq_set_DTMF(const char callnum)
{
+ if(!judge_dtmf(callnum))
+ {
+ return LYNQ_E_CONFLICT;
+ }
Parcel p;
lynq_client_t client;
int resp_type = -1;