[feature] voice call audio interface

Change-Id: I3429a426c07f1cd082ffff2855dbda05cb22373f
diff --git a/lib/liblynq-call/lynq_call.cpp b/lib/liblynq-call/lynq_call.cpp
index 6fb06f0..e7d0585 100755
--- a/lib/liblynq-call/lynq_call.cpp
+++ b/lib/liblynq-call/lynq_call.cpp
@@ -100,6 +100,10 @@
     /*Null anomaly*/

     LYNQ_E_NULL_ANONALY=9001

 }LYNQ_E;

+typedef enum{

+    LYNQ_E_VOLUMN_SET_DTMF,

+    LYNQ_E_VOLUMN_SET_SPEECH

+}LYNQ_E_VOLUMN_SET;   

 

 int lynq_call_state =CALL_OFF;

 int lynq_call_client_sockfd = 0;

@@ -819,7 +823,58 @@
     LYINFLOG("auto answer call mode =%d",mode);

     return 0;

 }

-int lynq_get_mute_status(int *status)

+int lynq_get_current_call_state(int *handle,    int *call_state,int *toa,int *direction,char addr[])

+{

+    int lynq_call_id = 0;

+    if(handle==NULL)

+    {

+        return LYNQ_E_NULL_ANONALY;

+    }

+    lynq_call_id = *handle;

+    *call_state = lynq_call_lists[lynq_call_id].call_state;

+    *toa = lynq_call_lists[lynq_call_id].toa;

+    *direction = lynq_call_lists[lynq_call_id].direction;

+    memcpy(addr,lynq_call_lists[lynq_call_id].addr,strlen(lynq_call_lists[lynq_call_id].addr)+1);

+    return 0;

+}

+

+/*audio begin*/

+int lynq_set_common_request(int request_id, int argc, const char* format,...)

+{

+    Parcel p;

+    lynq_client_t client;

+    int resp_type = -1;

+    int request = -1;

+    int slot_id = -1;

+    int error = -1;

+    //if(!lynq_call_state)

+    //{

+    //    LYERRLOG("LYNQ_E_CONFLICT");

+    //    return LYNQ_E_CONFLICT;

+    //}

+    client.uToken = Global_uToken_call;

+    client.request = request_id;

+    client.paramLen = argc;

+    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);

+    va_list args;

+    va_start(args, format);

+    vsnprintf(client.param, LYNQ_REQUEST_PARAM_BUF, format, args);

+    va_end(args);    

+    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);

+    if(send_request(lynq_call_client_sockfd,&client)==-1)

+    {

+        LYERRLOG("send request fail");

+        return -1;

+    }

+    if(get_response(lynq_call_client_sockfd,p)==0)

+    {    

+        JumpHeader(p,&resp_type,&request,&slot_id,&error);

+        LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

+    }

+    return error;

+}

+

+int lynq_get_common_request(int request_id, int* status)

 {

     Parcel p;

     lynq_client_t client;

@@ -833,7 +888,7 @@
         return -1;

     }

     client.uToken = Global_uToken_call;

-    client.request = 54;//RIL_REQUEST_GET_MUTE

+    client.request = request_id;

     client.paramLen = 0;

     bzero(client.param,LYNQ_REQUEST_PARAM_BUF);

     LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);

@@ -842,10 +897,12 @@
         LYERRLOG("send request fail");

         return -1;

     }

-    get_response(lynq_call_client_sockfd,p);

-    JumpHeader(p,&resp_type,&request,&slot_id,&error);

-    p.readInt32(status);

-    LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

+    if(get_response(lynq_call_client_sockfd,p)==0)

+    {

+        JumpHeader(p,&resp_type,&request,&slot_id,&error);

+        p.readInt32(status);

+        LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

+    }

     return error;

 }

 

@@ -865,27 +922,11 @@
     if(!judge_mic(enable)){

         return LYNQ_E_CONFLICT;

     }

-    Parcel p;

-    lynq_client_t client;

-    int resp_type = -1;

-    int request = -1;

-    int slot_id = -1;

-    int error = -1;

-    client.uToken = Global_uToken_call;

-    client.request = 53;//RIL_REQUEST_SET_MUTE

-    client.paramLen = 1;

-    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);

-    sprintf(client.param,"%d",enable);

-    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);

-    if(send_request(lynq_call_client_sockfd,&client)==-1)

-    {

-        LYERRLOG("send request fail");

-        return -1;

-    }

-    get_response(lynq_call_client_sockfd,p);

-    JumpHeader(p,&resp_type,&request,&slot_id,&error);

-    LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

-    return error;

+    return lynq_set_common_request(53,1,"%d",enable); //RIL_REQUEST_SET_MUTE    

+}

+int lynq_get_mute_mic(int *status)

+{

+    return lynq_get_common_request(54,status);//RIL_REQUEST_GET_MUTE    

 }

 

 /**

@@ -917,89 +958,55 @@
     {

         return LYNQ_E_CONFLICT;

     }

-    Parcel p;

-    lynq_client_t client;

-    int resp_type = -1;

-    int request = -1;

-    int slot_id = -1;

-    int error = -1;

     if(!lynq_call_state)

     {

         LYERRLOG("LYNQ_E_CONFLICT");

         return LYNQ_E_CONFLICT;

     }

-    client.uToken = Global_uToken_call;

-    client.request = 24;//RIL_REQUEST_DTMF

-    client.paramLen = 1;

-    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);

-    sprintf(client.param,"%c",callnum);

-    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);

-    if(send_request(lynq_call_client_sockfd,&client)==-1)

-    {

-        LYERRLOG("send request fail");

-        return -1;

-    }

-    get_response(lynq_call_client_sockfd,p);

-    JumpHeader(p,&resp_type,&request,&slot_id,&error);

-    LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

-    return error;

-

+    return lynq_set_common_request(24,1,"%c",callnum); //RIL_REQUEST_DTMF  

 }

-

-static int judge_volume(const int volume){

-    if(volume < 0 ||volume >36){

-        return 0;

+static int judge_volume(LYNQ_E_VOLUMN_SET set,const int volume){

+    if(set==LYNQ_E_VOLUMN_SET_DTMF){

+        if(volume < 0 ||volume >36){

+            return 0;

+        }

+    }

+    else if (set==LYNQ_E_VOLUMN_SET_SPEECH)

+    {

+        if(volume < 1 ||volume >7){

+            return 0;

+        }

     }

     return 1;

 }

-

 int lynq_set_DTMF_volume(const int volume)

 {   

-    if(!judge_volume(volume)){

+    if(!judge_volume(LYNQ_E_VOLUMN_SET_DTMF,volume)){

         return LYNQ_E_CONFLICT;

     }

-    Parcel p;

-    lynq_client_t client;

-    int resp_type = -1;

-    int request = -1;

-    int slot_id = -1;

-    int error = -1;

-    //if(!lynq_call_state)

-    //{

-    //    LYERRLOG("LYNQ_E_CONFLICT");

-    //    return LYNQ_E_CONFLICT;

-    //}

-    client.uToken = Global_uToken_call;

-    client.request = 8003;//LYNQ_REQUEST_SET_DTMF_VOLUME

-    client.paramLen = 1;

-    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);

-    sprintf(client.param,"%d",volume);

-    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s\n",client.uToken,client.request,client.paramLen,client.param);

-    if(send_request(lynq_call_client_sockfd,&client)==-1)

-    {

-        LYERRLOG("send request fail");

-        return -1;

-    }

-    get_response(lynq_call_client_sockfd,p);

-    JumpHeader(p,&resp_type,&request,&slot_id,&error);

-    LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",resp_type,request,slot_id,error);

-    return 0;

+    return lynq_set_common_request(8003,1,"%d",volume);//LYNQ_REQUEST_SET_DTMF_VOLUME

 }

-int lynq_get_current_call_state(int *handle,    int *call_state,int *toa,int *direction,char addr[])

+int lynq_set_speech_volume(int volume)//mixer_set_volume

 {

-    int lynq_call_id = 0;

-    if(handle==NULL)

+    if(!judge_volume(LYNQ_E_VOLUMN_SET_SPEECH,volume))

     {

-        return LYNQ_E_NULL_ANONALY;

+        return LYNQ_E_CONFLICT;

     }

-    lynq_call_id = *handle;

-    *call_state = lynq_call_lists[lynq_call_id].call_state;

-    *toa = lynq_call_lists[lynq_call_id].toa;

-    *direction = lynq_call_lists[lynq_call_id].direction;

-    memcpy(addr,lynq_call_lists[lynq_call_id].addr,strlen(lynq_call_lists[lynq_call_id].addr)+1);

-    return 0;

+    return lynq_set_common_request(8009,1,"%d",volume); //LYNQ_REQUEST_SET_SPEECH_VOLUME

 }

-

+int lynq_get_speech_volume(int* volumn)//mixer_get_volume

+{

+    return lynq_get_common_request(8010,volumn);//LYNQ_REQUEST_GET_SPEECH_VOLUME

+} 

+int lynq_incall_record_start(char* file_path)

+{

+	return lynq_set_common_request(8011,2,"%s\0%s","1",file_path); //LYNQ_REQUEST_RECORD

+}

+int lynq_incall_record_stop()

+{

+    return lynq_set_common_request(8011,2,"%s\0%s","0",""); //LYNQ_REQUEST_RECORD

+}

+/*audio end*/

 #if 0

 int main(int argc,char **argv)

 {