From 59fac61af3a373d503cd25cde21c294b5b5db003 Mon Sep 17 00:00:00 2001 From: Terje Io Date: Wed, 7 Jul 2021 18:33:52 +0200 Subject: [PATCH] added submodule --- .gitmodules | 3 ++ grblHAL_Teensy4/src/driver.c | 53 ++++++++--------------------------- grblHAL_Teensy4/src/driver.h | 2 ++ grblHAL_Teensy4/src/fans | 1 + grblHAL_Teensy4/src/ioports.c | 17 +++++++++-- 5 files changed, 33 insertions(+), 43 deletions(-) create mode 160000 grblHAL_Teensy4/src/fans diff --git a/.gitmodules b/.gitmodules index b64e837..5534167 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "grblHAL_Teensy4/src/bluetooth"] path = grblHAL_Teensy4/src/bluetooth url = https://github.com/grblHAL/Plugins_Bluetooth +[submodule "grblHAL_Teensy4\\src\\fans"] + path = grblHAL_Teensy4\\src\\fans + url = https://github.com/grblHAL/Plugin_fans diff --git a/grblHAL_Teensy4/src/driver.c b/grblHAL_Teensy4/src/driver.c index ff041f8..0b9ca9a 100644 --- a/grblHAL_Teensy4/src/driver.c +++ b/grblHAL_Teensy4/src/driver.c @@ -46,27 +46,11 @@ #include "sdcard/sdcard.h" #endif -#if KEYPAD_ENABLE -#include "keypad/keypad.h" -#endif - -#if PLASMA_ENABLE -#include "plasma/thc.h" -#endif - #if PPI_ENABLE #include "laser/ppi.h" static void ppi_timeout_isr (void); #endif -#if ODOMETER_ENABLE -#include "odometer/odometer.h" -#endif - -#if OPENPNP_ENABLE -#include "openpnp/openpnp.h" -#endif - #if BLUETOOTH_ENABLE #include "bluetooth/bluetooth.h" #endif @@ -443,9 +427,9 @@ static output_signal_t outputpin[] = { { .id = Output_SpindleDir, .port = &spindleDir, .pin = SPINDLE_DIRECTION_PIN, .group = PinGroup_SpindleControl }, #endif #endif - { .id = Output_CoolantMist, .port = &Mist, .pin = COOLANT_FLOOD_PIN, .group = PinGroup_Coolant }, + { .id = Output_CoolantFlood, .port = &Mist, .pin = COOLANT_FLOOD_PIN, .group = PinGroup_Coolant }, #ifdef COOLANT_MIST_PIN - { .id = Output_CoolantFlood, .port = &Flood, .pin = COOLANT_MIST_PIN, .group = PinGroup_Coolant }, + { .id = Output_CoolantMist, .port = &Flood, .pin = COOLANT_MIST_PIN, .group = PinGroup_Coolant }, #endif #ifdef AUXOUTPUT0_PIN { .id = Output_Aux0, .port = &AuxOut0, .pin = AUXOUTPUT0_PIN, .group = PinGroup_AuxOutput }, @@ -568,7 +552,7 @@ static bool selectStream (const io_stream_t *stream) if(!stream) stream = active_stream == StreamType_Bluetooth ? serial_stream : last_serial_stream; - memcpy(&hal.stream, stream, sizeof(io_stream_t)); + memcpy(&hal.stream, stream, offsetof(io_stream_t, enqueue_realtime_command)); #if ETHERNET_ENABLE if(!hal.stream.write_all) @@ -1564,39 +1548,33 @@ static void settings_changed (settings_t *settings) #if ESTOP_ENABLE case Input_EStop: pullup = !settings->control_disable_pullup.e_stop; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = control_fei.e_stop ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; #else case Input_Reset: pullup = !settings->control_disable_pullup.reset; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = control_fei.reset ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; #endif case Input_FeedHold: pullup = !settings->control_disable_pullup.feed_hold; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = control_fei.feed_hold ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; case Input_CycleStart: pullup = !settings->control_disable_pullup.cycle_start; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = control_fei.cycle_start ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; #if SAFETY_DOOR_ENABLE case Input_SafetyDoor: pullup = !settings->control_disable_pullup.safety_door_ajar; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = control_fei.safety_door_ajar ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; #endif #ifdef LIMITS_OVERRIDE_PIN case Input_LimitsOverride: pullup = true; - signal->debounce = false; break; #endif case Input_Probe: @@ -1607,7 +1585,6 @@ static void settings_changed (settings_t *settings) case Input_LimitX_2: case Input_LimitX_Max: pullup = !settings->limits.disable_pullup.x; - signal->debounce = hal.driver_cap.software_debounce; signal->irq_mode = limit_fei.x ? IRQ_Mode_Falling : IRQ_Mode_Rising; break; @@ -1682,7 +1659,7 @@ static void settings_changed (settings_t *settings) #if QEI_SELECT_ENABLED case Input_QEI_Select: - signal->debounce = hal.driver_cap.software_debounce; + signal->debounce = true; if(qei_enable) signal->irq_mode = IRQ_Mode_Falling; break; @@ -1692,9 +1669,11 @@ static void settings_changed (settings_t *settings) break; } + signal->debounce = hal.driver_cap.software_debounce && (signal->debounce || signal->group == PinGroup_Control); + if(signal->group == PinGroup_AuxInput) { signal->cap.pull_mode = (PullMode_Up|PullMode_Down); - signal->cap.irq_mode = (IRQ_Mode_Rising|IRQ_Mode_Falling); + signal->cap.irq_mode = IRQ_Mode_All; } pinMode(signal->pin, pullup ? INPUT_PULLUP : INPUT_PULLDOWN); @@ -1731,7 +1710,7 @@ static void settings_changed (settings_t *settings) static void enumeratePins (bool low_level, pin_info_ptr pin_info) { static xbar_t pin = {0}; - uint32_t i = sizeof(inputpin) / sizeof(input_signal_t); + uint32_t i; pin.mode.input = On; @@ -1741,6 +1720,7 @@ static void enumeratePins (bool low_level, pin_info_ptr pin_info) pin.group = inputpin[i].group; // pin.port = low_level ? (void *)inputpin[i].port : (void *)port2char(inputpin[i].port); pin.mode.pwm = pin.group == PinGroup_SpindlePWM; + pin.description = inputpin[i].description; pin_info(&pin); }; @@ -1753,6 +1733,7 @@ static void enumeratePins (bool low_level, pin_info_ptr pin_info) pin.function = outputpin[i].id; pin.group = outputpin[i].group; // pin.port = low_level ? (void *)outputpin[i].port : (void *)port2char(outputpin[i].port); + pin.description = outputpin[i].description; pin_info(&pin); }; @@ -2166,7 +2147,7 @@ bool driver_init (void) options[strlen(options) - 1] = '\0'; hal.info = "iMXRT1062"; - hal.driver_version = "210617"; + hal.driver_version = "210703"; #ifdef BOARD_NAME hal.board = BOARD_NAME; #endif @@ -2341,10 +2322,6 @@ bool driver_init (void) huanyang_init(modbus_init(serialInit(115200), NULL)); #endif -#if KEYPAD_ENABLE - keypad_init(); -#endif - #if QEI_ENABLE qei_enable = encoder_init(QEI_ENABLE); #endif @@ -2354,17 +2331,11 @@ bool driver_init (void) plasma_init(); #endif -#if OPENPNP_ENABLE - openpnp_init(); -#endif - #if BLUETOOTH_ENABLE bluetooth_init(serialInit(115200)); #endif -#if ODOMETER_ENABLE - odometer_init(); // NOTE: this *must* be last plugin to be initialized as it claims storage at the end of NVS. -#endif +#include "grbl/plugins_init.h" // No need to move version check before init. // Compiler will fail any signature mismatch for existing entries. diff --git a/grblHAL_Teensy4/src/driver.h b/grblHAL_Teensy4/src/driver.h index 68b54e4..bdd164c 100644 --- a/grblHAL_Teensy4/src/driver.h +++ b/grblHAL_Teensy4/src/driver.h @@ -183,6 +183,7 @@ typedef struct { volatile bool debounce; pin_mode_t cap; ioport_interrupt_callback_ptr interrupt_callback; + const char *description; } input_signal_t; typedef struct { @@ -190,6 +191,7 @@ typedef struct { gpio_t *port; uint8_t pin; pin_group_t group; + const char *description; } output_signal_t; typedef struct { diff --git a/grblHAL_Teensy4/src/fans b/grblHAL_Teensy4/src/fans new file mode 160000 index 0000000..243a6bc --- /dev/null +++ b/grblHAL_Teensy4/src/fans @@ -0,0 +1 @@ +Subproject commit 243a6bc18835dfda57a5a854ed0e5bbb3976b740 diff --git a/grblHAL_Teensy4/src/ioports.c b/grblHAL_Teensy4/src/ioports.c index 938b418..37cf4e6 100644 --- a/grblHAL_Teensy4/src/ioports.c +++ b/grblHAL_Teensy4/src/ioports.c @@ -94,7 +94,7 @@ static void aux_settings_load (void) { uint_fast8_t idx = aux_n_out; - do { + if(aux_n_out) do { idx--; pinModeOutput(aux_out[idx].port, aux_out[idx].pin); DIGITAL_OUT((*(aux_out[idx].port)), (settings.ioport.invert_out.mask >> idx) & 0x01); @@ -216,7 +216,7 @@ static bool register_interrupt_handler (uint8_t port, pin_irq_mode_t irq_mode, i input_signal_t *input = &aux_in[port]; - if(irq_mode != IRQ_Mode_None && (ok = interrupt_callback != NULL)) { + if((ok = (irq_mode & aux_in[port].cap.irq_mode) == irq_mode && interrupt_callback != NULL)) { input->irq_mode = irq_mode; input->interrupt_callback = interrupt_callback; pinEnableIRQ(input, irq_mode); @@ -233,6 +233,17 @@ static bool register_interrupt_handler (uint8_t port, pin_irq_mode_t irq_mode, i return ok; } +static void set_pin_description (bool digital, bool output, uint8_t port, const char *s) +{ + if(digital) { + if(!output && port < aux_n_in) + aux_in[port].description = s; + + if(output && port < aux_n_out) + aux_out[port].description = s; + } +} + void ioports_init (pin_group_pins_t *aux_inputs, pin_group_pins_t *aux_outputs) { aux_in = aux_inputs->pins.inputs; @@ -246,6 +257,8 @@ void ioports_init (pin_group_pins_t *aux_inputs, pin_group_pins_t *aux_outputs) if((hal.port.num_digital_out = aux_n_out = aux_outputs->n_pins)) hal.port.digital_out = digital_out; + hal.port.set_pin_description = set_pin_description; + details.on_get_settings = grbl.on_get_settings; grbl.on_get_settings = on_get_settings;