Updated for shared stream buffer for tool change protocol.
This commit is contained in:
parent
78d43844a9
commit
89efaf1be1
|
@ -392,12 +392,8 @@ static void enetStreamWriteS (const char *data)
|
||||||
.get_rx_buffer_available = TCPStreamRxFree,
|
.get_rx_buffer_available = TCPStreamRxFree,
|
||||||
.reset_read_buffer = TCPStreamRxFlush,
|
.reset_read_buffer = TCPStreamRxFlush,
|
||||||
.cancel_read_buffer = TCPStreamRxCancel,
|
.cancel_read_buffer = TCPStreamRxCancel,
|
||||||
.enqueue_realtime_command = protocol_enqueue_realtime_command,
|
.suspend_read = TCPStreamSuspendInput,
|
||||||
#if M6_ENABLE
|
.enqueue_realtime_command = protocol_enqueue_realtime_command
|
||||||
.suspend_read = NULL // for now...
|
|
||||||
#else
|
|
||||||
.suspend_read = NULL
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -410,12 +406,8 @@ static void enetStreamWriteS (const char *data)
|
||||||
.get_rx_buffer_available = WsStreamRxFree,
|
.get_rx_buffer_available = WsStreamRxFree,
|
||||||
.reset_read_buffer = WsStreamRxFlush,
|
.reset_read_buffer = WsStreamRxFlush,
|
||||||
.cancel_read_buffer = WsStreamRxCancel,
|
.cancel_read_buffer = WsStreamRxCancel,
|
||||||
.enqueue_realtime_command = protocol_enqueue_realtime_command,
|
.suspend_read = WsStreamSuspendInput,
|
||||||
#if M6_ENABLE
|
.enqueue_realtime_command = protocol_enqueue_realtime_command
|
||||||
.suspend_read = NULL // for now...
|
|
||||||
#else
|
|
||||||
.suspend_read = NULL
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -472,7 +464,7 @@ static void (*systick_isr_org)(void) = NULL;
|
||||||
|
|
||||||
// Millisecond resolution delay function
|
// Millisecond resolution delay function
|
||||||
// Will return immediately if a callback function is provided
|
// Will return immediately if a callback function is provided
|
||||||
static void driver_delay_ms (uint32_t ms, void (*callback)(void))
|
static void driver_delay_ms (uint32_t ms, delay_callback_ptr callback)
|
||||||
{
|
{
|
||||||
if(ms) {
|
if(ms) {
|
||||||
grbl_delay.ms = ms;
|
grbl_delay.ms = ms;
|
||||||
|
@ -2086,7 +2078,7 @@ bool driver_init (void)
|
||||||
options[strlen(options) - 1] = '\0';
|
options[strlen(options) - 1] = '\0';
|
||||||
|
|
||||||
hal.info = "iMXRT1062";
|
hal.info = "iMXRT1062";
|
||||||
hal.driver_version = "210221";
|
hal.driver_version = "210313";
|
||||||
#ifdef BOARD_NAME
|
#ifdef BOARD_NAME
|
||||||
hal.board = BOARD_NAME;
|
hal.board = BOARD_NAME;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
Part of grblHAL
|
Part of grblHAL
|
||||||
|
|
||||||
Some parts of this code is Copyright (c) 2020 Terje Io
|
Some parts of this code is Copyright (c) 2020-2021 Terje Io
|
||||||
|
|
||||||
Some parts are derived from HardwareSerial.cpp in the Teensyduino Core Library
|
Some parts are derived from HardwareSerial.cpp in the Teensyduino Core Library
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ void transmitterEnable(uint8_t pin)
|
||||||
|
|
||||||
static uint16_t tx_fifo_size;
|
static uint16_t tx_fifo_size;
|
||||||
static stream_tx_buffer_t txbuffer = {0};
|
static stream_tx_buffer_t txbuffer = {0};
|
||||||
static stream_rx_buffer_t rxbuffer = {0}, rxbackup;
|
static stream_rx_buffer_t rxbuffer = {0};
|
||||||
|
|
||||||
void serialInit (uint32_t baud_rate)
|
void serialInit (uint32_t baud_rate)
|
||||||
{
|
{
|
||||||
|
@ -339,20 +339,9 @@ void serialWrite(const char *s, uint16_t length)
|
||||||
serialPutC(*ptr++);
|
serialPutC(*ptr++);
|
||||||
}
|
}
|
||||||
|
|
||||||
// "dummy" version of serialGetC
|
|
||||||
static int16_t serialGetNull (void)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool serialSuspendInput (bool suspend)
|
bool serialSuspendInput (bool suspend)
|
||||||
{
|
{
|
||||||
if(suspend)
|
return stream_rx_suspend(&rxbuffer, suspend);
|
||||||
hal.stream.read = serialGetNull;
|
|
||||||
else if(rxbuffer.backup)
|
|
||||||
memcpy(&rxbuffer, &rxbackup, sizeof(stream_rx_buffer_t));
|
|
||||||
|
|
||||||
return rxbuffer.tail != rxbuffer.head;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t serialTxCount(void) {
|
uint16_t serialTxCount(void) {
|
||||||
|
@ -413,9 +402,7 @@ static void uart_interrupt_handler (void)
|
||||||
rxbuffer.head = bptr; // and update pointer
|
rxbuffer.head = bptr; // and update pointer
|
||||||
#else
|
#else
|
||||||
if(data == CMD_TOOL_ACK && !rxbuffer.backup) {
|
if(data == CMD_TOOL_ACK && !rxbuffer.backup) {
|
||||||
memcpy(&rxbackup, &rxbuffer, sizeof(stream_rx_buffer_t));
|
stream_rx_backup(&rxbuffer);
|
||||||
rxbuffer.backup = true;
|
|
||||||
rxbuffer.tail = rxbuffer.head;
|
|
||||||
hal.stream.read = serialGetC; // restore normal input
|
hal.stream.read = serialGetC; // restore normal input
|
||||||
} else if(!hal.stream.enqueue_realtime_command((char)data)) {
|
} else if(!hal.stream.enqueue_realtime_command((char)data)) {
|
||||||
rxbuffer.data[rxbuffer.head] = (char)data; // Add data to buffer
|
rxbuffer.data[rxbuffer.head] = (char)data; // Add data to buffer
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Part of grblHAL
|
Part of grblHAL
|
||||||
|
|
||||||
Copyright (c) 2018-2020 Terje Io
|
Copyright (c) 2018-2021 Terje Io
|
||||||
|
|
||||||
|
|
||||||
Grbl is free software: you can redistribute it and/or modify
|
Grbl is free software: you can redistribute it and/or modify
|
||||||
|
@ -38,7 +38,7 @@ extern "C" {
|
||||||
|
|
||||||
static stream_block_tx_buffer_t txbuf = {0};
|
static stream_block_tx_buffer_t txbuf = {0};
|
||||||
static char rxbuf[BLOCK_RX_BUFFER_SIZE];
|
static char rxbuf[BLOCK_RX_BUFFER_SIZE];
|
||||||
static stream_rx_buffer_t usb_rxbuffer, usb_rxbackup;
|
static stream_rx_buffer_t usb_rxbuffer;
|
||||||
|
|
||||||
void usb_serialInit(void)
|
void usb_serialInit(void)
|
||||||
{
|
{
|
||||||
|
@ -183,20 +183,9 @@ int16_t usb_serialGetC (void)
|
||||||
return (int16_t)data;
|
return (int16_t)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// "dummy" version of serialGetC
|
|
||||||
static int16_t serialGetNull (void)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool usb_serialSuspendInput (bool suspend)
|
bool usb_serialSuspendInput (bool suspend)
|
||||||
{
|
{
|
||||||
if(suspend)
|
return stream_rx_suspend(&usb_rxbuffer, suspend);
|
||||||
hal.stream.read = serialGetNull;
|
|
||||||
else if(usb_rxbuffer.backup)
|
|
||||||
memcpy(&usb_rxbuffer, &usb_rxbackup, sizeof(stream_rx_buffer_t));
|
|
||||||
|
|
||||||
return usb_rxbuffer.tail != usb_rxbuffer.head;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -221,9 +210,7 @@ void usb_execute_realtime (uint_fast16_t state)
|
||||||
while(avail--) {
|
while(avail--) {
|
||||||
c = *dp++;
|
c = *dp++;
|
||||||
if(c == CMD_TOOL_ACK && !usb_rxbuffer.backup) {
|
if(c == CMD_TOOL_ACK && !usb_rxbuffer.backup) {
|
||||||
memcpy(&usb_rxbackup, &usb_rxbuffer, sizeof(stream_rx_buffer_t));
|
stream_rx_backup(&usb_rxbuffer);
|
||||||
usb_rxbuffer.backup = true;
|
|
||||||
usb_rxbuffer.tail = usb_rxbuffer.head;
|
|
||||||
hal.stream.read = usb_serialGetC; // restore normal input
|
hal.stream.read = usb_serialGetC; // restore normal input
|
||||||
} else if(!hal.stream.enqueue_realtime_command(c)) {
|
} else if(!hal.stream.enqueue_realtime_command(c)) {
|
||||||
uint32_t bptr = (usb_rxbuffer.head + 1) & (RX_BUFFER_SIZE - 1); // Get next head pointer
|
uint32_t bptr = (usb_rxbuffer.head + 1) & (RX_BUFFER_SIZE - 1); // Get next head pointer
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
Part of grblHAL
|
Part of grblHAL
|
||||||
|
|
||||||
Copyright (c) 2018-2020 Terje Io
|
Copyright (c) 2018-2021 Terje Io
|
||||||
|
|
||||||
|
|
||||||
Grbl is free software: you can redistribute it and/or modify
|
Grbl is free software: you can redistribute it and/or modify
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
static stream_block_tx_buffer_t txbuf = {0};
|
static stream_block_tx_buffer_t txbuf = {0};
|
||||||
static char rxbuf[BLOCK_RX_BUFFER_SIZE];
|
static char rxbuf[BLOCK_RX_BUFFER_SIZE];
|
||||||
static stream_rx_buffer_t usb_rxbuffer, usb_rxbackup;
|
static stream_rx_buffer_t usb_rxbuffer;
|
||||||
|
|
||||||
void usb_serialInit(void)
|
void usb_serialInit(void)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,6 @@ void usb_serialInit(void)
|
||||||
txbuf.s = txbuf.data;
|
txbuf.s = txbuf.data;
|
||||||
txbuf.max_length = usb_serial_write_buffer_free(); // 6144
|
txbuf.max_length = usb_serial_write_buffer_free(); // 6144
|
||||||
txbuf.max_length = (txbuf.max_length > BLOCK_TX_BUFFER_SIZE ? BLOCK_TX_BUFFER_SIZE : txbuf.max_length) - 20;
|
txbuf.max_length = (txbuf.max_length > BLOCK_TX_BUFFER_SIZE ? BLOCK_TX_BUFFER_SIZE : txbuf.max_length) - 20;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -172,20 +171,9 @@ int16_t usb_serialGetC (void)
|
||||||
return (int16_t)data;
|
return (int16_t)data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// "dummy" version of serialGetC
|
|
||||||
static int16_t serialGetNull (void)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool usb_serialSuspendInput (bool suspend)
|
bool usb_serialSuspendInput (bool suspend)
|
||||||
{
|
{
|
||||||
if(suspend)
|
return stream_rx_suspend(&usb_rxbuffer, suspend);
|
||||||
hal.stream.read = serialGetNull;
|
|
||||||
else if(usb_rxbuffer.backup)
|
|
||||||
memcpy(&usb_rxbuffer, &usb_rxbackup, sizeof(stream_rx_buffer_t));
|
|
||||||
|
|
||||||
return usb_rxbuffer.tail != usb_rxbuffer.head;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -210,9 +198,7 @@ void usb_execute_realtime (uint_fast16_t state)
|
||||||
while(avail--) {
|
while(avail--) {
|
||||||
c = *dp++;
|
c = *dp++;
|
||||||
if(c == CMD_TOOL_ACK && !usb_rxbuffer.backup) {
|
if(c == CMD_TOOL_ACK && !usb_rxbuffer.backup) {
|
||||||
memcpy(&usb_rxbackup, &usb_rxbuffer, sizeof(stream_rx_buffer_t));
|
stream_rx_backup(&usb_rxbuffer);
|
||||||
usb_rxbuffer.backup = true;
|
|
||||||
usb_rxbuffer.tail = usb_rxbuffer.head;
|
|
||||||
hal.stream.read = usb_serialGetC; // restore normal input
|
hal.stream.read = usb_serialGetC; // restore normal input
|
||||||
} else if(!hal.stream.enqueue_realtime_command(c)) {
|
} else if(!hal.stream.enqueue_realtime_command(c)) {
|
||||||
uint32_t bptr = (usb_rxbuffer.head + 1) & (RX_BUFFER_SIZE - 1); // Get next head pointer
|
uint32_t bptr = (usb_rxbuffer.head + 1) & (RX_BUFFER_SIZE - 1); // Get next head pointer
|
||||||
|
|
Loading…
Reference in New Issue