Updated driver interface

master
vhaudiquet 1 year ago
parent 84735a86f0
commit de3167d140
  1. 38
      README.md
  2. 36
      src/device/driver_interface.h

@ -10,11 +10,45 @@ Drivers **must** expose the following symbols:
```c
void driver_init(); // Initialization
uint32_t driver_getkey(); // Calls to this function must return USB keys that this driver registers, until 0
device_type_t driver_get_type(); // Returns device type
device_type_t driver_get_capacity(); // Returns device capacity (see below)
char* driver_get_name(void* handle); // Returns peripheral name
char* driver_get_image(void* handle); // Returns peripheral image
// Mouse drivers
/*
* Mouse drivers
*
* - DPI Levels: max levels, level info (dpi + led), level count, current level
* - Debounce time : possible values, current value
* - Motion sync
* - Lift off distance : possible values, current value
* - Angle snap
* - Polling rate : possible values, current value
* - LED (color/effect/status)
*/
struct MOUSE_DPI_LEVELS
{
unsigned int max_level_count;
unsigned int level_count;
unsigned int level_current;
bool led_available;
bool xy_available;
struct MOUSE_DPI_LEVEL
{
unsigned int dpi_x;
unsigned int dpi_y;
unsigned char r;
unsigned char g;
unsigned char b;
} level[];
};
struct MOUSE_DPI_LEVELS driver_mouse_dpi_get(void* handle);
/*
* Wireless driver
* - Battery (state + amount)
* - Connection type (usb 2.4/bluetooth/wired)
*/
```

@ -0,0 +1,36 @@
#ifndef DRIVER_INTERFACE_H
#define DRIVER_INTERFACE_H
enum device_capacity_t
{
DEVICE_CAPACITY_MOUSE,
DEVICE_CAPACITY_WIRELESS,
};
void driver_init(); // Initialization
uint32_t driver_getkey(); // Calls to this function must return USB keys that this driver registers, until 0
device_capacity_t driver_get_capacity(void* handle); // Returns device capacity (see above)
char* driver_get_name(void* handle); // Returns peripheral name
char* driver_get_image(void* handle); // Returns peripheral image
/* Mouse drivers */
struct MOUSE_DPI_LEVELS
{
unsigned int max_level_count;
unsigned int level_count;
unsigned int level_current;
bool led_available;
bool xy_available;
struct MOUSE_DPI_LEVEL
{
unsigned int dpi_x;
unsigned int dpi_y;
unsigned char r;
unsigned char g;
unsigned char b;
} level[];
};
struct MOUSE_DPI_LEVELS driver_mouse_dpi_get(void* handle);
#endif
Loading…
Cancel
Save