grblHAL core  20260817
driver_opts.h
Go to the documentation of this file.
1 /*
2  driver_opts.h - for preprocessing options from my_machine.h or compiler symbols
3 
4  NOTE: This file is not used by the core, it may be used by drivers
5 
6  Part of grblHAL
7 
8  Copyright (c) 2020-2026 Terje Io
9 
10  grblHAL is free software: you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  grblHAL is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with grblHAL. If not, see <http://www.gnu.org/licenses/>.
22 */
23 
24 //
25 // NOTE: do NOT change options here - edit the driver specific my_machine.h instead!
26 //
27 
28 #pragma once
29 
30 #include "hal.h"
31 #include "nuts_bolts.h"
32 
33 #define MODBUS_RTU_ENABLED 0b001
34 #define MODBUS_RTU_DIR_ENABLED 0b010
35 #define MODBUS_TCP_ENABLED 0b100
36 
37 #include "expanders_init.h"
38 
39 #ifdef OPTS_POSTPROCESSING
40 #define NO_OPTS_POST 0
41 #else
42 #define NO_OPTS_POST 1
43 #endif
44 
45 #ifndef X_GANGED
46 #define X_GANGED 0
47 #endif
48 #ifndef X_AUTO_SQUARE
49 #define X_AUTO_SQUARE 0
50 #endif
51 #ifndef Y_GANGED
52 #define Y_GANGED 0
53 #endif
54 #ifndef Y_AUTO_SQUARE
55 #define Y_AUTO_SQUARE 0
56 #endif
57 #ifndef Z_GANGED
58 #define Z_GANGED 0
59 #endif
60 #ifndef Z_AUTO_SQUARE
61 #define Z_AUTO_SQUARE 0
62 #endif
63 #ifndef X_GANGED_LIM_MAX
64 #define X_GANGED_LIM_MAX 0
65 #endif
66 #ifndef Y_GANGED_LIM_MAX
67 #define Y_GANGED_LIM_MAX 0
68 #endif
69 #ifndef Z_GANGED_LIM_MAX
70 #define Z_GANGED_LIM_MAX 0
71 #endif
72 
73 #if X_AUTO_SQUARE && !X_GANGED
74 #undef X_GANGED
75 #define X_GANGED 1
76 #endif
77 #if Y_AUTO_SQUARE && !Y_GANGED
78 #undef Y_GANGED
79 #define Y_GANGED 1
80 #endif
81 #if Z_AUTO_SQUARE && !Z_GANGED
82 #undef Z_GANGED
83 #define Z_GANGED 1
84 #endif
85 
86 #define N_GANGED (X_GANGED + Y_GANGED + Z_GANGED)
87 #define N_AUTO_SQUARED (X_AUTO_SQUARE + Y_AUTO_SQUARE + Z_AUTO_SQUARE)
88 #define N_ABC_MOTORS (N_ABC_AXIS + N_GANGED)
89 #define GANGED_MAP (((Z_GANGED<<(X_GANGED+Y_GANGED))|(Y_GANGED<<X_GANGED)|X_GANGED)<<N_AXIS)
90 #define AUTO_SQUARED_MAP (((Z_AUTO_SQUARE<<(X_GANGED+Y_GANGED))|(Y_AUTO_SQUARE<<X_GANGED)|X_AUTO_SQUARE)<<N_AXIS)
91 
92 #if N_AXIS > 3 || (AUTO_SQUARED_MAP & 8)
93 #define M3_LIMIT_ENABLE 1
94 #else
95 #define M3_LIMIT_ENABLE 0
96 #endif
97 
98 #if N_AXIS > 4 || (AUTO_SQUARED_MAP & 16)
99 #define M4_LIMIT_ENABLE 1
100 #else
101 #define M4_LIMIT_ENABLE 0
102 #endif
103 
104 #if N_AXIS > 5 || (AUTO_SQUARED_MAP & 32)
105 #define M5_LIMIT_ENABLE 1
106 #else
107 #define M5_LIMIT_ENABLE 0
108 #endif
109 
110 #if N_AXIS > 6 || (AUTO_SQUARED_MAP & 64)
111 #define M6_LIMIT_ENABLE 1
112 #else
113 #define M6_LIMIT_ENABLE 0
114 #endif
115 
116 #if N_AXIS > 7 || (AUTO_SQUARED_MAP & 128)
117 #define M7_LIMIT_ENABLE 1
118 #else
119 #define M7_LIMIT_ENABLE 0
120 #endif
121 
122 #ifndef NEOPIXELS_ENABLE
123 #define NEOPIXELS_ENABLE 0
124 #endif
125 
126 #ifndef USB_SERIAL_CDC
127 #define USB_SERIAL_CDC 0 // for UART comms
128 #endif
129 #ifndef USB_SERIAL_WAIT
130 #define USB_SERIAL_WAIT 0
131 #endif
132 
133 #if USB_SERIAL_CDC == 0 && !defined(SERIAL_STREAM)
134 #define SERIAL_STREAM 0
135 #endif
136 
137 #ifndef MACROS_ENABLE
138 #define MACROS_ENABLE 0
139 #endif
140 
141 #ifndef KEYPAD_ENABLE
142 #define KEYPAD_ENABLE 0
143 #endif
144 
145 #if KEYPAD_ENABLE == 1
146 #ifdef I2C_STROBE_ENABLE
147 #undef I2C_STROBE_ENABLE
148 #endif
149 #define I2C_STROBE_ENABLE 1
150 #elif NO_OPTS_POST && KEYPAD_ENABLE == 2 && !defined(KEYPAD_STREAM)
151 #if USB_SERIAL_CDC
152 #define KEYPAD_STREAM 0
153 #else
154 #define KEYPAD_STREAM 1
155 #endif
156 #endif
157 
158 #ifndef I2C_STROBE_ENABLE
159 #define I2C_STROBE_ENABLE 0
160 #endif
161 
162 #ifndef MPG_ENABLE
163 #define MPG_ENABLE 0
164 #endif
165 
166 #if NO_OPTS_POST && MPG_ENABLE && !defined(MPG_STREAM)
167 #if USB_SERIAL_CDC
168 #define MPG_STREAM 0
169 #else
170 #define MPG_STREAM 1
171 #endif
172 #endif
173 
174 #ifndef DISPLAY_ENABLE
175 #define DISPLAY_ENABLE 0
176 #endif
177 
178 #ifndef EEPROM_ENABLE
179 #define EEPROM_ENABLE 0
180 #endif
181 #ifndef EEPROM_IS_FRAM
182 #define EEPROM_IS_FRAM 0
183 #endif
184 
185 #if EEPROM_ENABLE || KEYPAD_ENABLE == 1 || I2C_STROBE_ENABLE || (DISPLAY_ENABLE & DISPLAY_I2C) || (TRINAMIC_ENABLE && TRINAMIC_I2C)
186 #if defined(I2C_ENABLE) && I2C_ENABLE == 0
187 #undef I2C_ENABLE
188 #else
189 #define I2C_ENABLE 1
190 #endif
191 #endif
192 
193 #ifndef I2C_ENABLE
194 #define I2C_ENABLE 0
195 #endif
196 
197 #ifndef SPINDLE_SYNC_ENABLE
198 #define SPINDLE_SYNC_ENABLE 0
199 #endif
200 
201 #ifndef TRINAMIC_ENABLE
202  #define TRINAMIC_ENABLE 0
203 #endif
204 #if TRINAMIC_ENABLE == 2209
205  #ifndef TRINAMIC_UART_ENABLE
206  #define TRINAMIC_UART_ENABLE 1
207  #endif
208  #if NO_OPTS_POST && !defined(TRINAMIC_STREAM) && TRINAMIC_UART_ENABLE == 1
209  #define TRINAMIC_STREAM 1
210  #endif
211 #else
212  #define TRINAMIC_UART_ENABLE 0
213 #endif
214 #if (TRINAMIC_ENABLE == 2130 || TRINAMIC_ENABLE == 2240 || TRINAMIC_ENABLE == 2660 || TRINAMIC_ENABLE == 5160)
215  #if !defined(TRINAMIC_SPI_ENABLE)
216  #define TRINAMIC_SPI_ENABLE 1
217  #endif
218 #else
219  #define TRINAMIC_SPI_ENABLE 0
220 #endif
221 #ifndef TRINAMIC_DEV
222 #define TRINAMIC_DEV 0
223 #endif
224 
225 #if NO_OPTS_POST
226 #ifndef TRINAMIC_I2C
227 #define TRINAMIC_I2C 0
228 #endif
229 #if TRINAMIC_ENABLE && TRINAMIC_I2C
230 #define TRINAMIC_MOTOR_ENABLE 1
231 #else
232 #define TRINAMIC_MOTOR_ENABLE 0
233 #endif
234 #endif
235 
236 #ifndef LITTLEFS_ENABLE
237 #define LITTLEFS_ENABLE 0
238 #endif
239 
240 #ifndef PWM_RAMPED
241 #define PWM_RAMPED 0
242 #endif
243 #ifndef PLASMA_ENABLE
244 #define PLASMA_ENABLE 0
245 #elif PLASMA_ENABLE
246 #if defined(STEP_INJECT_ENABLE)
247 #undef STEP_INJECT_ENABLE
248 #endif
249 #define STEP_INJECT_ENABLE 1
250 #endif
251 #ifndef PPI_ENABLE
252 #define PPI_ENABLE 0
253 #endif
254 
255 #if EMBROIDERY_ENABLE
256 #if defined(SDCARD_ENABLE) && SDCARD_ENABLE == 0
257 #undef SDCARD_ENABLE
258 #endif
259 #ifndef SDCARD_ENABLE
260 #define SDCARD_ENABLE 1
261 #endif
262 #endif
263 
264 #ifndef ESTOP_ENABLE
265  #if COMPATIBILITY_LEVEL <= 1
266  #define ESTOP_ENABLE 1
267  #else
268  #define ESTOP_ENABLE 0
269  #endif
270 #elif ESTOP_ENABLE && COMPATIBILITY_LEVEL > 1
271  #warning "Enabling ESTOP may not work with all senders!"
272 #endif
273 
274 // Control signals, keep in sync with control_signals_t bit order
275 #define CONTROL_RESET (1<<0)
276 #define CONTROL_FEED_HOLD (1<<1)
277 #define CONTROL_CYCLE_START (1<<2)
278 #define CONTROL_ESTOP (1<<6)
279 #if ESTOP_ENABLE
280 #define CONTROL_HALT CONTROL_ESTOP
281 #else
282 #define CONTROL_HALT CONTROL_RESET
283 #endif
284 
285 // Probe signals
286 
287 #ifndef PROBE_ENABLE
288 #define PROBE_ENABLE 1
289 #endif
290 
291 #ifndef PROBE2_ENABLE
292 #define PROBE2_ENABLE 0
293 #endif
294 
295 #ifndef TOOLSETTER_ENABLE
296 #define TOOLSETTER_ENABLE 0
297 #endif
298 
299 // Coolant signals, keep in sync with coolant_state_t
300 #define COOLANT_FLOOD 0b01
301 #define COOLANT_MIST 0b10
302 
303 #ifndef COOLANT_ENABLE
304 #define COOLANT_ENABLE (COOLANT_FLOOD|COOLANT_MIST)
305 #endif
306 
307 // Spindle signals
308 #define SPINDLE_ENA 0b001
309 #define SPINDLE_PWM 0b010
310 #define SPINDLE_DIR 0b100
311 
312 #ifdef SPINDLE_ENABLE
313 #undef SPINDLE0_ENABLE
314 #undef SPINDLE1_ENABLE
315 #undef SPINDLE2_ENABLE
316 #undef SPINDLE3_ENABLE
317 #endif
318 
319 #ifndef SPINDLE0_ENABLE
320 #ifdef SPINDLE_ENABLE
321 #define SPINDLE0_ENABLE 0
322 #else
323 #define SPINDLE0_ENABLE DEFAULT_SPINDLE
324 #endif
325 #endif
326 
327 #ifndef SPINDLE1_ENABLE
328 #define SPINDLE1_ENABLE 0
329 #elif SPINDLE1_ENABLE == -1 || SPINDLE1_ENABLE == SPINDLE_ALL || SPINDLE1_ENABLE == SPINDLE_ALL_VFD
330 #warning "SPINDLE1_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD"
331 #undef SPINDLE1_ENABLE
332 #define SPINDLE1_ENABLE 0
333 #endif
334 
335 #ifndef SPINDLE2_ENABLE
336 #define SPINDLE2_ENABLE 0
337 #elif SPINDLE2_ENABLE == -1 || SPINDLE2_ENABLE == SPINDLE_ALL || SPINDLE2_ENABLE == SPINDLE_ALL_VFD
338 #warning "SPINDLE2_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD"
339 #undef SPINDLE2_ENABLE
340 #define SPINDLE2_ENABLE 0
341 #endif
342 
343 #ifndef SPINDLE3_ENABLE
344 #define SPINDLE3_ENABLE 0
345 #elif SPINDLE3_ENABLE == -1 || SPINDLE3_ENABLE == SPINDLE_ALL || SPINDLE3_ENABLE == SPINDLE_ALL_VFD
346 #warning "SPINDLE3_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD"
347 #undef SPINDLE3_ENABLE
348 #define SPINDLE3_ENABLE 0
349 #endif
350 
351 #ifndef SPINDLE_ENABLE
352 #if SPINDLE0_ENABLE == -1 || SPINDLE0_ENABLE == SPINDLE_ALL
353 #define SPINDLE_ENABLE (SPINDLE_ALL|(1<<SPINDLE1_ENABLE)|(1<<SPINDLE2_ENABLE)|(1<<SPINDLE3_ENABLE))
354 #elif SPINDLE0_ENABLE == SPINDLE_ALL_VFD
355 #define SPINDLE_ENABLE (SPINDLE_ALL_VFD|SPINDLE_ALL|(1<<SPINDLE1_ENABLE)|(1<<SPINDLE2_ENABLE)|(1<<SPINDLE3_ENABLE))
356 #else
357 #define SPINDLE_ENABLE ((1<<SPINDLE0_ENABLE)|(1<<SPINDLE1_ENABLE)|(1<<SPINDLE2_ENABLE)|(1<<SPINDLE3_ENABLE))
358 #endif
359 #endif
360 
361 // Driver spindle 0
362 
363 #if SPINDLE_ENABLE & (1<<SPINDLE_PWM0)
364 #define DRIVER_SPINDLE_ENABLE (SPINDLE_ENA|SPINDLE_PWM|SPINDLE_DIR)
365 #elif SPINDLE_ENABLE & (1<<SPINDLE_PWM0_NODIR)
366 #define DRIVER_SPINDLE_ENABLE (SPINDLE_ENA|SPINDLE_PWM)
367 #elif SPINDLE_ENABLE & (1<<SPINDLE_ONOFF0)
368 #define DRIVER_SPINDLE_ENABLE SPINDLE_ENA
369 #elif SPINDLE_ENABLE & (1<<SPINDLE_ONOFF0_DIR)
370 #define DRIVER_SPINDLE_ENABLE (SPINDLE_ENA|SPINDLE_DIR)
371 #else
372 #define DRIVER_SPINDLE_ENABLE 0
373 #endif
374 
375 #if DRIVER_SPINDLE_ENABLE & SPINDLE_DIR
376 #define DRIVER_SPINDLE_DIR_ENABLE 1 // Deprecated
377 #else
378 #define DRIVER_SPINDLE_DIR_ENABLE 0 // Deprecated
379 #endif
380 
381 #if DRIVER_SPINDLE_ENABLE & SPINDLE_PWM
382 #define DRIVER_SPINDLE_PWM_ENABLE 1 // Deprecated
383 #define DRIVER_SPINDLE_NAME "PWM"
384 #else
385 #define DRIVER_SPINDLE_PWM_ENABLE 0 // Deprecated
386 #if DRIVER_SPINDLE_ENABLE
387 #define DRIVER_SPINDLE_NAME "Basic"
388 #endif
389 #endif
390 
391 // Driver spindle 1
392 
393 #if SPINDLE_ENABLE & ((1<<SPINDLE_PWM1)|(1<<SPINDLE_PWM1_NODIR)|(1<<SPINDLE_ONOFF1)|(1<<SPINDLE_ONOFF1_DIR))
394 #if N_SPINDLE > 1
395 #if SPINDLE_ENABLE & (1<<SPINDLE_PWM1)
396 #define DRIVER_SPINDLE1_ENABLE (SPINDLE_ENA|SPINDLE_PWM|SPINDLE_DIR)
397 #elif SPINDLE_ENABLE & (1<<SPINDLE_PWM1_NODIR)
398 #define DRIVER_SPINDLE1_ENABLE (SPINDLE_ENA|SPINDLE_PWM)
399 #elif SPINDLE_ENABLE & (1<<SPINDLE_ONOFF1)
400 #define DRIVER_SPINDLE1_ENABLE SPINDLE_ENA
401 #elif SPINDLE_ENABLE & (1<<SPINDLE_ONOFF1_DIR)
402 #define DRIVER_SPINDLE1_ENABLE (SPINDLE_ENA|SPINDLE_DIR)
403 #endif
404 #else
405 #warning "Configure N_SPINDLE > 1 in grbl/config.h when enabling second driver spindle!"
406 #endif
407 #else
408 #define DRIVER_SPINDLE1_ENABLE 0
409 #endif
410 
411 #if DRIVER_SPINDLE1_ENABLE & SPINDLE_DIR
412 #define DRIVER_SPINDLE1_DIR_ENABLE 1 // Deprecated
413 #else
414 #define DRIVER_SPINDLE1_DIR_ENABLE 0 // Deprecated
415 #endif
416 
417 #if DRIVER_SPINDLE1_ENABLE & SPINDLE_PWM
418 #define DRIVER_SPINDLE1_PWM_ENABLE 1 // Deprecated
419 #define DRIVER_SPINDLE1_NAME "PWM2"
420 #else
421 #define DRIVER_SPINDLE1_PWM_ENABLE 0 // Deprecated
422 #if DRIVER_SPINDLE1_ENABLE
423 #define DRIVER_SPINDLE1_NAME "Basic2"
424 #endif
425 #endif
426 
427 //
428 
429 #ifndef VFD_ENABLE
430  #if SPINDLE_ENABLE & SPINDLE_ALL_VFD
431  #define VFD_ENABLE 1
432  #else
433  #define VFD_ENABLE 0
434  #endif
435 #endif
436 
437 #if MODBUS_ENABLE == 2
438 #undef MODBUS_ENABLE
439 #define MODBUS_ENABLE 0b011
440 #endif
441 
442 #ifndef MODBUS_ENABLE
443 #if VFD_ENABLE
444 #define MODBUS_ENABLE 1
445 #else
446 #define MODBUS_ENABLE 0
447 #endif
448 #endif
449 
450 #ifndef STEP_INJECT_ENABLE
451  #if SPINDLE_ENABLE & (1<<SPINDLE_STEPPER)
452  #define STEP_INJECT_ENABLE 1
453  #else
454  #define STEP_INJECT_ENABLE 0
455  #endif
456 #endif
457 
458 #ifndef SPINDLE_ENCODER_ENABLE
459 #if SPINDLE_SYNC_ENABLE && !(SPINDLE_ENABLE & (1 << SPINDLE_STEPPER))
460 #define SPINDLE_ENCODER_ENABLE 1
461 #else
462 #define SPINDLE_ENCODER_ENABLE 0
463 #endif
464 #endif
465 
466 #ifndef ENCODER_ENABLE
467 #define ENCODER_ENABLE 0
468 #endif
469 
470 #ifndef QEI_ENABLE
471 #if ENCODER_ENABLE
472 #define QEI_ENABLE 1
473 #else
474 #define QEI_ENABLE 0
475 #endif
476 #endif
477 
478 #ifndef ODOMETER_ENABLE
479 #define ODOMETER_ENABLE 0
480 #endif
481 #ifndef OPENPNP_ENABLE
482 #define OPENPNP_ENABLE 0
483 #endif
484 #ifndef FANS_ENABLE
485 #define FANS_ENABLE 0
486 #endif
487 #ifndef LIMITS_OVERRIDE_ENABLE
488 #define LIMITS_OVERRIDE_ENABLE 0
489 #endif
490 
491 #ifndef BLUETOOTH_ENABLE
492 #define BLUETOOTH_ENABLE 0
493 #endif
494 #if BLUETOOTH_ENABLE
495 #ifndef BLUETOOTH_DEVICE
496 #define BLUETOOTH_DEVICE "grblHAL"
497 #endif
498 #ifndef BLUETOOTH_SERVICE
499 #define BLUETOOTH_SERVICE "grblHAL Serial Port" // Minimum 8 characters, or blank for open
500 #endif
501 #endif
502 
503 // Optional control signals
504 
505 #ifndef SAFETY_DOOR_ENABLE
506 #define SAFETY_DOOR_ENABLE 0
507 #endif
508 #ifndef PROBE_DISCONNECT_ENABLE
509 #define PROBE_DISCONNECT_ENABLE 0
510 #endif
511 #ifndef STOP_DISABLE_ENABLE
512 #define STOP_DISABLE_ENABLE 0
513 #endif
514 #ifndef BLOCK_DELETE_ENABLE
515 #define BLOCK_DELETE_ENABLE 0
516 #endif
517 #ifndef SINGLE_BLOCK_ENABLE
518 #define SINGLE_BLOCK_ENABLE 0
519 #endif
520 #ifndef MOTOR_FAULT_ENABLE
521 #define MOTOR_FAULT_ENABLE 0
522 #endif
523 #ifndef MOTOR_WARNING_ENABLE
524 #define MOTOR_WARNING_ENABLE 0
525 #endif
526 #ifndef LIMITS_OVERRIDE_ENABLE
527 #define LIMITS_OVERRIDE_ENABLE 0
528 #endif
529 
530 #if SAFETY_DOOR_ENABLE && defined(NO_SAFETY_DOOR_SUPPORT)
531 #error "Driver does not support safety door functionality!"
532 #endif
533 
534 //
535 
536 #ifndef WIFI_ENABLE
537 #define WIFI_ENABLE 0
538 #endif
539 
540 #ifndef WEBUI_ENABLE
541 #define WEBUI_ENABLE 0
542 #endif
543 
544 #ifndef WEBUI_AUTH_ENABLE
545 #define WEBUI_AUTH_ENABLE 0
546 #endif
547 
548 #ifndef WEBUI_INFLASH
549 #define WEBUI_INFLASH 0
550 #endif
551 
552 #if WEBUI_ENABLE
553 
554 #if !WIFI_ENABLE
555 #ifdef ETHERNET_ENABLE
556 #undef ETHERNET_ENABLE
557 #endif
558 #define ETHERNET_ENABLE 1
559 #endif
560 #ifdef HTTP_ENABLE
561 #undef HTTP_ENABLE
562 #endif
563 #define HTTP_ENABLE 1
564 #ifdef WEBSOCKET_ENABLE
565 #undef WEBSOCKET_ENABLE
566 #endif
567 #define WEBSOCKET_ENABLE 1
568 #if defined(SDCARD_ENABLE) && SDCARD_ENABLE == 0 && LITTLEFS_ENABLE != 2
569 #undef SDCARD_ENABLE
570 #endif
571 #ifndef SDCARD_ENABLE
572 #if LITTLEFS_ENABLE == 2
573 #define SDCARD_ENABLE 0
574 #else
575 #define SDCARD_ENABLE 1
576 #endif
577 #endif
578 #endif
579 
580 #ifndef ETHERNET_ENABLE
581 #define ETHERNET_ENABLE 0
582 #endif
583 #ifndef TELNET_ENABLE
584 #define TELNET_ENABLE 0
585 #endif
586 #ifndef HTTP_ENABLE
587 #define HTTP_ENABLE 0
588 #endif
589 #ifndef WEBSOCKET_ENABLE
590 #define WEBSOCKET_ENABLE 0
591 #endif
592 #ifndef FTP_ENABLE
593 #define FTP_ENABLE 0
594 #elif !(SDCARD_ENABLE || LITTLEFS_ENABLE)
595 #undef FTP_ENABLE
596 #define FTP_ENABLE 0
597 #endif
598 #ifndef MDNS_ENABLE
599 #define MDNS_ENABLE 0
600 #endif
601 #ifndef SSDP_ENABLE
602 #define SSDP_ENABLE 0
603 #endif
604 #if SSDP_ENABLE && !HTTP_ENABLE
605 #undef HTTP_ENABLE
606 #define HTTP_ENABLE 1
607 #endif
608 #ifndef MQTT_ENABLE
609 #define MQTT_ENABLE 0
610 #endif
611 
612 #if ETHERNET_ENABLE || WIFI_ENABLE
613 #ifndef NETWORK_HOSTNAME
614 #define NETWORK_HOSTNAME "grblHAL"
615 #endif
616 #ifndef NETWORK_IPMODE
617 #define NETWORK_IPMODE 1 // 0 = static, 1 = DHCP, 2 = AutoIP
618 #endif
619 #ifndef NETWORK_IP
620 #define NETWORK_IP "192.168.5.1"
621 #endif
622 #ifndef NETWORK_GATEWAY
623 #define NETWORK_GATEWAY "192.168.5.1"
624 #endif
625 #ifndef NETWORK_MASK
626 #define NETWORK_MASK "255.255.255.0"
627 #endif
628 #ifndef NETWORK_FTP_PORT
629 #define NETWORK_FTP_PORT 21
630 #endif
631 #ifndef NETWORK_TELNET_PORT
632 #define NETWORK_TELNET_PORT 23
633 #endif
634 #ifndef NETWORK_HTTP_PORT
635 #define NETWORK_HTTP_PORT 80
636 #endif
637 #ifndef NETWORK_MODBUS_PORT
638 #define NETWORK_MODBUS_PORT 502
639 #endif
640 #ifndef NETWORK_MQTT_PORT
641 #define NETWORK_MQTT_PORT 1883
642 #endif
643 #ifndef NETWORK_WEBSOCKET_PORT
644 #if HTTP_ENABLE
645 #define NETWORK_WEBSOCKET_PORT 81
646 #else
647 #define NETWORK_WEBSOCKET_PORT 80
648 #endif
649 #endif
650 #if NETWORK_IPMODE < 0 || NETWORK_IPMODE > 2
651 #error "Invalid IP mode selected!"
652 #endif
653 #if HTTP_ENABLE && NETWORK_WEBSOCKET_PORT == NETWORK_HTTP_PORT
654 #warning "HTTP and WebSocket protocols cannot share the same port!"
655 #endif
656 #endif // ETHERNET_ENABLE || WIFI_ENABLE
657 
658 #if WIFI_ENABLE
659 
660 #ifndef NETWORK_STA_SSID
661 #define NETWORK_STA_SSID ""
662 #endif
663 #ifndef NETWORK_STA_PASSWORD
664 #define NETWORK_STA_PASSWORD ""
665 #endif
666 #ifndef NETWORK_STA_HOSTNAME
667 #define NETWORK_STA_HOSTNAME "grblHAL"
668 #endif
669 #ifndef NETWORK_STA_IPMODE
670 #define NETWORK_STA_IPMODE 1 // DHCP
671 #endif
672 #ifndef NETWORK_STA_IP
673 #define NETWORK_STA_IP "192.168.5.1"
674 #endif
675 #ifndef NETWORK_STA_GATEWAY
676 #define NETWORK_STA_GATEWAY "192.168.5.1"
677 #endif
678 #ifndef NETWORK_STA_MASK
679 #define NETWORK_STA_MASK "255.255.255.0"
680 #endif
681 
682 #if WIFI_SOFTAP > 0
683 #ifndef NETWORK_AP_SSID
684 #define NETWORK_AP_SSID "grblHAL_AP"
685 #endif
686 #ifndef NETWORK_AP_PASSWORD
687 #define NETWORK_AP_PASSWORD "grblHALpwd"
688 #endif
689 #ifndef NETWORK_AP_HOSTNAME
690 #define NETWORK_AP_HOSTNAME "grblHAL_AP"
691 #endif
692 #ifndef NETWORK_AP_IPMODE
693 #define NETWORK_AP_IPMODE 0 // static
694 #endif
695 #ifndef NETWORK_AP_IP
696 #define NETWORK_AP_IP "192.168.5.1"
697 #endif
698 #ifndef NETWORK_AP_GATEWAY
699 #define NETWORK_AP_GATEWAY "192.168.5.1"
700 #endif
701 #ifndef NETWORK_AP_MASK
702 #define NETWORK_AP_MASK "255.255.255.0"
703 #endif
704 #endif // WIFI_SOFTAP
705 #endif // WIFI_ENABLE
706 
707 #ifndef SDCARD_ENABLE
708 #define SDCARD_ENABLE 0
709 #endif
710 
711 #if LITTLEFS_ENABLE == 2 && SDCARD_ENABLE
712 #undef LITTLEFS_ENABLE
713 #define LITTLEFS_ENABLE 1
714 #endif
715 
716 #if LITTLEFS_ENABLE
717 #if LITTLEFS_ENABLE == 2
718 #define LITTLEFS_MOUNT_DIR "/"
719 #else
720 #define LITTLEFS_MOUNT_DIR "/littlefs"
721 #endif
722 #endif
723 
724 #define FS_FATFS 0b00001
725 #define FS_SDCARD 0b00010
726 #define FS_LFS 0b00100
727 #define FS_LFS_ROOT 0b01000
728 #define FS_YMODEM 0b10000
729 
730 #if SDCARD_ENABLE && LITTLEFS_ENABLE
731 #if SDCARD_ENABLE == 2
732 #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_LFS|FS_YMODEM)
733 #else
734 #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_LFS)
735 #endif
736 #elif LITTLEFS_ENABLE == 2
737 #define FS_ENABLE (FS_LFS|FS_LFS_ROOT|FS_YMODEM)
738 #elif LITTLEFS_ENABLE
739 #define FS_ENABLE FS_LFS
740 #elif SDCARD_ENABLE == 1
741 #define FS_ENABLE (FS_SDCARD|FS_FATFS)
742 #elif SDCARD_ENABLE == 2
743 #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_YMODEM)
744 #else
745 #define FS_ENABLE 0
746 #endif
747 
748 /*EOF*/
HAL function pointers and data structures definitions.