mirror of https://github.com/nirenjan/libx52.git
Update test cases for X52 library
parent
b5d33226c5
commit
0a541e18ba
|
|
@ -90,6 +90,7 @@ int libx52_set_text(libx52_device *x52, uint8_t line, const char *text, uint8_t
|
||||||
length = X52_MFD_LINE_SIZE;
|
length = X52_MFD_LINE_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(x52->line[line].text, ' ', X52_MFD_LINE_SIZE);
|
||||||
memcpy(x52->line[line].text, text, length);
|
memcpy(x52->line[line].text, text, length);
|
||||||
x52->line[line].length = length;
|
x52->line[line].length = length;
|
||||||
set_bit(&x52->update_mask, X52_BIT_MFD_LINE1 + line);
|
set_bit(&x52->update_mask, X52_BIT_MFD_LINE1 + line);
|
||||||
|
|
|
||||||
248
libx52/x52test.c
248
libx52/x52test.c
|
|
@ -7,44 +7,240 @@
|
||||||
|
|
||||||
#include "libx52.h"
|
#include "libx52.h"
|
||||||
|
|
||||||
|
typedef void (*test_func)(libx52_device *dev, int step);
|
||||||
|
|
||||||
|
/* Run test initializations */
|
||||||
|
static void test_cleanup(libx52_device *dev)
|
||||||
|
{
|
||||||
|
libx52_set_brightness(dev, 1, 127);
|
||||||
|
libx52_set_brightness(dev, 0, 127);
|
||||||
|
|
||||||
|
/* Set the default LED states */
|
||||||
|
libx52_set_led(dev, X52_LED_FIRE, 1);
|
||||||
|
|
||||||
|
libx52_set_led(dev, X52_LED_A_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_A_GREEN, 1);
|
||||||
|
libx52_set_led(dev, X52_LED_B_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_B_GREEN, 1);
|
||||||
|
libx52_set_led(dev, X52_LED_D_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_D_GREEN, 1);
|
||||||
|
libx52_set_led(dev, X52_LED_E_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_E_GREEN, 1);
|
||||||
|
|
||||||
|
libx52_set_led(dev, X52_LED_T1_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_T1_GREEN, 1);
|
||||||
|
libx52_set_led(dev, X52_LED_T2_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_T2_GREEN, 1);
|
||||||
|
libx52_set_led(dev, X52_LED_T3_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_T3_GREEN, 1);
|
||||||
|
|
||||||
|
libx52_set_led(dev, X52_LED_POV_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_POV_GREEN, 1);
|
||||||
|
|
||||||
|
libx52_set_led(dev, X52_LED_I_RED, 0);
|
||||||
|
libx52_set_led(dev, X52_LED_I_GREEN, 1);
|
||||||
|
|
||||||
|
libx52_set_led(dev, X52_LED_THROTTLE, 1);
|
||||||
|
|
||||||
|
/* Shift/Blink Off */
|
||||||
|
libx52_set_shift(dev, 0);
|
||||||
|
libx52_set_blink(dev, 0);
|
||||||
|
|
||||||
|
/* Default Text */
|
||||||
|
libx52_set_text(dev, 0, " Saitek X52 Pro", 15);
|
||||||
|
libx52_set_text(dev, 1, " Flight ", 15);
|
||||||
|
libx52_set_text(dev, 2, " Control System", 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_mfd_display(libx52_device *dev, int step)
|
||||||
|
{
|
||||||
|
uint32_t j;
|
||||||
|
char str[16];
|
||||||
|
char c;
|
||||||
|
|
||||||
|
libx52_set_text(dev, 1, "0123456789ABCDEF", 16);
|
||||||
|
|
||||||
|
/* Print line 0 - the hex of the step number */
|
||||||
|
c = step;
|
||||||
|
c += (c < 10) ? 0x30 : 0x37;
|
||||||
|
for (j = 0; j < 16; j++) {
|
||||||
|
str[j] = c;
|
||||||
|
}
|
||||||
|
libx52_set_text(dev, 0, str, 16);
|
||||||
|
|
||||||
|
for (j = 0; j < 16; j++) {
|
||||||
|
str[j] = (step << 4) + j;
|
||||||
|
}
|
||||||
|
libx52_set_text(dev, 2, str, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test the LEDs on the panel */
|
||||||
|
static void test_leds(libx52_device *dev, int step)
|
||||||
|
{
|
||||||
|
int led;
|
||||||
|
const char *state_map[] = {
|
||||||
|
NULL,
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"D",
|
||||||
|
"E",
|
||||||
|
"T1",
|
||||||
|
"T2",
|
||||||
|
"T3",
|
||||||
|
"POV",
|
||||||
|
"I"
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (step) {
|
||||||
|
case 0:
|
||||||
|
/* Turn off Fire LED */
|
||||||
|
libx52_set_text(dev, 0, "LED Test", 8);
|
||||||
|
libx52_set_text(dev, 1, "Fire", 4);
|
||||||
|
libx52_set_text(dev, 2, "OFF", 3);
|
||||||
|
libx52_set_led(dev, X52_LED_FIRE, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
/* Turn on Fire LED */
|
||||||
|
libx52_set_text(dev, 1, "Fire", 4);
|
||||||
|
libx52_set_text(dev, 2, "ON", 2);
|
||||||
|
libx52_set_led(dev, X52_LED_FIRE, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
/* Turn off Throttle LED */
|
||||||
|
libx52_set_text(dev, 1, "Throttle", 8);
|
||||||
|
libx52_set_text(dev, 2, "OFF", 3);
|
||||||
|
libx52_set_led(dev, X52_LED_THROTTLE, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
/* Turn on Throttle LED */
|
||||||
|
libx52_set_text(dev, 1, "Throttle", 8);
|
||||||
|
libx52_set_text(dev, 2, "ON", 2);
|
||||||
|
libx52_set_led(dev, X52_LED_THROTTLE, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: {
|
||||||
|
led = step / 4;
|
||||||
|
libx52_set_text(dev, 1, state_map[led], strlen(state_map[led]));
|
||||||
|
|
||||||
|
led = led * 2;
|
||||||
|
switch (step % 4) {
|
||||||
|
case 0:
|
||||||
|
libx52_set_text(dev, 2, "OFF", 3);
|
||||||
|
libx52_set_led(dev, led, 0);
|
||||||
|
libx52_set_led(dev, led + 1, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
libx52_set_text(dev, 2, "RED", 3);
|
||||||
|
libx52_set_led(dev, led, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
libx52_set_text(dev, 2, "AMBER", 5);
|
||||||
|
libx52_set_led(dev, led + 1, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
libx52_set_text(dev, 2, "GREEN", 5);
|
||||||
|
libx52_set_led(dev, led, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_blinkenlichts(libx52_device *dev, int step)
|
||||||
|
{
|
||||||
|
switch (step) {
|
||||||
|
case 0:
|
||||||
|
libx52_set_text(dev, 0, "Blinkenlichts", 13);
|
||||||
|
libx52_set_text(dev, 1, "Shift Indicator", 15);
|
||||||
|
libx52_set_text(dev, 2, "ON", 2);
|
||||||
|
libx52_set_shift(dev, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
libx52_set_text(dev, 2, "OFF", 3);
|
||||||
|
libx52_set_shift(dev, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
libx52_set_text(dev, 1, "Blink Indicator", 15);
|
||||||
|
libx52_set_text(dev, 2, "ON", 2);
|
||||||
|
libx52_set_blink(dev, 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
libx52_set_text(dev, 2, "OFF", 3);
|
||||||
|
libx52_set_blink(dev, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_brightness(libx52_device *dev, int step)
|
||||||
|
{
|
||||||
|
char line1[16];
|
||||||
|
char line2[16];
|
||||||
|
int len1;
|
||||||
|
int len2;
|
||||||
|
|
||||||
|
if (step == 0) {
|
||||||
|
libx52_set_text(dev, 0, "Brightness", 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
len1 = snprintf(line1, sizeof(line1), "MFD: %d", step);
|
||||||
|
len2 = snprintf(line2, sizeof(line2), "LED: %d", step);
|
||||||
|
|
||||||
|
libx52_set_text(dev, 1, line1, len1);
|
||||||
|
libx52_set_text(dev, 2, line2, len2);
|
||||||
|
libx52_set_brightness(dev, 0, step);
|
||||||
|
libx52_set_brightness(dev, 1, step);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct test_case {
|
||||||
|
test_func test;
|
||||||
|
int test_steps;
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct test_case cases[] = {
|
||||||
|
{ test_mfd_display, 16 },
|
||||||
|
{ test_leds, 40 },
|
||||||
|
{ test_blinkenlichts, 4 },
|
||||||
|
{ test_brightness, 129 },
|
||||||
|
{ NULL, 0 } /* Must be the last entry */
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
uint32_t j;
|
uint32_t j;
|
||||||
char str[16];
|
char str[16];
|
||||||
char c;
|
char c;
|
||||||
|
struct test_case *tc;
|
||||||
|
|
||||||
libx52_device *dev;
|
libx52_device *dev;
|
||||||
|
|
||||||
dev = libx52_init();
|
dev = libx52_init();
|
||||||
|
|
||||||
libx52_set_brightness(dev, 1, 127);
|
tc = &cases[0];
|
||||||
libx52_set_brightness(dev, 0, 127);
|
do {
|
||||||
|
for (i = 0; i < tc->test_steps; i++) {
|
||||||
libx52_set_led(dev, X52_LED_FIRE, 1);
|
if (tc->test) {
|
||||||
|
(*tc->test)(dev, i);
|
||||||
libx52_set_text(dev, 1, "0123456789ABCDEF", 16);
|
}
|
||||||
|
libx52_update(dev);
|
||||||
for (i = 0; i < 256; i+=16) {
|
usleep(250000);
|
||||||
c = i >> 4;
|
|
||||||
c += (c < 10) ? 0x30 : 0x37;
|
|
||||||
for (j = 0; j < 16; j++) {
|
|
||||||
str[j] = c;
|
|
||||||
}
|
}
|
||||||
libx52_set_text(dev, 0, str, 16);
|
|
||||||
|
|
||||||
for (j = 0; j < 16; j++) {
|
tc++;
|
||||||
str[j] = i + j;
|
|
||||||
}
|
/* Reset the X52 */
|
||||||
libx52_set_text(dev, 2, str, 16);
|
test_cleanup(dev);
|
||||||
libx52_update(dev);
|
libx52_update(dev);
|
||||||
sleep(1);
|
} while (tc->test);
|
||||||
}
|
|
||||||
|
|
||||||
libx52_set_text(dev, 0, " Saitek X52 Pro ", 16);
|
|
||||||
libx52_set_text(dev, 1, " Flight ", 16);
|
|
||||||
libx52_set_text(dev, 2, " Control System ", 16);
|
|
||||||
libx52_update(dev);
|
|
||||||
|
|
||||||
libx52_exit(dev);
|
libx52_exit(dev);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue