[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;