initial commit
This commit is contained in:
commit
4de9088898
13 changed files with 610 additions and 0 deletions
55
ratazana.h
Normal file
55
ratazana.h
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/**
|
||||
* Copyright (c) 2025 favewa
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct {
|
||||
int fd;
|
||||
uint8_t idx;
|
||||
char path[256];
|
||||
} ratazana_device_t;
|
||||
|
||||
typedef enum {
|
||||
RATAZANA_OK = 0,
|
||||
RATAZANA_ERROR_INVALID_ARG = -1,
|
||||
RATAZANA_ERROR_IO = -2,
|
||||
RATAZANA_ERROR_TIMEOUT = -3,
|
||||
RATAZANA_ERROR_NOT_FOUND = -4,
|
||||
RATAZANA_ERROR_PROTOCOL = -5,
|
||||
RATAZANA_ERROR_ACCESS = -6,
|
||||
} ratazana_result_t;
|
||||
|
||||
typedef enum {
|
||||
HIDPP20, // mainly Logitech G-series gaming mice
|
||||
} protocol_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned int vendor_id;
|
||||
unsigned int product_id;
|
||||
unsigned int bus_type;
|
||||
char path[256]; // /dev/hidrawX path
|
||||
char name[256]; // human-readable name
|
||||
} ratazana_hid_device_t;
|
||||
|
||||
typedef bool (*ratazana_device_matcher_t)(ratazana_hid_device_t *info);
|
||||
|
||||
ratazana_result_t ratazana_hid_enumerate(ratazana_hid_device_t *out,
|
||||
ratazana_device_matcher_t matcher);
|
||||
|
||||
ratazana_result_t ratazana_device_open(ratazana_device_t *restrict dev,
|
||||
const char *restrict path,
|
||||
uint8_t device_index);
|
||||
|
||||
void ratazana_device_close(ratazana_device_t *dev);
|
||||
|
||||
void ratazana_cleanup(ratazana_device_t *dev);
|
||||
|
||||
const char *ratazana_strerror(ratazana_result_t result);
|
||||
|
||||
[[gnu::format(printf, 1, 2)]]
|
||||
_Noreturn void ratazana_fatal(const char *fmt, ...);
|
||||
Loading…
Add table
Add a link
Reference in a new issue