/* driver_opts.h - for preprocessing options from my_machine.h or compiler symbols NOTE: This file is not used by the core, it may be used by drivers Part of grblHAL Copyright (c) 2020-2025 Terje Io grblHAL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. grblHAL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with grblHAL. If not, see . */ // // NOTE: do NOT change options here - edit the driver specific my_machine.h instead! // #pragma once #include "hal.h" #include "nuts_bolts.h" #define MODBUS_RTU_ENABLED 0b001 #define MODBUS_RTU_DIR_ENABLED 0b010 #define MODBUS_TCP_ENABLED 0b100 #include "expanders_init.h" #ifdef OPTS_POSTPROCESSING #define NO_OPTS_POST 0 #else #define NO_OPTS_POST 1 #endif #ifndef X_GANGED #define X_GANGED 0 #endif #ifndef X_AUTO_SQUARE #define X_AUTO_SQUARE 0 #endif #ifndef Y_GANGED #define Y_GANGED 0 #endif #ifndef Y_AUTO_SQUARE #define Y_AUTO_SQUARE 0 #endif #ifndef Z_GANGED #define Z_GANGED 0 #endif #ifndef Z_AUTO_SQUARE #define Z_AUTO_SQUARE 0 #endif #ifndef X_GANGED_LIM_MAX #define X_GANGED_LIM_MAX 0 #endif #ifndef Y_GANGED_LIM_MAX #define Y_GANGED_LIM_MAX 0 #endif #ifndef Z_GANGED_LIM_MAX #define Z_GANGED_LIM_MAX 0 #endif #if X_AUTO_SQUARE && !X_GANGED #undef X_GANGED #define X_GANGED 1 #endif #if Y_AUTO_SQUARE && !Y_GANGED #undef Y_GANGED #define Y_GANGED 1 #endif #if Z_AUTO_SQUARE && !Z_GANGED #undef Z_GANGED #define Z_GANGED 1 #endif #define N_GANGED (X_GANGED + Y_GANGED + Z_GANGED) #define N_AUTO_SQUARED (X_AUTO_SQUARE + Y_AUTO_SQUARE + Z_AUTO_SQUARE) #define N_ABC_MOTORS (N_ABC_AXIS + N_GANGED) #define GANGED_MAP (((Z_GANGED<<(X_GANGED+Y_GANGED))|(Y_GANGED< 3 || (AUTO_SQUARED_MAP & 8) #define M3_LIMIT_ENABLE 1 #else #define M3_LIMIT_ENABLE 0 #endif #if N_AXIS > 4 || (AUTO_SQUARED_MAP & 16) #define M4_LIMIT_ENABLE 1 #else #define M4_LIMIT_ENABLE 0 #endif #if N_AXIS > 5 || (AUTO_SQUARED_MAP & 32) #define M5_LIMIT_ENABLE 1 #else #define M5_LIMIT_ENABLE 0 #endif #if N_AXIS > 6 || (AUTO_SQUARED_MAP & 64) #define M6_LIMIT_ENABLE 1 #else #define M6_LIMIT_ENABLE 0 #endif #if N_AXIS > 7 || (AUTO_SQUARED_MAP & 128) #define M7_LIMIT_ENABLE 1 #else #define M7_LIMIT_ENABLE 0 #endif #ifndef NEOPIXELS_ENABLE #define NEOPIXELS_ENABLE 0 #endif #ifndef USB_SERIAL_CDC #define USB_SERIAL_CDC 0 // for UART comms #endif #ifndef USB_SERIAL_WAIT #define USB_SERIAL_WAIT 0 #endif #if USB_SERIAL_CDC == 0 && !defined(SERIAL_STREAM) #define SERIAL_STREAM 0 #endif #ifndef MACROS_ENABLE #define MACROS_ENABLE 0 #endif #ifndef KEYPAD_ENABLE #define KEYPAD_ENABLE 0 #endif #if KEYPAD_ENABLE == 1 #ifdef I2C_STROBE_ENABLE #undef I2C_STROBE_ENABLE #endif #define I2C_STROBE_ENABLE 1 #elif NO_OPTS_POST && KEYPAD_ENABLE == 2 && !defined(KEYPAD_STREAM) #if USB_SERIAL_CDC #define KEYPAD_STREAM 0 #else #define KEYPAD_STREAM 1 #endif #endif #ifndef I2C_STROBE_ENABLE #define I2C_STROBE_ENABLE 0 #endif #ifndef MPG_ENABLE #define MPG_ENABLE 0 #endif #if NO_OPTS_POST && MPG_ENABLE && !defined(MPG_STREAM) #if USB_SERIAL_CDC #define MPG_STREAM 0 #else #define MPG_STREAM 1 #endif #endif #ifndef DISPLAY_ENABLE #define DISPLAY_ENABLE 0 #endif #ifndef EEPROM_ENABLE #define EEPROM_ENABLE 0 #endif #ifndef EEPROM_IS_FRAM #define EEPROM_IS_FRAM 0 #endif #if EEPROM_ENABLE || KEYPAD_ENABLE == 1 || I2C_STROBE_ENABLE || (DISPLAY_ENABLE & DISPLAY_I2C) || (TRINAMIC_ENABLE && TRINAMIC_I2C) #if defined(I2C_ENABLE) && I2C_ENABLE == 0 #undef I2C_ENABLE #else #define I2C_ENABLE 1 #endif #endif #ifndef I2C_ENABLE #define I2C_ENABLE 0 #endif #ifndef SPINDLE_SYNC_ENABLE #define SPINDLE_SYNC_ENABLE 0 #endif #ifndef TRINAMIC_ENABLE #define TRINAMIC_ENABLE 0 #endif #if TRINAMIC_ENABLE == 2209 #ifndef TRINAMIC_UART_ENABLE #define TRINAMIC_UART_ENABLE 1 #endif #if NO_OPTS_POST && !defined(TRINAMIC_STREAM) && TRINAMIC_UART_ENABLE == 1 #define TRINAMIC_STREAM 1 #endif #else #define TRINAMIC_UART_ENABLE 0 #endif #if (TRINAMIC_ENABLE == 2130 || TRINAMIC_ENABLE == 2240 || TRINAMIC_ENABLE == 2660 || TRINAMIC_ENABLE == 5160) #if !defined(TRINAMIC_SPI_ENABLE) #define TRINAMIC_SPI_ENABLE 1 #endif #else #define TRINAMIC_SPI_ENABLE 0 #endif #ifndef TRINAMIC_DEV #define TRINAMIC_DEV 0 #endif #if NO_OPTS_POST #ifndef TRINAMIC_I2C #define TRINAMIC_I2C 0 #endif #if TRINAMIC_ENABLE && TRINAMIC_I2C #define TRINAMIC_MOTOR_ENABLE 1 #else #define TRINAMIC_MOTOR_ENABLE 0 #endif #endif #ifndef LITTLEFS_ENABLE #define LITTLEFS_ENABLE 0 #endif #ifndef PWM_RAMPED #define PWM_RAMPED 0 #endif #ifndef PLASMA_ENABLE #define PLASMA_ENABLE 0 #elif PLASMA_ENABLE #if defined(STEP_INJECT_ENABLE) #undef STEP_INJECT_ENABLE #endif #define STEP_INJECT_ENABLE 1 #endif #ifndef PPI_ENABLE #define PPI_ENABLE 0 #endif #if EMBROIDERY_ENABLE #if defined(SDCARD_ENABLE) && SDCARD_ENABLE == 0 #undef SDCARD_ENABLE #endif #ifndef SDCARD_ENABLE #define SDCARD_ENABLE 1 #endif #endif #ifndef ESTOP_ENABLE #if COMPATIBILITY_LEVEL <= 1 #define ESTOP_ENABLE 1 #else #define ESTOP_ENABLE 0 #endif #elif ESTOP_ENABLE && COMPATIBILITY_LEVEL > 1 #warning "Enabling ESTOP may not work with all senders!" #endif // Control signals, keep in sync with control_signals_t bit order #define CONTROL_RESET (1<<0) #define CONTROL_FEED_HOLD (1<<1) #define CONTROL_CYCLE_START (1<<2) #define CONTROL_ESTOP (1<<6) #if ESTOP_ENABLE #define CONTROL_HALT CONTROL_ESTOP #else #define CONTROL_HALT CONTROL_RESET #endif // Probe signals #ifndef PROBE_ENABLE #define PROBE_ENABLE 1 #endif #ifndef PROBE2_ENABLE #define PROBE2_ENABLE 0 #endif #ifndef TOOLSETTER_ENABLE #define TOOLSETTER_ENABLE 0 #endif // Coolant signals, keep in sync with coolant_state_t #define COOLANT_FLOOD 0b01 #define COOLANT_MIST 0b10 #ifndef COOLANT_ENABLE #define COOLANT_ENABLE (COOLANT_FLOOD|COOLANT_MIST) #endif // Spindle signals #define SPINDLE_ENA 0b001 #define SPINDLE_PWM 0b010 #define SPINDLE_DIR 0b100 #ifndef SPINDLE0_ENABLE #define SPINDLE0_ENABLE DEFAULT_SPINDLE #endif #ifndef SPINDLE1_ENABLE #define SPINDLE1_ENABLE 0 #elif SPINDLE1_ENABLE == -1 || SPINDLE1_ENABLE == SPINDLE_ALL || SPINDLE1_ENABLE == SPINDLE_ALL_VFD #warning "SPINDLE1_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD" #undef SPINDLE1_ENABLE #define SPINDLE1_ENABLE 0 #endif #ifndef SPINDLE2_ENABLE #define SPINDLE2_ENABLE 0 #elif SPINDLE2_ENABLE == -1 || SPINDLE2_ENABLE == SPINDLE_ALL || SPINDLE2_ENABLE == SPINDLE_ALL_VFD #warning "SPINDLE2_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD" #undef SPINDLE2_ENABLE #define SPINDLE2_ENABLE 0 #endif #ifndef SPINDLE3_ENABLE #define SPINDLE3_ENABLE 0 #elif SPINDLE3_ENABLE == -1 || SPINDLE3_ENABLE == SPINDLE_ALL || SPINDLE3_ENABLE == SPINDLE_ALL_VFD #warning "SPINDLE3_ENABLE cannot be set to -1, SPINDLE_ALL or SPINDLE_ALL_VFD" #undef SPINDLE1_ENABLE #define SPINDLE1_ENABLE 0 #endif #if SPINDLE0_ENABLE == -1 || SPINDLE0_ENABLE == SPINDLE_ALL #define SPINDLE_ENABLE (SPINDLE_ALL|(1< 1 #if SPINDLE_ENABLE & (1< 1 in grbl/config.h when enabling second driver spindle!" #endif #else #define DRIVER_SPINDLE1_ENABLE 0 #endif #if DRIVER_SPINDLE1_ENABLE & SPINDLE_DIR #define DRIVER_SPINDLE1_DIR_ENABLE 1 // Deprecated #else #define DRIVER_SPINDLE1_DIR_ENABLE 0 // Deprecated #endif #if DRIVER_SPINDLE1_ENABLE & SPINDLE_PWM #define DRIVER_SPINDLE1_PWM_ENABLE 1 // Deprecated #define DRIVER_SPINDLE1_NAME "PWM2" #else #define DRIVER_SPINDLE1_PWM_ENABLE 0 // Deprecated #if DRIVER_SPINDLE1_ENABLE #define DRIVER_SPINDLE1_NAME "Basic2" #endif #endif // #ifndef VFD_ENABLE #if SPINDLE_ENABLE & SPINDLE_ALL_VFD #define VFD_ENABLE 1 #else #define VFD_ENABLE 0 #endif #endif #if MODBUS_ENABLE == 2 #undef MODBUS_ENABLE #define MODBUS_ENABLE 0b011 #endif #ifndef MODBUS_ENABLE #if VFD_ENABLE #define MODBUS_ENABLE 1 #else #define MODBUS_ENABLE 0 #endif #endif #ifndef STEP_INJECT_ENABLE #if SPINDLE_ENABLE & (1< 2 #error "Invalid IP mode selected!" #endif #if HTTP_ENABLE && NETWORK_WEBSOCKET_PORT == NETWORK_HTTP_PORT #warning "HTTP and WebSocket protocols cannot share the same port!" #endif #endif // ETHERNET_ENABLE || WIFI_ENABLE #if WIFI_ENABLE #ifndef NETWORK_STA_SSID #define NETWORK_STA_SSID "" #endif #ifndef NETWORK_STA_PASSWORD #define NETWORK_STA_PASSWORD "" #endif #ifndef NETWORK_STA_HOSTNAME #define NETWORK_STA_HOSTNAME "grblHAL" #endif #ifndef NETWORK_STA_IPMODE #define NETWORK_STA_IPMODE 1 // DHCP #endif #ifndef NETWORK_STA_IP #define NETWORK_STA_IP "192.168.5.1" #endif #ifndef NETWORK_STA_GATEWAY #define NETWORK_STA_GATEWAY "192.168.5.1" #endif #ifndef NETWORK_STA_MASK #define NETWORK_STA_MASK "255.255.255.0" #endif #if WIFI_SOFTAP > 0 #ifndef NETWORK_AP_SSID #define NETWORK_AP_SSID "grblHAL_AP" #endif #ifndef NETWORK_AP_PASSWORD #define NETWORK_AP_PASSWORD "grblHALpwd" #endif #ifndef NETWORK_AP_HOSTNAME #define NETWORK_AP_HOSTNAME "grblHAL_AP" #endif #ifndef NETWORK_AP_IPMODE #define NETWORK_AP_IPMODE 0 // static #endif #ifndef NETWORK_AP_IP #define NETWORK_AP_IP "192.168.5.1" #endif #ifndef NETWORK_AP_GATEWAY #define NETWORK_AP_GATEWAY "192.168.5.1" #endif #ifndef NETWORK_AP_MASK #define NETWORK_AP_MASK "255.255.255.0" #endif #endif // WIFI_SOFTAP #endif // WIFI_ENABLE #ifndef SDCARD_ENABLE #define SDCARD_ENABLE 0 #endif #if LITTLEFS_ENABLE == 2 && SDCARD_ENABLE #undef LITTLEFS_ENABLE #define LITTLEFS_ENABLE 1 #endif #if LITTLEFS_ENABLE #if LITTLEFS_ENABLE == 2 #define LITTLEFS_MOUNT_DIR "/" #else #define LITTLEFS_MOUNT_DIR "/littlefs" #endif #endif #define FS_FATFS 0b00001 #define FS_SDCARD 0b00010 #define FS_LFS 0b00100 #define FS_LFS_ROOT 0b01000 #define FS_YMODEM 0b10000 #if SDCARD_ENABLE && LITTLEFS_ENABLE #if SDCARD_ENABLE == 2 #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_LFS|FS_YMODEM) #else #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_LFS) #endif #elif LITTLEFS_ENABLE == 2 #define FS_ENABLE (FS_LFS|FS_LFS_ROOT|FS_YMODEM) #elif LITTLEFS_ENABLE #define FS_ENABLE FS_LFS #elif SDCARD_ENABLE == 1 #define FS_ENABLE (FS_SDCARD|FS_FATFS) #elif SDCARD_ENABLE == 2 #define FS_ENABLE (FS_SDCARD|FS_FATFS|FS_YMODEM) #else #define FS_ENABLE 0 #endif /*EOF*/