BLE端增加发送VOLTE开关接口到CAT1:CAT1处理VOLTE开关功能接口 默认需要开启VOLTE开启: 移动入库增加新的数据字段上传
authorDXY <1731678236@qq.com>
Sat, 3 Aug 2024 08:08:15 +0000 (16:08 +0800)
committerDXY <1731678236@qq.com>
Sat, 3 Aug 2024 08:08:15 +0000 (16:08 +0800)
cat1modem/src/cat1Service.py
cat1modem/src/china_mobile_dmp.py
code/sdk/drivers/peripheral/config/include/ConfigModel.h
code/sdk/drivers/peripheral/config/src/ConfigModel.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h

index 6a02992..45044c1 100644 (file)
@@ -237,6 +237,7 @@ class Cat1Service:
         self.software_version = ""
         self.deletSmsTimer = osTimer()
 
+        self.volte_switch = 1 #默认是开启VOLTE通话功能
         eventMesh.subscribe("set_dmp_change_mode",self.set_dmp_change_mode)
         eventMesh.subscribe("get_dmp_change_mode",self.get_dmp_change_mode)
         eventMesh.subscribe("delete_sms_event",self.delete_sms_event)
@@ -249,6 +250,8 @@ class Cat1Service:
         eventMesh.subscribe("get_factory_status",self.get_factory_status)
         eventMesh.subscribe("set_factory_status",self.set_factory_status)
         eventMesh.subscribe("send_dmp_cm_address_toBLE",self.send_dmp_cm_address_toBLE)
+        eventMesh.subscribe("set_volte_switch",self.set_volte_switch)
+        eventMesh.subscribe("get_volte_switch",self.get_volte_switch)
         eventMesh.publish("delete_sms_event")
 
        
@@ -304,8 +307,9 @@ class Cat1Service:
             self.reply_cmd('00',"pyVer:{}@modemVer:{}".format(PROJECT_VERSION,modem_ver))
         elif cmd == "01":
             # UDP_CMD_DIAL_NUMB
-            ret = voiceCall.callStart(str(parm))
-            print("ret={} {} {}".format(ret,cmd,parm))
+            if eventMesh.publish("get_volte_switch") == 1: #只有BLE开了VOLTE才允许打电话
+                ret = voiceCall.callStart(str(parm))
+                print("ret={} {} {}".format(ret,cmd,parm))
         elif cmd == "02":
             print(cmd)
             # UDP_CMD_HUNGUP
@@ -393,8 +397,10 @@ class Cat1Service:
             eventMesh.publish("set_dmp_cm_address",str(parm))
         elif cmd == "19": #DTMF功能
             voiceCall.startDtmf(str(parm),100)  #100ms 持续时间 100-1000
+        elif cmd == "1A":
+            eventMesh.publish("set_volte_switch",int(parm))
 
-    def telecom_recv_cmd(self,cmd,parm): #电信入库
+    def telecom_recv_cmd(self,cmd,parm): 
         if cmd == "10":
             self.software_version = str(parm)
             eventMesh.publish("set_dev_version",self.software_version)
@@ -405,6 +411,16 @@ class Cat1Service:
             pass
                 
         pass
+
+    def set_volte_switch(self,event,msg): #设置VOLTE开关
+        self.volte_switch = int(msg)
+        
+
+    def get_volte_switch(self,event,msg): #获取VOLTE开关
+
+        return self.volte_switch
+        
+
     def china_mobile_recv_cmd(self,cmd,parm): #移动入库相关指令
         if cmd == "10":
             self.software_version = str(parm)
@@ -933,14 +949,20 @@ cat1service = Cat1Service()
 def voice_callback(args):
     if args[0] == 10:
         print('voicecall incoming call, PhoneNO: ', args[6])
-        # gpioWakeBT.write(1)
-        cat1service.notifyIncomingcall(args[6])
+        if eventMesh.publish("get_volte_switch") == 0: #关闭VOLTE功能
+            print('voicecall auto end:')
+            voiceCall.callEnd()
+        else:     
+            # gpioWakeBT.write(1)
+            cat1service.notifyIncomingcall(args[6])
     elif args[0] == 11:
-        print('voicecall connected, PhoneNO: ', args[6])
-        cat1service.notifyConnecteCall()
+        if eventMesh.publish("get_volte_switch") == 1: #开启VOLTE功能
+            print('voicecall connected, PhoneNO: ', args[6])
+            cat1service.notifyConnecteCall()
     elif args[0] == 12:
         print('voicecall disconnect')
-        cat1service.notifyDisconnectCall()
+        if eventMesh.publish("get_volte_switch") == 1: #开启VOLTE功能
+            cat1service.notifyDisconnectCall()
     elif args[0] == 13:
         print('voicecall is waiting, PhoneNO: ', args[6])
     elif args[0] == 14:
index 6d353d6..57437b6 100644 (file)
@@ -329,12 +329,16 @@ class chinamobile:
 
         screenSize = "1.43"
         # base64_screenSize = sha256_encode(key,screenSize)
-        wearingStatus ="***"
+        wearingStatus ="-1"
         # base64_wearingStatus = sha256_encode(key,wearingStatus)
 
         networkStatus ="1"#1:连接;0:未连接;-1:不支持
+
+        routerMac = "***"
+
+        wifiMac = "***"
         # base64_networkStatus = sha256_encode(key,networkStatus)
-        encyr_data = [MAC,RAM,ROM,CPU,sysVersion,softwareVer,softwareName,volte,netType,resolution,screenSize,wearingStatus,networkStatus]
+        encyr_data = [MAC,RAM,ROM,CPU,sysVersion,softwareVer,softwareName,volte,netType,resolution,screenSize,wearingStatus,networkStatus,routerMac,wifiMac]
         print(len(encyr_data))
         encyr_new_data=[]
         for i in range(len(encyr_data)):
@@ -370,7 +374,9 @@ class chinamobile:
             "resolution":"{}".format(encyr_new_data[9]),#屏幕分辨率466*466
             "screenSize":"{}".format(encyr_new_data[10]),#屏幕尺寸默认1.43
             "wearingStatus":"{}".format(encyr_new_data[11]),#佩戴状态不支持
-            "networkStatus":"{}".format(encyr_new_data[12])#网络状态
+            "networkStatus":"{}".format(encyr_new_data[12]),#网络状态
+            "routerMac":"{}".format(encyr_new_data[13]), #路由mac地址 ***
+            "mac":"{}".format(encyr_new_data[14]) #wifi mac
         }
         json_data = ujson.dumps(deviceInfo_tmp)#需要转义的字符串
 
@@ -388,7 +394,7 @@ class chinamobile:
             response = request.post(url, data=ujson.dumps(send_autoregist),headers =headers_T)
             request_result = 1
             result_json = ""
-            
+            print("response success:response.status_code{}\r\n".format(response.status_code))
             if response.status_code == 200:
                 dev_autoregist_result = 1
                 content = response.content
@@ -401,14 +407,16 @@ class chinamobile:
             if "rspCode" in result_json:
                 rspCode = result_json["rspCode"]
                 rspMsg = result_json["rspMsg"]
+                print("response success:rspCode{} {}\r\n".format(rspMsg,rspCode))
                 if rspCode == "0000" or rspMsg == "成功":
                     dev_autoregist_result = 1
                 else:
                     dev_autoregist_result = 0
             else:
                 dev_autoregist_result = 0
-            return dev_autoregist_result
             print("response success:\r\n")
+            return dev_autoregist_result
+            
         except Exception as e:
             print("response:{}".format(e))
             request_result = 0
index 7414d00..abe959d 100644 (file)
@@ -323,7 +323,7 @@ namespace OHOS
             {ConfigDataType::DATATYPE_BOOL,    "dnotdisturb",              "false" },// CONFIGMODEL_ITEM_DNOTDISTURB //勿扰模式默认关闭
             {ConfigDataType::DATATYPE_INT,     "system_volume",             "100"  },// CONFIGMODEL_ITEM_SYSTEM_VOLUME //
             {ConfigDataType::DATATYPE_INT,     "call_volume",               "100"  },// CONFIGMODEL_ITEM_CALL_VOLUME //
-            {ConfigDataType::DATATYPE_BOOL,    "voltecall",                "false" },// CONFIGMODEL_ITEM_VOLTE_CALL
+            {ConfigDataType::DATATYPE_BOOL,    "voltecall",                "true" },// CONFIGMODEL_ITEM_VOLTE_CALL #默认是开启VOLTE
             {ConfigDataType::DATATYPE_BOOL,    "motion_recognition",        "false" },// CONFIGMODEL_ITEM_MOTIONRECOGNITION
             {ConfigDataType::DATATYPE_BOOL,    "hfp",                      "false" },// CONFIGMODEL_ITEM_HFP
             {ConfigDataType::DATATYPE_BOOL,    "a2dp",                     "false" },// CONFIGMODEL_ITEM_A2DP
index 6f93fc0..e66f847 100644 (file)
@@ -2,7 +2,7 @@
 #include "ConfigModelC.h"
 #include "custom_utils.h"
 #include "custom_runtime.h"
-
+#include "cat1_server.h"
 #include "kv_store.h"
 #include "kvstore_env.h"
 #if DEBUG_CONFIGMODEL
@@ -1098,6 +1098,7 @@ namespace OHOS
     void ConfigModel::SetVoLTE_Call(bool state)
     {
         set_condigData_Bool(CONFIGMODEL_ITEM_VOLTE_CALL,state);
+        send_volte_switch_toCat1();
     }
 
     /*
index 696d479..f2c06ab 100644 (file)
@@ -91,6 +91,8 @@ enum UDP_COMMAND_HEAD {
     UDP_MSG_SEND_DMP_CM_ADDRESS = 0x18,//用于BLE发送移动入库地址 to CAT1 接收
 
     UDP_MSG_SEND_DTMF_NUMBER = 0x19,//DTMF 功能
+
+    UDP_MSG_SEND_VOLTE_SWITCH = 0x1A,//VOLTE开关
 };
 /** 0: old format 1字节cmd, 1: new format 2字节cmd */
 static uint8_t g_msg_format_type = 0;
@@ -1135,9 +1137,26 @@ void set_dmp_cm_address_toCat1(char *address)//设置保存移动入库下发的
 }
 void send_dtfm_number_toCat1(char ch)//发送dtfm 
 {
-    printf("ch:%s\r\n",&ch);
+    // printf("ch:%s\r\n",&ch);
     udp_send_msg_toCat1(UDP_MSG_SEND_DTMF_NUMBER,&ch);
 }
+void send_volte_switch_toCat1(void)//发送VOLTE->CAT1
+{
+    bool Cat1_4G = OHOS::ConfigModel::GetInstance()->GetCat1_4Gability();
+    if (Cat1_4G == 0)
+        return;
+
+    bool volte = OHOS::ConfigModel::GetInstance()->GetVoLTE_Call();
+    char send_str[5] = {0};
+    sprintf_s((char *)send_str,5, "%d", volte);
+    udp_send_msg_toCat1(UDP_MSG_SEND_VOLTE_SWITCH,send_str);
+}
+bool get_volte_switch(void)//
+{
+    bool volte = OHOS::ConfigModel::GetInstance()->GetVoLTE_Call();
+    return volte;
+}
+
 static int udp_packet_parse(char *rx_buffer, int len)
 {
 
@@ -1176,6 +1195,8 @@ static int udp_packet_parse(char *rx_buffer, int len)
     // printf("cmd %x,bufferlen %d , buffer %s \n",cmd,msg_buffer_len,msg_buffer);
     switch (cmd) {
         case UDP_MSG_COMMING_CALL:
+            if (get_volte_switch() == false) //如果VOLTE开关没有开启则不接CAT1的来电功能
+                break;
             index = cat1_handle_call_incomming(msg_buffer);
             break;
         case UDP_CMD_GET_RECV_NETWORKSTAT:
@@ -1233,6 +1254,7 @@ static int udp_packet_parse(char *rx_buffer, int len)
                         get_software_version_toCat1();
                         send_ble_mac_toCat1();
                         send_dmp_cm_address_toCat1();
+                        send_volte_switch_toCat1();
                         send_dmp_factory_flag();
                     }
                 }
index 119d8a4..92aeea0 100644 (file)
@@ -39,6 +39,7 @@ void get_regist_time_toCat1(void);
 void ble_get_cat1_at_msg(char *buffer,uint8_t len);
 
 void send_dtfm_number_toCat1(char ch);//发送dtfm
+void send_volte_switch_toCat1(void); //发送VOLTE开关标识到CAT1
 
 #ifdef __cplusplus
 #if __cplusplus