libx52/utils/test/x52_test_led.c

81 lines
1.8 KiB
C

/*
* Saitek X52 Pro MFD & LED driver
*
* Copyright (C) 2012-2015 Nirenjan Krishnan (nirenjan@nirenjan.org)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, version 2.
*
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "libx52.h"
#include "x52_test_common.h"
#define TEST_LED(name, state) do { \
puts("LED " #name " - " #state); \
TEST(led_state, LIBX52_LED_ ## name, LIBX52_LED_STATE_ ## state); \
usleep(500000); \
} while(0)
#define TEST_LED_MONO(name) do { \
puts("\nTesting LED " #name); \
sleep(2); \
TEST_LED(name, OFF); \
TEST_LED(name, ON); \
} while(0)
#define TEST_LED_COLOR(name) do {\
puts("\nTesting LED " #name); \
sleep(2); \
TEST_LED(name, OFF); \
TEST_LED(name, RED); \
TEST_LED(name, AMBER); \
TEST_LED(name, GREEN); \
} while(0)
int test_leds(void)
{
print_banner("LEDs");
puts("This cycles the LEDs through all possible states");
TEST_LED_MONO(FIRE);
TEST_LED_COLOR(A);
TEST_LED_COLOR(B);
TEST_LED_COLOR(D);
TEST_LED_COLOR(E);
TEST_LED_COLOR(T1);
TEST_LED_COLOR(T2);
TEST_LED_COLOR(T3);
TEST_LED_COLOR(POV);
TEST_LED_COLOR(CLUTCH);
TEST_LED_MONO(THROTTLE);
return 0;
}
#define TEST_BLINK_OR_SHIFT(type) do { \
puts("\nTesting " #type); \
sleep(1); \
puts(#type " ON"); \
TEST(type, 1); \
sleep(2); \
puts(#type " OFF"); \
TEST(type, 0); \
} while (0)
int test_blink_n_shift(void)
{
print_banner("Blink & Shift");
puts("This tests the blink indicator and shift functionality");
TEST_BLINK_OR_SHIFT(blink);
TEST_BLINK_OR_SHIFT(shift);
return 0;
}