uart_commands.c: added joytick test
This commit is contained in:
parent
c9ffc868dc
commit
4642f779f9
|
@ -73,6 +73,26 @@ char const UART_CMD_TEST[] PROGMEM = "test";
|
|||
#ifdef ANIMATION_TESTS
|
||||
char const UART_STR_TEST_EXIT[] PROGMEM = "Press ENTER to exit test."CR;
|
||||
char const UART_STR_TEST_ERR[] PROGMEM = "Range is between 0 and %d."CR;
|
||||
char const UART_STR_GAMETS_ERR[] PROGMEM = "No display tests during games."CR;
|
||||
char const UART_STR_TEST_UP[] PROGMEM = "UP ";
|
||||
char const UART_STR_TEST_DOWN[] PROGMEM = "DOWN ";
|
||||
char const UART_STR_TEST_LEFT[] PROGMEM = "LEFT ";
|
||||
char const UART_STR_TEST_RIGHT[] PROGMEM = "RIGHT ";
|
||||
char const UART_STR_TEST_FIRE[] PROGMEM = "FIRE";
|
||||
|
||||
enum uartcmd_joytest_e {
|
||||
UARTCMD_JOY_UP = 0x01,
|
||||
UARTCMD_JOY_DOWN = 0x02,
|
||||
UARTCMD_JOY_LEFT = 0x04,
|
||||
UARTCMD_JOY_RIGHT = 0x08,
|
||||
UARTCMD_JOY_FIRE = 0x10
|
||||
};
|
||||
|
||||
# ifdef NDEBUG
|
||||
typedef uint8_t uartcmd_joytest_t;
|
||||
# else
|
||||
typedef enum uartcmd_joytest_e uartcmd_joytest_t;
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -135,8 +155,7 @@ static void uartcmd_simple_message(void) {
|
|||
uartcmd_forbid();
|
||||
#ifdef JOYSTICK_SUPPORT
|
||||
if (waitForFire) {
|
||||
#else
|
||||
{
|
||||
waitForFire = 0;
|
||||
#endif
|
||||
g_rx_buffer[1] = '<';
|
||||
g_rx_buffer[2] = '/';
|
||||
|
@ -144,11 +163,13 @@ static void uartcmd_simple_message(void) {
|
|||
// text must not be longer than the scroll text buffer
|
||||
g_rx_buffer[1 + SCROLLTEXT_BUFFER_SIZE - 1] = 0;
|
||||
scrolltext(&g_rx_buffer[1]);
|
||||
|
||||
#ifdef JOYSTICK_SUPPORT
|
||||
waitForFire = 1;
|
||||
} else {
|
||||
#endif
|
||||
UART_PUTS_P(UART_STR_GAMETX_ERR);
|
||||
}
|
||||
#endif
|
||||
uartcmd_permit();
|
||||
}
|
||||
}
|
||||
|
@ -162,17 +183,17 @@ static void uartcmd_scroll_message(void) {
|
|||
uartcmd_forbid();
|
||||
#ifdef JOYSTICK_SUPPORT
|
||||
if (waitForFire) {
|
||||
#else
|
||||
{
|
||||
waitForFire = 0;
|
||||
#endif
|
||||
// text must not be longer than the scroll text buffer
|
||||
g_rx_buffer[7 + SCROLLTEXT_BUFFER_SIZE - 1] = 0;
|
||||
scrolltext(&g_rx_buffer[7]);
|
||||
#ifdef JOYSTICK_SUPPORT
|
||||
waitForFire = 1;
|
||||
} else {
|
||||
#endif
|
||||
UART_PUTS_P(UART_STR_GAMETX_ERR);
|
||||
}
|
||||
#endif
|
||||
uartcmd_permit();
|
||||
}
|
||||
}
|
||||
|
@ -279,29 +300,92 @@ static void uartcmd_mode(void) {
|
|||
}
|
||||
|
||||
|
||||
#if defined(ANIMATION_TESTS) && defined(JOYSTICK_SUPPORT)
|
||||
/**
|
||||
* Prints current joystick status via UART.
|
||||
*/
|
||||
static void uartcmd_joy_test(uint8_t *last) {
|
||||
uint8_t joy_value = 0;
|
||||
if (JOYISUP) {
|
||||
joy_value |= UARTCMD_JOY_UP;
|
||||
}
|
||||
if (JOYISDOWN) {
|
||||
joy_value |= UARTCMD_JOY_DOWN;
|
||||
}
|
||||
if (JOYISLEFT) {
|
||||
joy_value |= UARTCMD_JOY_LEFT;
|
||||
}
|
||||
if (JOYISRIGHT) {
|
||||
joy_value |= UARTCMD_JOY_RIGHT;
|
||||
}
|
||||
if (JOYISFIRE) {
|
||||
joy_value |= UARTCMD_JOY_FIRE;
|
||||
}
|
||||
|
||||
if (joy_value != *last) {
|
||||
UART_PUTS_P(UART_STR_CLEARLINE);
|
||||
if (joy_value & UARTCMD_JOY_UP) {
|
||||
UART_PUTS_P(UART_STR_TEST_UP);
|
||||
}
|
||||
if (joy_value & UARTCMD_JOY_DOWN) {
|
||||
UART_PUTS_P(UART_STR_TEST_DOWN);
|
||||
}
|
||||
if (joy_value & UARTCMD_JOY_LEFT) {
|
||||
UART_PUTS_P(UART_STR_TEST_LEFT);
|
||||
}
|
||||
if (joy_value & UARTCMD_JOY_RIGHT) {
|
||||
UART_PUTS_P(UART_STR_TEST_RIGHT);
|
||||
}
|
||||
if (joy_value & UARTCMD_JOY_FIRE) {
|
||||
UART_PUTS_P(UART_STR_TEST_FIRE);
|
||||
}
|
||||
*last = joy_value;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Draws test patterns for display inspection.
|
||||
*/
|
||||
static void uartcmd_test(void) {
|
||||
#ifdef ANIMATION_TESTS
|
||||
uartcmd_forbid();
|
||||
int pattern_no = uartcmd_extract_num_arg(&g_rx_buffer[4]);
|
||||
if (pattern_no >= 0 && pattern_no <= NUMPLANE + 2) {
|
||||
UART_PUTS_P(UART_STR_TEST_EXIT);
|
||||
if (pattern_no <= NUMPLANE) {
|
||||
test_level(pattern_no, true);
|
||||
} else if (pattern_no == (NUMPLANE + 1)) {
|
||||
test_palette(true);
|
||||
} else if (pattern_no == (NUMPLANE + 2)) {
|
||||
test_palette2(true);
|
||||
# ifdef JOYSTICK_SUPPORT
|
||||
if (waitForFire) {
|
||||
waitForFire = 0;
|
||||
# endif
|
||||
uartcmd_forbid();
|
||||
int pattern_no = uartcmd_extract_num_arg(&g_rx_buffer[4]);
|
||||
if (pattern_no >= 0 && pattern_no <= NUMPLANE + 2) {
|
||||
UART_PUTS_P(UART_STR_TEST_EXIT);
|
||||
if (pattern_no <= NUMPLANE) {
|
||||
test_level(pattern_no, true);
|
||||
} else if (pattern_no == (NUMPLANE + 1)) {
|
||||
test_palette(true);
|
||||
} else if (pattern_no == (NUMPLANE + 2)) {
|
||||
test_palette2(true);
|
||||
}
|
||||
# ifdef JOYSTICK_SUPPORT
|
||||
uint8_t last_joy_value = 0;
|
||||
# endif
|
||||
while (UART_GETC() >= 0x20){ // wait for any control character
|
||||
# ifdef JOYSTICK_SUPPORT
|
||||
uartcmd_joy_test(&last_joy_value);
|
||||
wait(20);
|
||||
# endif
|
||||
}
|
||||
} else {
|
||||
char msg[36] = "";
|
||||
snprintf_P(msg, sizeof(msg), UART_STR_TEST_ERR, NUMPLANE + 2);
|
||||
UART_PUTS(msg);
|
||||
}
|
||||
while (UART_GETC() >= 0x20); // wait for any control character
|
||||
uartcmd_permit();
|
||||
# ifdef JOYSTICK_SUPPORT
|
||||
waitForFire = 1;
|
||||
} else {
|
||||
char msg[36] = "";
|
||||
snprintf_P(msg, sizeof(msg), UART_STR_TEST_ERR, NUMPLANE + 2);
|
||||
UART_PUTS(msg);
|
||||
UART_PUTS_P(UART_STR_GAMETS_ERR);
|
||||
}
|
||||
uartcmd_permit();
|
||||
# endif
|
||||
#else
|
||||
UART_PUTS_P(UART_STR_NOTIMPL);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue