650入库修改
authorhcj <1224667075@qq.com>
Fri, 7 Nov 2025 06:56:22 +0000 (14:56 +0800)
committerhcj <1224667075@qq.com>
Fri, 7 Nov 2025 06:56:22 +0000 (14:56 +0800)
code/sdk/zhihui/4g/cat1Service/Service/cat1_server.c
code/sdk/zhihui/ai_old/websocket_server_example.cpp
code/sdk/zhihui/config/include/ConfigModel.h
code/sdk/zhihui/config/include/ConfigModelC.h
code/sdk/zhihui/config/src/ConfigModel.cpp
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.c
code/sdk/zhihui/utils/custom_utils.c

index 25328b6..c1b8192 100644 (file)
@@ -62,6 +62,7 @@ extern "C" {
 #include "cat1_utils.h"
 #include "cmsis_os.h"
 
+#include "ConfigModelC.h"
 static uint8_t g_skip_cat1_service_udp_transfer = 0;
 static f_cat1_msg_callback g_cat1_msg_callback_func=NULL;
 #define PEER_IP "172.16.1.2"
@@ -114,9 +115,13 @@ enum UDP_COMMAND_HEAD {
     UDP_MSG_WATCH_REPLY_ACK = 0xAC,//
     // UDP_MSG_WATCH_REPLY_HANGUP = 0x21,//
 };
+
+void udp_send_msg_toCat1(uint8_t cmd,char *content);
+
 /** 0: old format 1字节cmd, 1: new format 2字节cmd */
 static uint8_t g_msg_format_type = 0;
 // void watch_replay_cat1_ANSWER(void);
+void cat1_get_DEV_ID(void);
 
 static char ble_buffer[20] = {0};
 
@@ -137,6 +142,37 @@ void ble_get_cat1_at_msg(char *buffer,uint8_t len)
     memcpy_s(buffer,len,ble_buffer,strlen(ble_buffer));
 }
 
+void send_ble_mac_toCat1(void)//发送BLE mac地址 to CAT1
+{
+    errcode_t ret = 0;
+    uint8_t btaddr[6] = {0};
+    char btaddr_str[64] = {0};
+    uint32_t len = 6;
+    ret = uapi_get_nv_btaddr((uint8_t *)btaddr, &len);
+    sprintf_s((char *)btaddr_str,64,"%02X:%02X:%02X:%02X:%02X:%02X", btaddr[0], btaddr[1], btaddr[2], btaddr[3], btaddr[4], btaddr[5]);
+    udp_send_msg_toCat1(UDP_MSG_SEND_BLE_MAC_TO_CAT1,btaddr_str);
+}
+void send_dmp_factory_flag(void)//发送入库出厂标识
+{
+    printf("send_dmp_factory_flag\r\n");
+    char send_str[10] = {0};
+    int state = Get_Dmp_Factory_Status();
+    sprintf_s((char *)send_str,10, "%d", state);
+    udp_send_msg_toCat1(UDP_MSG_RECV_DMP_FACTORY,send_str);//发送和接收同一个指令
+}
+
+
+void send_volte_switch_toCat1(void)//发送VOLTE->CAT1
+{
+    bool Cat1_4G =cm_poweron_cat1_on_bootup_flag();
+    if (Cat1_4G == 0)
+        return;
+
+    bool volte = get_volte_switch();
+    char send_str[5] = {0};
+    sprintf_s((char *)send_str,5, "%d", volte);
+    udp_send_msg_toCat1(UDP_MSG_SEND_VOLTE_SWITCH,send_str);
+}
 
 
 f_cat1_msg_callback g_msg_callback_func=NULL;
@@ -306,6 +342,8 @@ static osTimerId_t g_timer_time_answer = NULL;
 
 static osTimerId_t g_timer_time_Dial = NULL;
 
+
+
 /**如果 
  * g_python_updated == 0 && 
  * g_py_ver >= PY_SRV_VER_SUPORT_PY_OTA_MINI_VER &&
@@ -444,6 +482,16 @@ void udp_send_msg_toCat1(uint8_t cmd,char *content)
     }
 }
 
+void get_software_version_toCat1(void)//发送固件版本到cat1
+{
+    char version_buf[128] = {0};
+    uint32_t version_len = 128;
+    uapi_get_buildversion((uint8_t *)version_buf, version_len);
+    printf("version_buf %s\r\n",version_buf);
+    udp_send_msg_toCat1(UDP_MSG_GET_SOFTWARE_VESION,version_buf);
+    return;
+}
+
 #define BOOTMSG_HEADER_STR "BOOTUP"
 #define BOOTMSG_HEADER_STR_LEN strlen(BOOTMSG_HEADER_STR)
 #define NETSTAT_HEADER_STR "imei:"
@@ -1286,6 +1334,15 @@ void cat1_start_tcp_ota_init(void)
 }
 
 
+void send_dmp_mode_toCat1(uint8_t on)//设置
+{   
+    cat1_print_dbg("set_telecom_dmp_switch_toCat1 on:%d\r\n",on);
+    char buf[10] ={0};
+    sprintf_s(buf,10,"%d",on);
+    udp_send_msg_toCat1(UDP_MSG_SET_TELECON_DMP_SWITCH,buf);//1开启 0关闭
+}
+
+
 
 /**
  * @brief 发送指令给Cat1,输入 CMD_4G_T , cmd_buf 为指令所需参数.
@@ -1373,10 +1430,10 @@ static int udp_packet_parse(char *rx_buffer, int len)
 
         switch (cmd) {
         case UDP_MSG_COMMING_CALL:
-        #ifdef SUPPORT_DMP
+        // #ifdef SUPPORT_DMP
             if (get_volte_switch() == false) //如果VOLTE开关没有开启则不接CAT1的来电功能
                 break;
-        #endif
+        // #endif
             index = cat1_handle_call_incomming(msg_buffer);
             // uapi_save_runtime_log(RUNTIME_LOG_CAT1_UDP_MSG_COMMING);
             break;
@@ -1446,7 +1503,7 @@ static int udp_packet_parse(char *rx_buffer, int len)
 #endif 
 
                 if(g_msg_format_type == 0) break;  //下面指令只有新格式才支持,因此返回
-                #if 0
+                #if 1
                 int stateOld = get_dmp_change_mode_old();
                 int stateNew = get_dmp_change_mode_toCat1();//0 stateOld = 0 0-1
                 if (stateNew == 0){//关闭入库功能 把恢复出厂标识清0
@@ -1466,12 +1523,11 @@ static int udp_packet_parse(char *rx_buffer, int len)
                     }else {
                         get_software_version_toCat1();
                         send_ble_mac_toCat1();
-                        send_dmp_cm_address_toCat1();
                         send_volte_switch_toCat1();
                         send_dmp_factory_flag();
                     }
                 }
-            #endif
+                #endif
        
             }
             if(strstr(msg_buffer,"callanswer_success")!=NULL)
@@ -1529,9 +1585,9 @@ static int udp_packet_parse(char *rx_buffer, int len)
             break;
         case UDP_MSG_RECV_DMP_FACTORY:
             //  uapi_save_runtime_log(RUNTIME_LOG_CAT1_UDP_MSG_RECV_DMP);
-        #ifdef SUPPORT_DMP
+        // #ifdef SUPPORT_DMP
             set_dmp_china_mobile_factory_flag(msg_buffer);
-        #endif
+        // #endif
             break;
         case UDP_MSG_RECV_CAT1_SMS_CONTENT://接收单条短信内容
         case UDP_MSG_SMS:
index b110946..304e846 100644 (file)
@@ -433,7 +433,11 @@ bool chat_url_callback(ws_server_type_t type, char *url_buf, uint32_t url_size,
     } else {
         char device_id[128] = {0};
         get_cmai_dev_id(device_id);
+        #ifdef BOARD_N9
+        char *product_id = "1980099696668815362";
+        #else
         char *product_id = "1927646275585744898";
+        #endif
         
         // 根据全局AI类型选择不同的URL
         if (g_chat_ai_type == 1) { // AI_TYPE_JIU
index 8130443..93a348a 100644 (file)
@@ -323,7 +323,7 @@ namespace OHOS
             {ConfigDataType::DATATYPE_BOOL,    "classicbt_service_on",     "true"  },// CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
             {ConfigDataType::DATATYPE_INT,     "screen_brightness",         "155"    },//CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE,   //屏幕亮度
             {ConfigDataType::DATATYPE_INT,     "screenoff_timeout_value",    "5000"  },//CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE,   //屏幕自动息屏时间 默认 5秒 5000ms
-        #if defined(SUPPORT_CHINA_MOBILE_DMP) || defined(SUPPORT_A5133_SERVICE) //移动入库软件要求默认开启4G
+        #if defined(SUPPORT_CHINA_MOBILE_DMP) || defined(SUPPORT_A5133_SERVICE) ||  defined(SUPPORT_CHINA_MOBILE_AI_REGULATION)  //移动入库软件要求默认开启4G
             {ConfigDataType::DATATYPE_BOOL,    "cat1_service_on",          "true" },//CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
         #else
             {ConfigDataType::DATATYPE_BOOL,    "cat1_service_on",          "false" },//CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
@@ -410,6 +410,9 @@ namespace OHOS
             #elif defined(SUPPORT_CHINA_MOBILE_DMP)   //移动入库     
             {ConfigDataType::DATATYPE_INT,     "dmp_change_mode",              "2"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE 入库切换模式 默认值 1
             {ConfigDataType::DATATYPE_INT,     "dmp_change_mode_old",       "2"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE_OLD 默认值 1 要和新默认值一致
+            #elif defined(SUPPORT_CHINA_MOBILE_AI_REGULATION)   //移动入库   
+                {ConfigDataType::DATATYPE_INT,     "dmp_change_mode",          "3"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE 入库切换模式 默认值 1
+            {ConfigDataType::DATATYPE_INT,     "dmp_change_mode_old",       "3"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE_OLD 默认值 1 要和新默认值一致
             #else  //关闭入库功能
             {ConfigDataType::DATATYPE_INT,     "dmp_change_mode",              "0"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE 入库切换模式 默认值 1
             {ConfigDataType::DATATYPE_INT,     "dmp_change_mode_old",       "0"           },//CONFIGMODEL_ITEM_DMP_CHANGE_MODE_OLD 默认值 1 要和新默认值一致
index 52ce2ba..c6dbc6d 100644 (file)
@@ -175,6 +175,19 @@ void cm_set_dmp_data_pass(const char *data_pass);
 size_t cm_get_dmp_data_pass(char *buf, size_t buf_size);
 
 
+int get_dmp_change_mode_old(void);
+
+int get_dmp_change_mode_toCat1(void);//获取切换模式TO CAT1
+
+void set_dmp_change_mode_old(uint8_t mode);//获取切换模式TO CAT1;
+
+void set_dmp_china_mobile_factory_flag(char *msg);
+
+int Get_Dmp_Factory_Status(void);
+
+bool get_volte_switch(void);//
+
+//设置factory状态
 #ifdef __cplusplus
 #if __cplusplus
 }
index 19822b9..c8e1706 100644 (file)
@@ -1657,6 +1657,23 @@ void cm_set_A2DP_switch(bool value)
     OHOS::ConfigModel::GetInstance()->set_condigData_Bool(OHOS::ConfigModel::CONFIGMODEL_ITEM_A2DP,value);
 }
 
+int get_dmp_change_mode_old(void)//获取切换模式TO CAT1
+{
+    int state = OHOS::ConfigModel::GetInstance()->GetDmpChangeModeOld();
+    return state;
+}
+
+int get_dmp_change_mode_toCat1(void)//获取切换模式TO CAT1
+{
+    int state = OHOS::ConfigModel::GetInstance()->GetDmpChangeMode();
+    return state;
+}
+
+void set_dmp_change_mode_old(uint8_t mode)//获取切换模式TO CAT1
+{
+    OHOS::ConfigModel::GetInstance()->SetDmpChangeModeOld(mode);
+    return;
+}
 
 // stop play music
 void mmi_stop_music_play(void)
@@ -1729,7 +1746,23 @@ size_t cm_get_dmp_data_pass(char *buf, size_t buf_size)
     return copy_len;
 }
 
+void set_dmp_china_mobile_factory_flag(char *msg)//设置factory状态
+{
+    printf("set_dmp_china_mobile_factory_flag:%s\r\n",msg);
+    int state = atoi(msg);
+    OHOS::ConfigModel::GetInstance()->SetDmpFactoryStatus(state);
+}
 
+int Get_Dmp_Factory_Status(void)//设置factory状态
+{
+   return OHOS::ConfigModel::GetInstance()->GetDmpFactoryStatus();
+}
+
+bool get_volte_switch(void)//
+{
+    bool volte = OHOS::ConfigModel::GetInstance()->GetVoLTE_Call();
+    return volte;
+}
 
 #ifdef __cplusplus
 #if __cplusplus
index d2e8787..3929090 100644 (file)
@@ -1195,7 +1195,11 @@ void Get_AI_DEV_ID_Cmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalDat
 
         cJSON *dataJSON = cJSON_CreateObject();
         cJSON_AddStringToObject(dataJSON,"device_id",device_id);
+        #ifdef BOARD_N9
+        cJSON_AddStringToObject(dataJSON,"product_id","1980099696668815362");
+        #else
         cJSON_AddStringToObject(dataJSON,"product_id","1927646275585744898");
+        #endif
         char *json_format = cJSON_PrintUnformatted(dataJSON);
         cJSON_Delete(dataJSON);
 
index 3b44f5f..0eb354b 100644 (file)
@@ -2029,13 +2029,16 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len)
  (void)sprintf_s(str, VER_STR_MAX, "V%s",
                     get_version_string());
 
+
 #else
 
             #if defined(SUPPORT_TELECOM_DMP)
             #if defined(SUPPORT_CHINA_MOBILE_DMP)
-            #error  SUPPORT_TELECOM_DMP  SUPPORT_CHINA_MOBILE_DMP Cannot define at same time!
+            #error  SUPPORT_TELECOM_DMP  SUPPORT_CHINA_MOBILE_DMP SUPPORT_CHINA_MOBILE_AI_REGULATION Cannot define at same time!
             #endif
             (void)sprintf_s(str, VER_STR_MAX, "V%s_%s_CT",
+            #elif defined(SUPPORT_CHINA_MOBILE_AI_REGULATION)
+            (void)sprintf_s(str, VER_STR_MAX, "V%s_%s_CM_AI",
             #elif defined(SUPPORT_CHINA_MOBILE_DMP)          
             (void)sprintf_s(str, VER_STR_MAX, "V%s_%s_CM",
             #else