void print_device_version(INI_FILE *fp) { int8 version_buff[INI_VERSION_STR_LEN] = {0}; int32 l_ret; l_ret = ini_find_var(fp, INI_MODU_PLAT, INI_VAR_PLAT_BOARD, version_buff, sizeof(version_buff)); if (INI_FAILED == l_ret) { version_buff[0] = '\0'; fp->f_pos = 0; return ; } if (INI_FAILED == ini_check_value(version_buff)) { fp->f_pos = 0; return ; } strncpy(g_board_version.board_version, version_buff, INI_VERSION_STR_LEN); INI_INFO("::g_board_version.board_version = %s::", g_board_version.board_version); fp->f_pos = 0; l_ret = ini_find_var(fp, INI_MODU_PLAT, INI_VAR_PLAT_PARAM, version_buff, sizeof(version_buff)); if (INI_FAILED == l_ret) { version_buff[0] = '\0'; fp->f_pos = 0; return ; } if (INI_FAILED == ini_check_value(version_buff)) { fp->f_pos = 0; return ; } strncpy(g_param_version.param_version, version_buff, INI_VERSION_STR_LEN); INI_INFO("::g_param_version.param_version = %s::", g_param_version.param_version); fp->f_pos = 0; return ; }
static int __init ini_cfg_init(void) { int8 auc_value[20]; #ifdef CONFIG_HWCONNECTIVITY if (!isMyConnectivityChip(CHIP_TYPE_HI110X)) { INI_ERROR("cfg ini chip type is not match, skip driver init"); return -EINVAL; } else { INI_INFO("cfg init type is matched with hi110x, continue"); } #endif INI_DEBUG("k3v2 .ini config search init!\n"); /*init mutex*/ INI_INIT_MUTEX(&file_mutex); #ifdef INI_TEST #if 1 ini_find_var_value(INI_MODU_WIFI, "wifi_ini_mode", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_ini_mode", auc_value); ini_find_var_value(INI_MODU_BT, "bt_ini_mode", auc_value); ini_find_var_value(INI_MODU_FM, "fm_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI, "loglevel", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_down", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_up", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_gpsglonass", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_bdgps", auc_value); ini_find_var_value(INI_MODU_BT, "bt_normal", auc_value); ini_find_var_value(INI_MODU_FM, "fm_normal", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_normal", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_normal", auc_value); #endif #endif return INI_SUCC; }
int32 ini_config_init(int32 modu) { int8 log_status[10] = {0}; int32 log_value; int32 l_ret = INI_FAILED; INI_FILE *fp = NULL; /* init only once */ if (INI_MODU_PLAT != modu) { if (NULL == INI_FILE_PATH) { INI_ERROR("didn't get ini file path!!!"); return INI_FAILED; } strncpy(gac_file, INI_FILE_PATH, INI_VAR_FILE_LEN); gac_file[INI_VAR_FILE_LEN] = '\0'; return INI_SUCC; } INI_DEBUG("open ini file:%s", gac_file); fp = ini_file_open(gac_file, "rt"); if (0 == fp) { INI_ERROR("open %s failed!!!", gac_file); return INI_FAILED; } INI_DEBUG("open %s succ!", gac_file); l_ret = ini_find_var(fp, INI_MODU_PLAT, INI_VAR_LOG_CFG_STATUS, log_status); if (INI_FAILED == l_ret) { ini_file_close(fp); return INI_FAILED; } if (INI_FAILED == ini_check_value(log_status)) { ini_file_close(fp); return INI_FAILED; } sscanf(log_status, "%d", &log_value); if (0 > log_value) { INI_ERROR("log_status value=%d not support!!!", log_value); ini_file_close(fp); return INI_FAILED; } INI_INFO("::log_status value=%d::", log_value); ini_file_close(fp); #if 0 if (INI_VAR_CFG_ENABLE == log_value) { fp = ini_file_open(INI_FILE_PATH, "rt"); if (0 == fp) { INI_ERROR("open %s failed!!!", INI_FILE_PATH); return INI_FAILED; } l_ret = ini_find_var(fp, INI_MODU_PLAT, INI_VAR_LOG_CFG_FILE, gac_cfg_file); if (INI_FAILED == l_ret) { ini_file_close(fp); return INI_FAILED; } if (INI_FAILED == ini_check_value(gac_cfg_file)) { ini_file_close(fp); return INI_FAILED; } //INI_DEBUG("::gac_cfg_file = %s::", gac_cfg_file); strncpy(gac_file, gac_cfg_file, INI_VAR_FILE_LEN); gac_file[INI_VAR_FILE_LEN] = '\0'; if (INI_FAILED == access(gac_file, 0)) { INI_ERROR("%s is not exist, init log control system", gac_file); l_ret = system("/system/bin/set_log_hisi -S init"); if (INI_SUCC!= l_ret) { INI_ERROR("system() run err"); ini_file_close(fp); return INI_FAILED; } } } ini_file_close(fp); #endif return INI_SUCC; }
int ini_cfg_init(void) { // int8 auc_value[20]; int32 ret; int8 auc_dts_ini_path[INI_FILE_PATH_LEN] = {0}; int8 auc_cust_spec_ini_path[INI_FILE_PATH_LEN] = {0}; int8 auc_cust_comm_ini_path[INI_FILE_PATH_LEN] = {0}; #ifdef CONFIG_HWCONNECTIVITY if (!isMyConnectivityChip(CHIP_TYPE_HI110X)) { INI_ERROR("cfg ini chip type is not match, skip driver init"); return -EINVAL; } else { INI_INFO("cfg init type is matched with hi110x, continue"); } #endif INI_DEBUG("hi110x ini config search init!\n"); ret = get_cust_conf_string(CUST_MODU_DTS, PROC_NAME_INI_FILE_NAME, auc_dts_ini_path, sizeof(auc_dts_ini_path)); if ( 0 > ret ) { INI_ERROR("can't find dts proc %s\n", PROC_NAME_INI_FILE_NAME); return INI_FAILED; } snprintf(auc_cust_spec_ini_path, sizeof(auc_cust_spec_ini_path), "%s%s", CUST_PATH_SPEC, auc_dts_ini_path); snprintf(auc_cust_comm_ini_path, sizeof(auc_cust_comm_ini_path), "%s%s", CUST_PATH_COMM, auc_dts_ini_path); /*如果ini文件在cust中,则使用cust中的ini文件,否则使用dts中配置的ini文件*/ /*recovery 模式下,此时ini文件可能不能访问,这种情况下,使用dts里配置的值为默认值*/ if (ini_file_exist(auc_cust_spec_ini_path)) { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_cust_spec_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } else if (ini_file_exist(auc_cust_comm_ini_path)) { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_cust_comm_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } else { snprintf(g_ini_file_name, sizeof(g_ini_file_name), "%s", auc_dts_ini_path); INI_INFO("%s@%s\n", PROC_NAME_INI_FILE_NAME, g_ini_file_name); } INI_INIT_MUTEX(&file_mutex); #ifdef INI_TEST #if 1 ini_find_var_value(INI_MODU_WIFI, "wifi_ini_mode", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_ini_mode", auc_value); ini_find_var_value(INI_MODU_BT, "bt_ini_mode", auc_value); ini_find_var_value(INI_MODU_FM, "fm_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_ini_mode", auc_value); ini_find_var_value(INI_MODU_WIFI, "loglevel", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_down", auc_value); ini_find_var_value(INI_MODU_WIFI, "data_rate_up", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_gpsglonass", auc_value); ini_find_var_value(INI_MODU_GNSS, "gnss_bdgps", auc_value); ini_find_var_value(INI_MODU_BT, "bt_normal", auc_value); ini_find_var_value(INI_MODU_FM, "fm_normal", auc_value); ini_find_var_value(INI_MODU_WIFI_PLAT, "wifi_plat_normal", auc_value); ini_find_var_value(INI_MODU_BFG_PLAT, "bfg_plat_normal", auc_value); #endif #endif return INI_SUCC; }
static int32 ini_write_mode_value(INI_FILE *fp, int32 modu, int8 * puc_var, int8 * puc_value) { int32 l_len; int32 ret; int8 auc_tmp[MAX_READ_LINE_NUM + 1] = {0}; int8 auc_mode_var[INI_STR_MODU_LEN + 1] = {0}; int8 *puc_val = NULL; int8 auc_change_bin[INI_STR_MODU_LEN * 2 + 1] = {0}; int8 auc_cmd[INI_STR_MODU_LEN * 4 + 1] = {0}; int16 search_var_len; switch (modu) { case INI_MODU_WIFI: strncpy(auc_mode_var, INI_MODE_VAR_WIFI, INI_STR_MODU_LEN); if ('0' > puc_value[0] || '2' < puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } break; case INI_MODU_GNSS: if ('0' > puc_value[0] || '1' < puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } strncpy(auc_mode_var, INI_MODE_VAR_GNSS, INI_STR_MODU_LEN); break; case INI_MODU_BT: if ('0' != puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } strncpy(auc_mode_var, INI_MODE_VAR_BT, INI_STR_MODU_LEN); break; case INI_MODU_FM: if ('0' != puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } strncpy(auc_mode_var, INI_MODE_VAR_FM, INI_STR_MODU_LEN); break; case INI_MODU_WIFI_PLAT: if ('0' != puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } strncpy(auc_mode_var, INI_MODE_VAR_WIFI_PLAT, INI_STR_MODU_LEN); break; case INI_MODU_BFG_PLAT: if ('0' != puc_value[0]) { INI_ERROR("not support mode!!!"); return INI_FAILED; } strncpy(auc_mode_var, INI_MODE_VAR_BFG_PLAT, INI_STR_MODU_LEN); break; default : INI_ERROR("not suport modu type!!!"); break; } while(1) { ret = ini_readline_func(fp, auc_tmp); if (INI_FAILED == ret) { INI_ERROR("have end of .ini file!!!"); return INI_FAILED; } if (NULL != strstr(auc_tmp, INI_STR_WIFI_NORMAL0)) { INI_ERROR("not find %s!!!", auc_mode_var); return INI_FAILED; } ret = ini_check_str(fp, auc_tmp, auc_mode_var); if (INI_SUCC == ret) { INI_DEBUG("have found %s", auc_mode_var); break; } else { continue; } } puc_val = strstr(auc_tmp, "="); if (NULL == puc_val) { INI_ERROR("has not find = in %s", auc_tmp); return INI_FAILED; } if (INI_FAILED == ini_check_value(puc_val + 1)) { INI_ERROR("not support to write :%s:", auc_tmp); return INI_FAILED; } l_len = strlen(auc_tmp); search_var_len = strlen(puc_var); strncpy(&auc_tmp[search_var_len+1], puc_value, 1); if (INI_FAILED == fseek(fp, -l_len, SEEK_CUR)) { INI_ERROR("file seek failed!!!"); return INI_FAILED; } if (fputs(auc_tmp, fp)) { INI_DEBUG("puc_write_val :%s: ok", auc_tmp); } if (INI_MODU_WIFI == modu) { if ('0' == puc_value[0]) { strncpy(auc_change_bin, INI_SDIOBIN_NORMAL, INI_STR_MODU_LEN * 2); } else if ('1' == puc_value[0]) { strncpy(auc_change_bin, INI_SDIOBIN_PERFORMANCE, INI_STR_MODU_LEN * 2); } else if ('2' == puc_value[0]) { strncpy(auc_change_bin, INI_SDIOBIN_CERTIFY, INI_STR_MODU_LEN * 2); } else { INI_ERROR("not support to bin type %s", auc_change_bin); return INI_FAILED; } sprintf(auc_cmd, INI_STR_MODU_LEN * 4,"cp %s %s", auc_change_bin, INI_SDIOBIN_DEFAULT); INI_INFO("exct %s", auc_cmd); system(auc_cmd); } return INI_SUCC; }