libx52/libx52io/validation.c

71 lines
2.9 KiB
C

/*
* Saitek X52 IO driver
*
* Copyright (C) 2012-2026 Nirenjan Krishnan (nirenjan@nirenjan.org)
*
* SPDX-License-Identifier: GPL-2.0-only WITH Classpath-exception-2.0
*/
#include "build-config.h"
#include <stdlib.h>
#include <libx52/libx52io.h>
_Static_assert((LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX + 1) < 64,
"CRITICAL: Report bitmask definitions exceed 64-bit allocation capacity!");
// __attribute__((unused)) stops the compiler from throwing an unused variable warning
__attribute__((unused)) static const char unique_bit_check[] = {
[LIBX52IO_AXIS_X] = 1,
[LIBX52IO_AXIS_Y] = 1,
[LIBX52IO_AXIS_RZ] = 1,
[LIBX52IO_AXIS_Z] = 1,
[LIBX52IO_AXIS_RX] = 1,
[LIBX52IO_AXIS_RY] = 1,
[LIBX52IO_AXIS_SLIDER] = 1,
[LIBX52IO_AXIS_THUMBX] = 1,
[LIBX52IO_AXIS_THUMBY] = 1,
[LIBX52IO_AXIS_HATX] = 1,
[LIBX52IO_AXIS_HATY] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_TRIGGER] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_TRIGGER_2] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_FIRE] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PINKY] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_A] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_B] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_C] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_D] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_E] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T1_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T1_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T2_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T2_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T3_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_T3_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_N] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_E] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_S] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_1_W] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_N] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_E] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_S] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_POV_2_W] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_CLUTCH] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_PRIMARY] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SECONDARY] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SCROLL_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MOUSE_SCROLL_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_FUNCTION] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_START_STOP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_RESET] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PG_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_PG_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_UP] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_DN] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_SELECT] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_1] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_2] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BTN_MODE_3] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX] = 1,
[LIBX52IO_AXIS_MAX + LIBX52IO_BUTTON_MAX + 1] = 1,
};