#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"
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};
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;
static osTimerId_t g_timer_time_Dial = NULL;
+
+
/**如果
* g_python_updated == 0 &&
* g_py_ver >= PY_SRV_VER_SUPORT_PY_OTA_MINI_VER &&
}
}
+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:"
}
+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 为指令所需参数.
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;
#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
}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)
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:
} 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
{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启动着,则重启仍然启动,反之亦然
#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 要和新默认值一致
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
}
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)
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
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);
(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