grblHAL core  20250514
ngc_params.h
Go to the documentation of this file.
1 /*
2  ngc_params.h - get/set NGC parameter value by id or name
3 
4  Part of grblHAL
5 
6  Copyright (c) 2021-2025 Terje Io
7 
8  grblHAL is free software: you can redistribute it and/or modify
9  it under the terms of the GNU General Public License as published by
10  the Free Software Foundation, either version 3 of the License, or
11  (at your option) any later version.
12 
13  grblHAL is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with grblHAL. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 /*
23  All predefined parameters defined in NIST RS274NGC version 3 (ref section 3.2.1) are implemented.
24  Most additional predefined parameters defined by LinuxCNC (ref section 5.2.3.1) are implemented.
25  Currently it is not possible to set any parameters or reference them from gcode.
26 */
27 
28 #ifndef _NGC_PARAMS_H_
29 #define _NGC_PARAMS_H_
30 
31 #include "gcode.h"
32 
33 #ifndef NGC_MAX_PARAM_LENGTH
34 #define NGC_MAX_PARAM_LENGTH 30
35 #endif
36 
37 #define NGC_MAX_PARAM_ID 65535
38 
39 typedef uint16_t ngc_param_id_t;
40 typedef uint32_t ngc_string_id_t;
41 
42 typedef struct {
44  float value;
45 } ngc_param_t;
46 
47 typedef enum {
107 
108 typedef enum {
110 #if N_TOOLS || defined __DOXYGEN__
112 #endif
117 
118 void ngc_params_init (void);
119 uint8_t ngc_float_decimals (void);
120 bool ngc_param_get (ngc_param_id_t id, float *value);
121 bool ngc_param_set (ngc_param_id_t id, float value);
124 bool ngc_named_param_get (char *name, float *value);
126 bool ngc_named_param_set (char *name, float value);
127 bool ngc_named_param_exists (char *name);
128 
129 bool ngc_string_param_set (ngc_param_id_t id, char *value);
134 
135 bool ngc_call_push (void *context);
136 bool ngc_call_pop (void);
137 uint_fast8_t ngc_call_level (void);
138 bool ngc_modal_state_save (gc_modal_t *state, bool auto_restore);
139 bool ngc_modal_state_restore (void);
140 void ngc_modal_state_invalidate (void);
141 
142 #endif // _NGC_PARAMS_H_
bool ngc_param_set(ngc_param_id_t id, float value)
Definition: ngc_params.c:320
bool ngc_call_push(void *context)
Definition: ngc_params.c:894
uint8_t ngc_float_decimals(void)
Definition: ngc_params.c:963
char * ngc_string_param_get(ngc_string_id_t id)
Definition: ngc_params.c:814
void ngc_modal_state_invalidate(void)
Definition: ngc_params.c:879
bool ngc_named_param_get(char *name, float *value)
Definition: ngc_params.c:656
ngc_string_id_t ngc_string_param_set_name(char *name)
Definition: ngc_params.c:836
bool ngc_param_get(ngc_param_id_t id, float *value)
Definition: ngc_params.c:284
bool ngc_call_pop(void)
Definition: ngc_params.c:904
float ngc_named_param_get_by_id(ncg_name_param_id_t id)
Definition: ngc_params.c:419
void ngc_params_init(void)
Definition: ngc_params.c:1100
bool ngc_param_is_rw(ngc_param_id_t id)
Definition: ngc_params.c:310
void ngc_string_param_delete(ngc_string_id_t id)
Definition: ngc_params.c:846
bool ngc_named_param_set(char *name, float value)
Definition: ngc_params.c:696
uint_fast8_t ngc_call_level(void)
Definition: ngc_params.c:958
uint16_t ngc_param_id_t
Definition: ngc_params.h:39
uint32_t ngc_string_id_t
Definition: ngc_params.h:40
bool ngc_param_exists(ngc_param_id_t id)
Definition: ngc_params.c:315
bool ngc_string_param_set(ngc_param_id_t id, char *value)
Definition: ngc_params.c:831
bool ngc_string_param_exists(ngc_string_id_t id)
Definition: ngc_params.c:826
ncg_name_param_id_t
Definition: ngc_params.h:47
@ NGCParam_c
Definition: ngc_params.h:85
@ NGCParam_motion_mode
Definition: ngc_params.h:51
@ NGCParam_lathe_radius_mode
Definition: ngc_params.h:69
@ NGCParam_coord_system
Definition: ngc_params.h:61
@ NGCParam_lathe_diameter_mode
Definition: ngc_params.h:68
@ NGCParam_selected_pocket
Definition: ngc_params.h:101
@ NGCParam_feed
Definition: ngc_params.h:78
@ NGCParam_toolsetter_state
Definition: ngc_params.h:104
@ NGCParam_spindle_cw
Definition: ngc_params.h:71
@ NGCParam_y
Definition: ngc_params.h:81
@ NGCParam_abs_b
Definition: ngc_params.h:93
@ NGCParam_units_per_minute
Definition: ngc_params.h:59
@ NGCParam_ccomp
Definition: ngc_params.h:53
@ NGCParam_speed_override
Definition: ngc_params.h:74
@ NGCParam_adaptive_feed
Definition: ngc_params.h:76
@ NGCParam_vmajor
Definition: ngc_params.h:48
@ NGCParam_abs_a
Definition: ngc_params.h:92
@ NGCParam_inverse_time
Definition: ngc_params.h:58
@ NGCParam_probe_state
Definition: ngc_params.h:103
@ NGCParam_abs_c
Definition: ngc_params.h:94
@ NGCParam_u
Definition: ngc_params.h:86
@ NGCParam_mist
Definition: ngc_params.h:72
@ NGCParam_flood
Definition: ngc_params.h:73
@ NGCParam_metric
Definition: ngc_params.h:54
@ NGCParam_current_tool
Definition: ngc_params.h:98
@ NGCParam_abs_u
Definition: ngc_params.h:95
@ NGCParam_abs_y
Definition: ngc_params.h:90
@ NGCParam_abs_x
Definition: ngc_params.h:89
@ NGCParam_retract_r_plane
Definition: ngc_params.h:63
@ NGCParam_spindle_on
Definition: ngc_params.h:70
@ NGCParam_abs_w
Definition: ngc_params.h:97
@ NGCParam_imperial
Definition: ngc_params.h:55
@ NGCParam_spindle_rpm_mode
Definition: ngc_params.h:65
@ NGCParam_a
Definition: ngc_params.h:83
@ NGCParam_units_per_rev
Definition: ngc_params.h:60
@ NGCParam_feed_override
Definition: ngc_params.h:75
@ NGCParam_Last
Definition: ngc_params.h:105
@ NGCParam_x
Definition: ngc_params.h:80
@ NGCParam_z
Definition: ngc_params.h:82
@ NGCParam_selected_tool
Definition: ngc_params.h:100
@ NGCParam_line
Definition: ngc_params.h:50
@ NGCParam_plane
Definition: ngc_params.h:52
@ NGCParam_ijk_absolute_mode
Definition: ngc_params.h:67
@ NGCParam_call_level
Definition: ngc_params.h:102
@ NGCParam_v
Definition: ngc_params.h:87
@ NGCParam_rpm
Definition: ngc_params.h:79
@ NGCParam_retract_old_z
Definition: ngc_params.h:64
@ NGCParam_absolute
Definition: ngc_params.h:56
@ NGCParam_current_pocket
Definition: ngc_params.h:99
@ NGCParam_vminor
Definition: ngc_params.h:49
@ NGCParam_w
Definition: ngc_params.h:88
@ NGCParam_abs_v
Definition: ngc_params.h:96
@ NGCParam_incremental
Definition: ngc_params.h:57
@ NGCParam_abs_z
Definition: ngc_params.h:91
@ NGCParam_tool_offset
Definition: ngc_params.h:62
@ NGCParam_feed_hold
Definition: ngc_params.h:77
@ NGCParam_b
Definition: ngc_params.h:84
@ NGCParam_spindle_css_mode
Definition: ngc_params.h:66
bool ngc_modal_state_save(gc_modal_t *state, bool auto_restore)
Definition: ngc_params.c:866
bool ngc_named_param_exists(char *name)
Definition: ngc_params.c:689
g65_inbuilt_t
Definition: ngc_params.h:108
@ G65Macro_ParameterRW
Definition: ngc_params.h:113
@ G65Macro_GetSetting
Definition: ngc_params.h:109
@ G65Macro_SelectProbe
Definition: ngc_params.h:115
@ G65Macro_GetMachineState
Definition: ngc_params.h:114
@ G65Macro_GetToolOffset
Definition: ngc_params.h:111
bool ngc_modal_state_restore(void)
Definition: ngc_params.c:889
Definition: gcode.h:533
Definition: ngc_params.h:42
float value
Definition: ngc_params.h:44
ngc_param_id_t id
Definition: ngc_params.h:43