mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-23 14:44:20 -06:00
command: Move command_task() to board specific code
Move the command_task() code from the generic code to the board specific code. This enables more flexibility in how the board specific code processes input. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
1ae78d08e9
commit
292453d306
8 changed files with 67 additions and 39 deletions
|
@ -92,7 +92,7 @@ enable_tx_irq(void)
|
|||
****************************************************************/
|
||||
|
||||
// Return a buffer (and length) containing any incoming messages
|
||||
char *
|
||||
static char *
|
||||
console_get_input(uint8_t *plen)
|
||||
{
|
||||
*plen = readb(&receive_pos);
|
||||
|
@ -100,7 +100,7 @@ console_get_input(uint8_t *plen)
|
|||
}
|
||||
|
||||
// Remove from the receive buffer the given number of bytes
|
||||
void
|
||||
static void
|
||||
console_pop_input(uint8_t len)
|
||||
{
|
||||
uint8_t copied = 0;
|
||||
|
@ -124,6 +124,20 @@ console_pop_input(uint8_t len)
|
|||
}
|
||||
}
|
||||
|
||||
// Process any incoming commands
|
||||
void
|
||||
console_task(void)
|
||||
{
|
||||
uint8_t buf_len, pop_count;
|
||||
char *buf = console_get_input(&buf_len);
|
||||
int8_t ret = command_find_block(buf, buf_len, &pop_count);
|
||||
if (ret > 0)
|
||||
command_dispatch(buf, pop_count);
|
||||
if (ret)
|
||||
console_pop_input(pop_count);
|
||||
}
|
||||
DECL_TASK(console_task);
|
||||
|
||||
// Return an output buffer that the caller may fill with transmit messages
|
||||
char *
|
||||
console_get_output(uint8_t len)
|
||||
|
|
|
@ -22,7 +22,7 @@ usbserial_init(void)
|
|||
DECL_INIT(usbserial_init);
|
||||
|
||||
// Return a buffer (and length) containing any incoming messages
|
||||
char *
|
||||
static char *
|
||||
console_get_input(uint8_t *plen)
|
||||
{
|
||||
for (;;) {
|
||||
|
@ -38,7 +38,7 @@ console_get_input(uint8_t *plen)
|
|||
}
|
||||
|
||||
// Remove from the receive buffer the given number of bytes
|
||||
void
|
||||
static void
|
||||
console_pop_input(uint8_t len)
|
||||
{
|
||||
uint8_t needcopy = receive_pos - len;
|
||||
|
@ -47,6 +47,20 @@ console_pop_input(uint8_t len)
|
|||
receive_pos = needcopy;
|
||||
}
|
||||
|
||||
// Process any incoming commands
|
||||
void
|
||||
console_task(void)
|
||||
{
|
||||
uint8_t buf_len, pop_count;
|
||||
char *buf = console_get_input(&buf_len);
|
||||
int8_t ret = command_find_block(buf, buf_len, &pop_count);
|
||||
if (ret > 0)
|
||||
command_dispatch(buf, pop_count);
|
||||
if (ret)
|
||||
console_pop_input(pop_count);
|
||||
}
|
||||
DECL_TASK(console_task);
|
||||
|
||||
// Return an output buffer that the caller may fill with transmit messages
|
||||
char *
|
||||
console_get_output(uint8_t len)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue