int init_setting(void) { // double data; char temp[128] = {'\0'}; INI_HANDLE handle = ini_open("setting.ini"); if(handle == INI_FAIL){ print_errmsg("%s\n", ini_geterrmsg()); return -1; } // if(mem_set() != 0) { print_errmsg("memory alloc fail!\n"); return -1; } load_default(); ini_get_key_ulong(handle, "system", "CMD_BUFFER_SIZE", &sys->cmd_buffer_size); ini_get_key_ulong(handle, "system", "CMD_BUFFER_NEAR_FULL", &sys->cmd_buffer_near_full); ini_get_key_ulong(handle, "system", "BLOCK_BUFFER_SIZE", &sys->block_buffer_size); ini_get_key_ulong(handle, "system", "BLOCK_BUFFER_BOUND", &sys->block_buffer_bound); ini_get_key_ulong(handle, "system", "MAX_CMD_SIZE", &sys->max_cmd_size); ini_get_key_ulong(handle, "system", "STEPPER_BUFFER_SIZE", &sys->stepper_buffer_size); ini_get_key_ulong(handle, "system", "STEPPER_BUFFER_BOUND", &sys->stepper_buffer_bound); ini_get_key_ulong(handle, "system", "MIN_STEP_PULSE_DUTY", &sys->min_step_pulse_duty); ini_get_key_ulong(handle, "system", "DEFAULT_PULSE_PERIOD", &sys->default_pulse_period); ini_get_key_ulong(handle, "system", "DEFAULT_PULSE_DUTY", &sys->default_pulse_duty); ini_get_key_ulong(handle, "system", "HIT_PULSE_PERIOD", &sys->hit_pulse_period); ini_get_key_ulong(handle, "system", "HIT_PULSE_DUTY", &sys->hit_pulse_duty); ini_get_key_int(handle, "machine", "MIN_SOFTWARE_LIMIT", &machine->min_software_limit); ini_get_key_int(handle, "machine", "MAX_SOFTWARE_LIMIT", &machine->max_software_limit); //TODO:改不管大小寫 ini_get_key(handle, "machine", "TYPE", &temp[0]); if(strcmp(temp, "H_BOT") == 0) machine->type = H_BOT; else if(strcmp(temp, "DELTA") == 0) machine->type = DELTA; else machine->type = NORMAL; ini_get_key_int(handle, "machine", "NUM_AXIS", &machine->num_axis); ini_get_key_double(handle, "machine", "X_MAX_POS_MM", &machine->x_max_pos_mm); ini_get_key_double(handle, "machine", "X_MIN_POS_MM", &machine->x_min_pos_mm); ini_get_key_double(handle, "machine", "X_HOME_POS_MM", &machine->x_home_pos_mm); ini_get_key_double(handle, "machine", "Y_MAX_POS_MM", &machine->y_max_pos_mm); ini_get_key_double(handle, "machine", "Y_MIN_POS_MM", &machine->y_min_pos_mm); ini_get_key_double(handle, "machine", "Y_HOME_POS_MM", &machine->y_home_pos_mm); ini_get_key_double(handle, "machine", "Z_MAX_POS_MM", &machine->z_max_pos_mm); ini_get_key_double(handle, "machine", "Z_MIN_POS_MM", &machine->z_min_pos_mm); ini_get_key_double(handle, "machine", "Z_HOME_POS_MM", &machine->z_home_pos_mm); ini_get_key_double(handle, "machine", "X_HOME_RETRACT_MM", &machine->x_home_retract_mm); ini_get_key_double(handle, "machine", "Y_HOME_RETRACT_MM", &machine->y_home_retract_mm); ini_get_key_double(handle, "machine", "Z_HOME_RETRACT_MM", &machine->z_home_retract_mm); ini_get_key_int(handle, "machine", "X_HOME_DIR", &machine->x_home_dir);; ini_get_key_int(handle, "machine", "Y_HOME_DIR", &machine->y_home_dir); ini_get_key_int(handle, "machine", "Z_HOME_DIR", &machine->z_home_dir); ini_get_key_double(handle, "machine", "QX_STEPS_PER_MM", &machine->qx_steps_per_mm); ini_get_key_double(handle, "machine", "QY_STEPS_PER_MM", &machine->qy_steps_per_mm); ini_get_key_double(handle, "machine", "QZ_STEPS_PER_MM", &machine->qz_steps_per_mm); ini_get_key_double(handle, "machine", "QE_STEPS_PER_MM", &machine->qe_steps_per_mm); ini_get_key_double(handle, "machine", "X_MAX_FEEDRATE", &machine->x_max_feedrate_mps); ini_get_key_double(handle, "machine", "Y_MAX_FEEDRATE", &machine->y_max_feedrate_mps); ini_get_key_double(handle, "machine", "Z_MAX_FEEDRATE", &machine->z_max_feedrate_mps); ini_get_key_double(handle, "machine", "E_MAX_FEEDRATE", &machine->e_max_feedrate_mps); ini_get_key_double(handle, "machine", "X_HOMING_FEEDRATE", &machine->x_homing_feedrate_mpm); ini_get_key_double(handle, "machine", "Y_HOMING_FEEDRATE", &machine->y_homing_feedrate_mpm); ini_get_key_double(handle, "machine", "Z_HOMING_FEEDRATE", &machine->z_homing_feedrate_mpm); ini_get_key_double(handle, "machine", "QX_MAX_ACCELERATION", &machine->qx_max_acceleration); ini_get_key_double(handle, "machine", "QY_MAX_ACCELERATION", &machine->qy_max_acceleration); ini_get_key_double(handle, "machine", "QZ_MAX_ACCELERATION", &machine->qz_max_acceleration); ini_get_key_double(handle, "machine", "QE_MAX_ACCELERATION", &machine->qe_max_acceleration); ini_get_key_double(handle, "machine", "DEFAULT_ACCELERATION", &machine->default_acceleration); ini_get_key_double(handle, "machine", "DEFAULT_RETRACT_ACCELERATION", &machine->default_retract_acceleration); ini_get_key_double(handle, "machine", "DEFAULT_MINIMUMFEEDRATE", &machine->default_minimumfeedrate); ini_get_key_double(handle, "machine", "DEFAULT_MINTRAVELFEEDRATE", &machine->default_mintravelfeedrate); ini_get_key_double(handle, "machine", "DEFAULT_XYJERK", &machine->default_xyjerk); ini_get_key_double(handle, "machine", "DEFAULT_EJERK", &machine->default_ejerk); ini_get_key_double(handle, "machine", "DEFAULT_ZJERK", &machine->default_zjerk); ini_get_key_double(handle, "machine", "MINIMUM_PLANNER_SPEED", &machine->minimum_planner_speed); //這裡必須檔0.5 跟 DUTY_MIN ini_get_key_double(handle, "machine", "STEP_PULSE_DUTY_RATE", &data); if(data < 0.5) machine->step_pulse_duty_ratio = 0.5; else if(data > 1 && data < (double)sys->min_step_pulse_duty) machine->step_pulse_duty_ratio = (double)sys->min_step_pulse_duty; else machine->step_pulse_duty_ratio = data; //TODO:改不管大小寫 ini_get_key(handle, "machine", "LIMIT_SPEED", &temp[0]); if(strcmp(temp, "250k") == 0) machine->mcm_samplecycle = 25; else if(strcmp(temp, "200k") == 0) machine->mcm_samplecycle = 20; else if(strcmp(temp, "100k") == 0) machine->mcm_samplecycle = 10; else if(strcmp(temp, "50k") == 0) machine->mcm_samplecycle = 5; else if(strcmp(temp, "40k") == 0) machine->mcm_samplecycle = 4; else machine->mcm_samplecycle = 1; ini_get_key_int(handle, "machine", "MM_PER_ARC_SEGMENT", &machine->mm_per_arc_segment); ini_get_key_int(handle, "machine", "N_ARC_CORRECTION", &machine->n_arc_correction); ini_get_key_double(handle, "machine", "X_HOME_OFFSET", &machine->home_offset[0]); ini_get_key_double(handle, "machine", "Y_HOME_OFFSET", &machine->home_offset[1]); ini_get_key_double(handle, "machine", "Z_HOME_OFFSET", &machine->home_offset[2]); ini_get_key_int(handle, "pins", "mc_qx", &pins->mc_qx); ini_get_key_int(handle, "pins", "md_qx", &pins->md_qx); ini_get_key_int(handle, "pins", "mc_qy", &pins->mc_qy); ini_get_key_int(handle, "pins", "md_qy", &pins->md_qy); ini_get_key_int(handle, "pins", "mc_qz", &pins->mc_qz); ini_get_key_int(handle, "pins", "md_qz", &pins->md_qz); ini_get_key_int(handle, "pins", "mc_qe", &pins->mc_qe); ini_get_key_int(handle, "pins", "md_qe", &pins->md_qe); ini_get_key_int(handle, "pins", "MC_LIMIT", &pins->mc_limit); ini_get_key_int(handle, "pins", "MD_LIMIT", &pins->md_limit); ini_get_key_int(handle, "pins", "MC_LCD", &pins->mc_lcd); ini_get_key_int(handle, "pins", "MD_LCD", &pins->md_lcd); ini_get_key_int(handle, "pins", "INVERT_X_DIR", &pins->invert_x_dir); ini_get_key_int(handle, "pins", "X_STEP_PIN", &pins->x_step_pin); ini_get_key_int(handle, "pins", "X_DIR_PIN", &pins->x_dir_pin); ini_get_key_int(handle, "pins", "INVERT_Y_DIR", &pins->invert_y_dir); ini_get_key_int(handle, "pins", "Y_STEP_PIN", &pins->y_step_pin); ini_get_key_int(handle, "pins", "Y_DIR_PIN", &pins->y_dir_pin); ini_get_key_int(handle, "pins", "INVERT_Z_DIR", &pins->invert_z_dir); ini_get_key_int(handle, "pins", "Z_STEP_PIN", &pins->z_step_pin); ini_get_key_int(handle, "pins", "Z_DIR_PIN", &pins->z_dir_pin); ini_get_key_int(handle, "pins", "INVERT_E_DIR", &pins->invert_e_dir); ini_get_key_int(handle, "pins", "E_STEP_PIN", &pins->e_step_pin); ini_get_key_int(handle, "pins", "E_DIR_PIN", &pins->e_dir_pin); ini_get_key_int(handle, "pins", "X_ENABLE_PORT", &pins->x_enable_port); ini_get_key_int(handle, "pins", "X_ENABLE_PIN", &pins->x_enable_pin); ini_get_key_int(handle, "pins", "INVERT_X_ENABLE", &pins->invert_x_enable); ini_get_key_int(handle, "pins", "Y_ENABLE_PORT", &pins->y_enable_port); ini_get_key_int(handle, "pins", "Y_ENABLE_PIN", &pins->y_enable_pin); ini_get_key_int(handle, "pins", "INVERT_Y_ENABLE", &pins->invert_y_enable); ini_get_key_int(handle, "pins", "Z_ENABLE_PORT", &pins->z_enable_port); ini_get_key_int(handle, "pins", "Z_ENABLE_PIN", &pins->z_enable_pin); ini_get_key_int(handle, "pins", "INVERT_Z_ENABLE", &pins->invert_z_enable); ini_get_key_int(handle, "pins", "E_ENABLE_PORT", &pins->e_enable_port); ini_get_key_int(handle, "pins", "E_ENABLE_PIN", &pins->e_enable_pin); ini_get_key_int(handle, "pins", "INVERT_E_ENABLE", &pins->invert_e_enable); ini_get_key_int(handle, "temperature", "EXTRUDERS", &tp->extruders); ini_get_key_ulong(handle, "temperature", "PWM_PERIOD", &tp->pwm_period); ini_get_key_double(handle, "temperature", "HEATER_VELOCITY", &tp->heater_velocity); ini_get_key_double(handle, "temperature", "K1", &tp->K1); tp->K2 = 1 - tp->K1; ini_get_key_int(handle, "temperature", "AUTOTUNE_PID_ENABLE", &tp->autotune_pid_enable); ini_get_key_double(handle, "temperature", "DEFAULT_KP", &tp->default_Kp); ini_get_key_double(handle, "temperature", "DEFAULT_KI", &tp->default_Ki); ini_get_key_double(handle, "temperature", "DEFAULT_KD", &tp->default_Kd); ini_get_key_double(handle, "temperature", "DEFAULT_BEDKP", &tp->default_bedKp); ini_get_key_double(handle, "temperature", "DEFAULT_BEDKI", &tp->default_bedKi); ini_get_key_double(handle, "temperature", "DEFAULT_BEDKD", &tp->default_bedKd); ini_get_key_int(handle, "temperature", "BANG_MAX", &tp->bang_max); ini_get_key_int(handle, "temperature", "PID_MAX", &tp->pid_max); ini_get_key_int(handle, "temperature", "MAX_BED_POWER", &tp->max_bed_power); ini_get_key_int(handle, "temperature", "FAN_MAX", &tp->fan_max); ini_get_key_int(handle, "temperature", "PID_INTEGRAL_DRIVE_MAX", &tp->pid_integral_drive_max); ini_get_key_double(handle, "temperature", "HEATER0_MINTEMP", &tp->heater_mintemp[0]); ini_get_key_double(handle, "temperature", "HEATER0_MAXTEMP", &tp->heater_maxtemp[0]); ini_get_key_double(handle, "temperature", "BED_MINTEMP", &tp->bed_mintemp); ini_get_key_double(handle, "temperature", "BED_MAXTEMP", &tp->bed_maxtemp); ini_get_key_int(handle, "temperature", "OVERSAMPLER", &tp->oversampler); ini_get_key_int(handle, "temperature", "PID_FUNCTIONAL_RANGE", &tp->pid_functional_range); // 86Duino Print3D v1.0 ini_get_key_int(handle, "pins", "MC_PWM_HEATER0", &pins->mc_pwm[0]); ini_get_key_int(handle, "pins", "MD_PWM_HEATER0", &pins->md_pwm[0]); ini_get_key_int(handle, "pins", "MC_PWM_HEATER1", &pins->mc_pwm[1]); ini_get_key_int(handle, "pins", "MD_PWM_HEATER1", &pins->md_pwm[1]); ini_get_key_int(handle, "pins", "MC_PWM_BED", &pins->mc_pwm[2]); ini_get_key_int(handle, "pins", "MD_PWM_BED", &pins->md_pwm[2]); ini_get_key_int(handle, "pins", "MC_PWM_FAN0", &pins->mc_pwm[3]); ini_get_key_int(handle, "pins", "MD_PWM_FAN0", &pins->md_pwm[3]); ini_get_key_int(handle, "pins", "MC_PWM_FAN1", &pins->mc_pwm[4]); ini_get_key_int(handle, "pins", "MD_PWM_FAN1", &pins->md_pwm[4]); ini_get_key_int(handle, "pins", "AD_HEATER0", &pins->extruder_ad[0]); ini_get_key_int(handle, "pins", "AD_HEATER1", &pins->extruder_ad[1]); ini_get_key_int(handle, "pins", "AD_BED", &pins->hotedbed_ad); ini_get_key_int(handle, "pins", "AD_POWER", &pins->vin_ad); /* // 86Duino Print3D v2.0 pins->mc_pwm[0] = 3; pins->md_pwm[0] = 0; pins->mc_pwm[1] = 3; pins->md_pwm[1] = 1; pins->mc_pwm[2] = 2; pins->md_pwm[2] = 2; pins->mc_pwm[3] = 2; pins->md_pwm[3] = 0; pins->mc_pwm[4] = 2; pins->md_pwm[4] = 1; pins->extruder_ad[0] = 0; pins->extruder_ad[1] = 1; pins->hotedbed_ad = 2; pins->vin_ad = 3;*/ ini_get_key_int(handle, "Auto Bed Leveling", "ENABLE_AUTO_BED_LEVELING", &level->enable_auto_bed_leveling); ini_get_key_int(handle, "Auto Bed Leveling", "AUTO_BED_LEVELING_GRID", &level->auto_bed_leveling_grid); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_1_X", &level->abl_probe_pt_1_x); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_1_Y", &level->abl_probe_pt_1_y); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_2_X", &level->abl_probe_pt_2_x); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_2_Y", &level->abl_probe_pt_2_y ); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_3_X", &level->abl_probe_pt_3_x); ini_get_key_double(handle, "Auto Bed Leveling", "ABL_PROBE_PT_3_Y", &level->abl_probe_pt_3_y); ini_get_key_double(handle, "Auto Bed Leveling", "XY_TRAVEL_SPEED", &level->xy_travel_speed); ini_get_key_double(handle, "Auto Bed Leveling", "X_PROBE_OFFSET_FROM_EXTRUDER", &level->x_probe_offset_from_extruder); ini_get_key_double(handle, "Auto Bed Leveling", "Y_PROBE_OFFSET_FROM_EXTRUDER", &level->y_probe_offset_from_extruder); ini_get_key_double(handle, "Auto Bed Leveling", "Z_PROBE_OFFSET_FROM_EXTRUDER", &level->z_probe_offset_from_extruder); ini_get_key_int(handle, "Auto Bed Leveling", "AUTO_BED_LEVELING_GRID_POINTS", &level->auto_bed_leveling_grid_points); ini_get_key_double(handle, "Auto Bed Leveling", "LEFT_PROBE_BED_POSITION", &level->left_probe_bed_position); ini_get_key_double(handle, "Auto Bed Leveling", "RIGHT_PROBE_BED_POSITION", &level->right_probe_bed_position); ini_get_key_double(handle, "Auto Bed Leveling", "BACK_PROBE_BED_POSITION", &level->back_probe_bed_position); ini_get_key_double(handle, "Auto Bed Leveling", "FRONT_PROBE_BED_POSITION", &level->front_probe_bed_position); ini_get_key_double(handle, "Auto Bed Leveling", "Z_RAISE_BEFORE_PROBING", &level->z_raise_before_probing); ini_get_key_double(handle, "Auto Bed Leveling", "Z_RAISE_BETWEEN_PROBINGS", &level->z_raise_between_probings); if(ini_close(handle) == 1){ print_errmsg("ini save fail\n"); } return 0; }
void uwsgi_ini_config(char *file, char *magic_table[]) { size_t len = 0; char *ini; char *ini_line; char *section = ""; char *key; char *val; int lines = 1; char *section_asked = "uwsgi"; char *colon; if (uwsgi_check_scheme(file)) { colon = uwsgi_get_last_char(file, '/'); colon = uwsgi_get_last_char(colon, ':'); } else { colon = uwsgi_get_last_char(file, ':'); } if (colon) { colon[0] = 0; if (colon[1] != 0) { section_asked = colon + 1; } } if (file[0] != 0) { uwsgi_log_initial("[uWSGI] getting INI configuration from %s\n", file); } ini = uwsgi_open_and_read(file, &len, 1, magic_table); while (len) { ini_line = ini_get_line(ini, len); if (ini_line == NULL) { break; } lines++; // skip empty line key = ini_lstrip(ini); ini_rstrip(key); if (key[0] != 0) { if (key[0] == '[') { section = key + 1; section[strlen(section) - 1] = 0; } else if (key[0] == ';' || key[0] == '#') { // this is a comment } else { // val is always valid, but (obviously) can be ignored val = ini_get_key(key); if (!strcmp(section, section_asked)) { ini_rstrip(key); val = ini_lstrip(val); ini_rstrip(val); add_exported_option((char *) key, val, 0); } } } len -= (ini_line - ini); ini += (ini_line - ini); } if (colon) { colon[0] = ':'; } }