#define AXES_LABEL "xyzabcuvw"
#define MOTORS_LABEL "0123"
-// VAR(name, code, type, index, settable, help)
+// VAR(name, code, type, index, settable, report, help)
// Motor
-VAR(motor_axis, an, uint8_t, MOTORS, 1, "Maps motor to axis")
-VAR(step_angle, sa, float, MOTORS, 1, "In degrees per full step")
-VAR(travel, tr, float, MOTORS, 1, "Travel in mm per revolution")
-VAR(microstep, mi, uint16_t, MOTORS, 1, "Microsteps per full step")
-VAR(reverse, rv, uint8_t, MOTORS, 1, "Reverse motor polarity")
-
-VAR(power_mode, pm, uint8_t, MOTORS, 1, "Motor power mode")
-VAR(drive_current, dc, float, MOTORS, 1, "Max motor drive current")
-VAR(idle_current, ic, float, MOTORS, 1, "Motor idle current")
-VAR(active_current, ac, float, MOTORS, 0, "Motor current now")
-VAR(driver_flags, df, uint16_t, MOTORS, 0, "Motor driver status flags")
-VAR(status_strings, ds, flags_t, MOTORS, 0, "Motor driver status strings")
-VAR(encoder, en, int32_t, MOTORS, 0, "Motor encoder")
-VAR(error, ee, int32_t, MOTORS, 0, "Motor position error")
-
-VAR(motor_fault, fa, bool, 0, 0, "Motor fault status")
-
-VAR(velocity_max, vm, float, MOTORS, 1, "Maxium velocity in mm/min")
-VAR(jerk_max, jm, float, MOTORS, 1, "Maxium jerk in mm/min^3")
-VAR(radius, ra, float, MOTORS, 1, "Axis radius or zero")
+VAR(motor_axis, an, uint8_t, MOTORS, 1, 1, "Maps motor to axis")
+VAR(step_angle, sa, float, MOTORS, 1, 1, "In degrees per full step")
+VAR(travel, tr, float, MOTORS, 1, 1, "Travel in mm per revolution")
+VAR(microstep, mi, uint16_t, MOTORS, 1, 1, "Microsteps per full step")
+VAR(reverse, rv, uint8_t, MOTORS, 1, 1, "Reverse motor polarity")
+
+VAR(power_mode, pm, uint8_t, MOTORS, 1, 1, "Motor power mode")
+VAR(drive_current, dc, float, MOTORS, 1, 1, "Max motor drive current")
+VAR(idle_current, ic, float, MOTORS, 1, 1, "Motor idle current")
+VAR(active_current, ac, float, MOTORS, 0, 1, "Motor current now")
+VAR(driver_flags, df, uint16_t, MOTORS, 0, 1, "Motor driver status flags")
+VAR(status_strings, ds, flags_t, MOTORS, 0, 1, "Motor driver status strings")
+VAR(encoder, en, int32_t, MOTORS, 0, 0, "Motor encoder")
+VAR(error, ee, int32_t, MOTORS, 0, 0, "Motor position error")
+
+VAR(motor_fault, fa, bool, 0, 0, 1, "Motor fault status")
+
+VAR(velocity_max, vm, float, MOTORS, 1, 1, "Maxium velocity in mm/min")
+VAR(jerk_max, jm, float, MOTORS, 1, 1, "Maxium jerk in mm/min^3")
+VAR(radius, ra, float, MOTORS, 1, 1, "Axis radius or zero")
// Switches
-VAR(travel_min, tn, float, MOTORS, 1, "Minimum soft limit")
-VAR(travel_max, tm, float, MOTORS, 1, "Maximum soft limit")
-VAR(min_switch, ls, uint8_t, MOTORS, 1, "Minimum switch mode")
-VAR(max_switch, xs, uint8_t, MOTORS, 1, "Maximum switch mode")
-VAR(estop_switch, et, uint8_t, 0, 1, "Estop switch mode")
-VAR(probe_switch, pt, uint8_t, 0, 1, "Probe switch mode")
+VAR(travel_min, tn, float, MOTORS, 1, 1, "Minimum soft limit")
+VAR(travel_max, tm, float, MOTORS, 1, 1, "Maximum soft limit")
+VAR(min_switch, ls, uint8_t, MOTORS, 1, 1, "Minimum switch mode")
+VAR(max_switch, xs, uint8_t, MOTORS, 1, 1, "Maximum switch mode")
+VAR(estop_switch, et, uint8_t, 0, 1, 1, "Estop switch mode")
+VAR(probe_switch, pt, uint8_t, 0, 1, 1, "Probe switch mode")
// Homing
-VAR(homing_mode, ho, uint8_t, MOTORS, 1, "Homing type")
-VAR(search_velocity,sv, float, MOTORS, 1, "Homing search velocity")
-VAR(latch_velocity, lv, float, MOTORS, 1, "Homing latch velocity")
-VAR(latch_backoff, lb, float, MOTORS, 1, "Homing latch backoff")
-VAR(zero_backoff, zb, float, MOTORS, 1, "Homing zero backoff")
+VAR(homing_mode, ho, uint8_t, MOTORS, 1, 1, "Homing type")
+VAR(search_velocity,sv, float, MOTORS, 1, 1, "Homing search velocity")
+VAR(latch_velocity, lv, float, MOTORS, 1, 1, "Homing latch velocity")
+VAR(latch_backoff, lb, float, MOTORS, 1, 1, "Homing latch backoff")
+VAR(zero_backoff, zb, float, MOTORS, 1, 1, "Homing zero backoff")
// Axis
-VAR(position, p, float, AXES, 0, "Current axis position")
+VAR(position, p, float, AXES, 0, 1, "Current axis position")
// Spindle
-VAR(spindle_type, st, uint8_t, 0, 1, "PWM=0 or HUANYANG=1")
-VAR(spin_reverse, sr, bool, 0, 1, "Reverse spin")
-VAR(max_spin, sx, float, 0, 1, "Maximum spindle speed")
-VAR(min_spin, sm, float, 0, 1, "Minimum spindle speed")
-VAR(spin_min_duty, nd, float, 0, 1, "Minimum PWM duty cycle")
-VAR(spin_max_duty, md, float, 0, 1, "Maximum PWM duty cycle")
-VAR(spin_up, su, float, 0, 1, "Spin up velocity")
-VAR(spin_down, sd, float, 0, 1, "Spin down velocity")
-VAR(spin_freq, sf, uint16_t, 0, 1, "Spindle PWM frequency")
+VAR(spindle_type, st, uint8_t, 0, 1, 1, "PWM=0 or HUANYANG=1")
+VAR(spin_reverse, sr, bool, 0, 1, 1, "Reverse spin")
+VAR(max_spin, sx, float, 0, 1, 1, "Maximum spindle speed")
+VAR(min_spin, sm, float, 0, 1, 1, "Minimum spindle speed")
+VAR(spin_min_duty, nd, float, 0, 1, 1, "Minimum PWM duty cycle")
+VAR(spin_max_duty, md, float, 0, 1, 1, "Maximum PWM duty cycle")
+VAR(spin_up, su, float, 0, 1, 1, "Spin up velocity")
+VAR(spin_down, sd, float, 0, 1, 1, "Spin down velocity")
+VAR(spin_freq, sf, uint16_t, 0, 1, 1, "Spindle PWM frequency")
// PWM spindle
-VAR(pwm_invert, pi, bool, 0, 1, "Inverted spindle PWM")
-VAR(enable_invert, ei, bool, 0, 1, "Inverted spindle enable")
+VAR(pwm_invert, pi, bool, 0, 1, 1, "Inverted spindle PWM")
+VAR(enable_invert, ei, bool, 0, 1, 1, "Inverted spindle enable")
// Huanyang spindle
-VAR(huanyang_id, hi, uint8_t, 0, 1, "Huanyang ID")
-VAR(huanyang_freq, hz, float, 0, 0, "Huanyang actual freq")
-VAR(huanyang_current, hc, float, 0, 0, "Huanyang actual current")
-VAR(huanyang_rpm, hr, uint16_t, 0, 0, "Huanyang actual RPM")
-VAR(huanyang_temp, ht, uint16_t, 0, 0, "Huanyang temperature")
-VAR(huanyang_max_freq, hx, float, 0, 0, "Huanyang max freq")
-VAR(huanyang_min_freq, hm, float, 0, 0, "Huanyang min freq")
-VAR(huanyang_rated_rpm, hq, uint16_t, 0, 0, "Huanyang rated RPM")
-VAR(huanyang_status, hs, uint8_t, 0, 0, "Huanyang status flags")
-VAR(huanyang_debug, hb, bool, 0, 1, "Huanyang debugging")
-VAR(huanyang_connected, he, bool, 0, 0, "Huanyang connected")
+VAR(huanyang_id, hi, uint8_t, 0, 1, 1, "Huanyang ID")
+VAR(huanyang_freq, hz, float, 0, 0, 1, "Huanyang actual freq")
+VAR(huanyang_current, hc, float, 0, 0, 1, "Huanyang actual current")
+VAR(huanyang_rpm, hr, uint16_t, 0, 0, 1, "Huanyang actual RPM")
+VAR(huanyang_temp, ht, uint16_t, 0, 0, 1, "Huanyang temperature")
+VAR(huanyang_max_freq, hx, float, 0, 0, 1, "Huanyang max freq")
+VAR(huanyang_min_freq, hm, float, 0, 0, 1, "Huanyang min freq")
+VAR(huanyang_rated_rpm, hq, uint16_t, 0, 0, 1, "Huanyang rated RPM")
+VAR(huanyang_status, hs, uint8_t, 0, 0, 1, "Huanyang status flags")
+VAR(huanyang_debug, hb, bool, 0, 1, 1, "Huanyang debugging")
+VAR(huanyang_connected, he, bool, 0, 0, 1, "Huanyang connected")
// GCode
-VAR(line, ln, int32_t, 0, 0, "Last GCode line executed")
-VAR(unit, u, pstring, 0, 0, "Current unit of measure")
-VAR(speed, s, float, 0, 0, "Current spindle speed")
-VAR(feed, f, float, 0, 0, "Current feed rate")
-VAR(tool, t, uint8_t, 0, 0, "Current tool")
-VAR(feed_mode, fm, pstring, 0, 0, "Current feed rate mode")
-VAR(plane, pa, pstring, 0, 0, "Current plane")
-VAR(coord_system, cs, pstring, 0, 0, "Current coordinate system")
-VAR(abs_override, ao, bool, 0, 0, "Absolute override enabled")
-VAR(path_mode, pc, pstring, 0, 0, "Current path control mode")
-VAR(distance_mode, dm, pstring, 0, 0, "Current distance mode")
-VAR(arc_dist_mode, ad, pstring, 0, 0, "Current arc distance mode")
-VAR(mist_coolant, mc, bool, 0, 0, "Mist coolant enabled")
-VAR(flood_coolant, fc, bool, 0, 0, "Flood coolant enabled")
-VAR(feed_override, fo, float, 0, 0, "Feed rate override")
-VAR(speed_override, so, float, 0, 0, "Spindle speed override")
+VAR(line, ln, int32_t, 0, 0, 1, "Last GCode line executed")
+VAR(unit, u, pstring, 0, 0, 1, "Current unit of measure")
+VAR(speed, s, float, 0, 0, 1, "Current spindle speed")
+VAR(feed, f, float, 0, 0, 1, "Current feed rate")
+VAR(tool, t, uint8_t, 0, 0, 1, "Current tool")
+VAR(feed_mode, fm, pstring, 0, 0, 1, "Current feed rate mode")
+VAR(plane, pa, pstring, 0, 0, 1, "Current plane")
+VAR(coord_system, cs, pstring, 0, 0, 1, "Current coordinate system")
+VAR(abs_override, ao, bool, 0, 0, 1, "Absolute override enabled")
+VAR(path_mode, pc, pstring, 0, 0, 1, "Current path control mode")
+VAR(distance_mode, dm, pstring, 0, 0, 1, "Current distance mode")
+VAR(arc_dist_mode, ad, pstring, 0, 0, 1, "Current arc distance mode")
+VAR(mist_coolant, mc, bool, 0, 0, 1, "Mist coolant enabled")
+VAR(flood_coolant, fc, bool, 0, 0, 1, "Flood coolant enabled")
+VAR(feed_override, fo, float, 0, 0, 1, "Feed rate override")
+VAR(speed_override, so, float, 0, 0, 1, "Spindle speed override")
// System
-VAR(velocity, v, float, 0, 0, "Current velocity")
-VAR(hw_id, id, string, 0, 0, "Hardware ID")
-VAR(echo, ec, bool, 0, 1, "Enable or disable echo")
-VAR(estop, es, bool, 0, 1, "Emergency stop")
-VAR(estop_reason, er, pstring, 0, 0, "Emergency stop reason")
-VAR(state, x, pstring, 0, 0, "Machine state")
-VAR(cycle, c, pstring, 0, 0, "Machine cycle")
-VAR(hold_reason, pr, pstring, 0, 0, "Machine pause reason")
+VAR(velocity, v, float, 0, 0, 1, "Current velocity")
+VAR(hw_id, id, string, 0, 0, 1, "Hardware ID")
+VAR(echo, ec, bool, 0, 1, 1, "Enable or disable echo")
+VAR(estop, es, bool, 0, 1, 1, "Emergency stop")
+VAR(estop_reason, er, pstring, 0, 0, 1, "Emergency stop reason")
+VAR(state, x, pstring, 0, 0, 1, "Machine state")
+VAR(cycle, c, pstring, 0, 0, 1, "Machine cycle")
+VAR(hold_reason, pr, pstring, 0, 0, 1, "Machine pause reason")