From: DXY <1731678236@qq.com> Date: Sat, 3 Aug 2024 08:08:15 +0000 (+0800) Subject: BLE端增加发送VOLTE开关接口到CAT1:CAT1处理VOLTE开关功能接口 默认需要开启VOLTE开启: 移动入库增加新的数据字段上传 X-Git-Tag: release_V1.2.70_20241020_135402~702^2~1 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=191910563d7a48ccfb019ac94c86652f18e0ca63;p=mirrors%2FFD230.git BLE端增加发送VOLTE开关接口到CAT1:CAT1处理VOLTE开关功能接口 默认需要开启VOLTE开启: 移动入库增加新的数据字段上传 --- diff --git a/cat1modem/src/cat1Service.py b/cat1modem/src/cat1Service.py index 6a02992d8..45044c179 100644 --- a/cat1modem/src/cat1Service.py +++ b/cat1modem/src/cat1Service.py @@ -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: diff --git a/cat1modem/src/china_mobile_dmp.py b/cat1modem/src/china_mobile_dmp.py index 6d353d651..57437b6a0 100644 --- a/cat1modem/src/china_mobile_dmp.py +++ b/cat1modem/src/china_mobile_dmp.py @@ -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 diff --git a/code/sdk/drivers/peripheral/config/include/ConfigModel.h b/code/sdk/drivers/peripheral/config/include/ConfigModel.h index 7414d00b1..abe959d85 100644 --- a/code/sdk/drivers/peripheral/config/include/ConfigModel.h +++ b/code/sdk/drivers/peripheral/config/include/ConfigModel.h @@ -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 diff --git a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp index 6f93fc085..e66f8472f 100644 --- a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp +++ b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp @@ -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(); } /* diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index 696d4792c..f2c06ab54 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -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(); } } diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h index 119d8a421..92aeea02b 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.h @@ -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