27#define MAX_LINE_NUMBER 10000000
28#define MAX_TOOL_NUMBER 255
30#define AXIS_COMMAND_NONE 0
31#define AXIS_COMMAND_NON_MODAL 1
32#define AXIS_COMMAND_MOTION_MODE 2
33#define AXIS_COMMAND_TOOL_LENGTH_OFFSET 3
39#define FAIL(status) return(status);
79 uint8_t axis_0, axis_1, axis_linear;
80 uint8_t coord_select = 0;
83 uint8_t axis_words = 0;
84 uint8_t ijk_words = 0;
87 uint16_t command_words = 0;
88 uint16_t value_words = 0;
97 #ifdef USE_LINE_NUMBERS
109 uint8_t char_counter;
112 uint8_t int_value = 0;
113 uint16_t mantissa = 0;
115 else { char_counter = 0; }
117 while (
line[char_counter] != 0) {
120 letter =
line[char_counter];
132 int_value = trunc(value);
133 mantissa = round(100*(value - int_value));
146 case 10:
case 28:
case 30:
case 92:
157 if ((int_value == 28) || (int_value == 30) || (int_value == 92)) {
163 case 0:
case 1:
case 2:
case 3:
case 38:
172 if (int_value == 38){
173 if (!((mantissa == 20) || (mantissa == 30) || (mantissa == 40) || (mantissa == 50))) {
180 case 17:
case 18:
case 19:
216 if (int_value == 49) {
218 }
else if (mantissa == 10) {
223 case 54:
case 55:
case 56:
case 57:
case 58:
case 59:
239 command_words |=
bit(word_bit);
247 case 0:
case 1:
case 2:
case 30:
255 case 3:
case 4:
case 5:
264 case 7:
case 8:
case 9:
277 #ifdef ENABLE_PARKING_OVERRIDE_CONTROL
289 command_words |=
bit(word_bit);
315 case 'T': word_bit =
WORD_T;
332 value_words |=
bit(word_bit);
439 #ifdef ENABLE_PARKING_OVERRIDE_CONTROL
476 for (idx=0; idx<
N_AXIS; idx++) {
504 float block_coord_system[
N_AXIS];
539 if (coord_select > 0) { coord_select--; }
546 for (idx=0; idx<
N_AXIS; idx++) {
567 for (idx=0; idx<
N_AXIS; idx++) {
586 for (idx=0; idx<
N_AXIS; idx++) {
620 for (idx=0; idx<
N_AXIS; idx++) {
751 h_x2_div_d = -sqrt(h_x2_div_d)/
hypot_f(x,y);
775 h_x2_div_d = -h_x2_div_d;
788 for (idx=0; idx<
N_AXIS; idx++) {
803 if (delta_r > 0.005) {
902 #ifdef USE_LINE_NUMBERS
919 #ifdef VARIABLE_SPINDLE
961 #ifdef ENABLE_PARKING_OVERRIDE_CONTROL
1063 #ifndef ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES
1104 #ifdef ENABLE_PARKING_OVERRIDE_CONTROL
1105 #ifdef DEACTIVATE_PARKING_UPON_INIT
1112 #ifdef RESTORE_OVERRIDES_AFTER_PROGRAM_END
#define DEFAULT_RAPID_OVERRIDE
#define TOOL_LENGTH_OFFSET_AXIS
#define DEFAULT_FEED_OVERRIDE
#define DEFAULT_SPINDLE_SPEED_OVERRIDE
void coolant_sync(uint8_t mode)
void coolant_set_state(uint8_t mode)
#define AXIS_COMMAND_NON_MODAL
#define AXIS_COMMAND_MOTION_MODE
#define AXIS_COMMAND_TOOL_LENGTH_OFFSET
#define AXIS_COMMAND_NONE
uint8_t gc_execute_line(char *line)
#define MOTION_MODE_CCW_ARC
#define SPINDLE_ENABLE_CCW
#define GC_PARSER_LASER_DISABLE
#define NON_MODAL_SET_HOME_0
#define PROGRAM_FLOW_RUNNING
#define COOLANT_FLOOD_ENABLE
#define MOTION_MODE_PROBE_TOWARD_NO_ERROR
#define GC_UPDATE_POS_SYSTEM
#define NON_MODAL_SET_COORDINATE_OFFSET
#define GC_PARSER_LASER_ISMOTION
#define SPINDLE_ENABLE_CW
#define GC_PARSER_LASER_FORCE_SYNC
#define MOTION_MODE_PROBE_AWAY_NO_ERROR
#define PROGRAM_FLOW_PAUSED
#define NON_MODAL_GO_HOME_0
#define GC_UPDATE_POS_TARGET
#define UNITS_MODE_INCHES
#define TOOL_LENGTH_OFFSET_ENABLE_DYNAMIC
#define NON_MODAL_NO_ACTION
#define MOTION_MODE_PROBE_AWAY
#define FEED_RATE_MODE_UNITS_PER_MIN
#define OVERRIDE_PARKING_MOTION
#define NON_MODAL_GO_HOME_1
#define NON_MODAL_ABSOLUTE_OVERRIDE
#define GC_PARSER_ARC_IS_CLOCKWISE
#define NON_MODAL_RESET_COORDINATE_OFFSET
#define MOTION_MODE_CW_ARC
#define GC_PARSER_JOG_MOTION
#define NON_MODAL_SET_HOME_1
#define DISTANCE_MODE_ABSOLUTE
#define NON_MODAL_SET_COORDINATE_DATA
#define MOTION_MODE_PROBE_TOWARD
#define GC_PARSER_PROBE_IS_AWAY
#define OVERRIDE_DISABLED
#define GC_PARSER_PROBE_IS_NO_ERROR
#define COOLANT_MIST_ENABLE
#define FEED_RATE_MODE_INVERSE_TIME
#define TOOL_LENGTH_OFFSET_CANCEL
#define MOTION_MODE_LINEAR
uint8_t jog_execute(plan_line_data_t *pl_data, parser_block_t *gc_block)
int32_t sys_position[N_AXIS]
uint8_t mc_probe_cycle(float *target, plan_line_data_t *pl_data, uint8_t parser_flags)
void mc_arc(float *target, plan_line_data_t *pl_data, float *position, float *offset, float radius, uint8_t axis_0, uint8_t axis_1, uint8_t axis_linear, uint8_t is_clockwise_arc)
void mc_dwell(float seconds)
void mc_line(float *target, plan_line_data_t *pl_data)
void mc_override_ctrl_update(uint8_t override_state)
float hypot_f(float x, float y)
uint8_t read_float(char *line, uint8_t *char_counter, float *float_ptr)
#define bit_isfalse(x, mask)
#define bit_istrue(x, mask)
#define isequal_position_vector(a, b)
#define bit_false(x, mask)
#define PL_COND_FLAG_INVERSE_TIME
#define PL_COND_FLAG_RAPID_MOTION
#define PL_COND_FLAG_NO_FEED_OVERRIDE
void protocol_execute_realtime()
void protocol_buffer_synchronize()
static char line[LINE_BUFFER_SIZE]
void report_feedback_message(uint8_t message_code)
void report_status_message(uint8_t status_code)
#define STATUS_GCODE_AXIS_WORDS_EXIST
#define STATUS_GCODE_NO_OFFSETS_IN_PLANE
#define STATUS_GCODE_UNSUPPORTED_COORD_SYS
#define STATUS_GCODE_NO_AXIS_WORDS
#define STATUS_GCODE_VALUE_WORD_MISSING
#define STATUS_INVALID_JOG_COMMAND
#define STATUS_GCODE_G43_DYNAMIC_AXIS_ERROR
#define STATUS_GCODE_UNSUPPORTED_COMMAND
#define STATUS_GCODE_UNUSED_WORDS
#define STATUS_GCODE_MAX_VALUE_EXCEEDED
#define STATUS_GCODE_INVALID_LINE_NUMBER
#define STATUS_GCODE_COMMAND_VALUE_NOT_INTEGER
#define STATUS_BAD_NUMBER_FORMAT
#define STATUS_NEGATIVE_VALUE
#define STATUS_GCODE_G53_INVALID_MOTION_MODE
#define STATUS_GCODE_WORD_REPEATED
#define STATUS_GCODE_AXIS_COMMAND_CONFLICT
#define STATUS_GCODE_INVALID_TARGET
#define STATUS_EXPECTED_COMMAND_LETTER
#define STATUS_GCODE_MODAL_GROUP_VIOLATION
#define MESSAGE_PROGRAM_END
#define STATUS_SETTING_READ_FAIL
#define STATUS_GCODE_UNDEFINED_FEED_RATE
#define STATUS_GCODE_NO_AXIS_WORDS_IN_PLANE
#define STATUS_GCODE_ARC_RADIUS_ERROR
void settings_write_coord_data(uint8_t coord_select, float *coord_data)
uint8_t settings_read_coord_data(uint8_t coord_select, float *coord_data)
#define SETTING_INDEX_G30
#define N_COORDINATE_SYSTEM
#define SETTING_INDEX_G28
#define BITFLAG_LASER_MODE
#define spindle_set_state(state, rpm)
#define spindle_sync(state, rpm)
uint8_t non_modal_command
float coord_offset[N_AXIS]
float coord_system[N_AXIS]
uint8_t spindle_speed_ovr
void system_set_exec_state_flag(uint8_t mask)
void system_convert_array_steps_to_mpos(float *position, int32_t *steps)
void system_flag_wco_change()