added submodule

This commit is contained in:
Terje Io 2021-07-07 18:33:52 +02:00
parent 19015d7bfd
commit 59fac61af3
5 changed files with 33 additions and 43 deletions

3
.gitmodules vendored
View File

@ -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

View File

@ -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.

View File

@ -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 {

@ -0,0 +1 @@
Subproject commit 243a6bc18835dfda57a5a854ed0e5bbb3976b740

View File

@ -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;