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:
Kevin O'Connor 2017-06-15 15:06:10 -04:00
parent 1ae78d08e9
commit 292453d306
8 changed files with 67 additions and 39 deletions

View file

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

View file

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