diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index 4996a3b..07a81d8 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -1381,6 +1381,78 @@
     return 0;
 }
 
+int lynq_switch_waiting_or_holding_and_active(void)
+{
+    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 = RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE;
+    client.paramLen = 0;
+    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s",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;
+}
+
+int lynq_hangup_waiting_or_background(void)
+{
+    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 = RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND;
+    client.paramLen = 0;
+    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s",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;
+}
+
+int lynq_hangup_foreground_resume_background(void)
+{
+    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 = RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND;
+    client.paramLen = 0;
+    bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+    LYDBGLOG("uToken=%d,request=%d,paralen=%d,param=%s",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;
+}
+
 int lynq_set_DTMF(const char callnum)
 {
     if(!judge_dtmf(callnum))
