forked from jorjuato/libwacom
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wacthread.h
executable file
·113 lines (80 loc) · 2.97 KB
/
wacthread.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//////////////////////////////////////////////////////////////////
// wacomthread.h
//
// Contiene codigo que genera un thread para leer la tableta y configura un temporizador
// bassado en señal de alarma del sistema de señales POSIX de Linux.
// OpenGL. Esta version utiliza como temporizador el sistema de señales nativo
// de Linux. Se basa en wacomglut2.c, que a su vez se basa en wacomnoglut.c, habiendole
// añadido las rutinas minimas para la presentación de graficos OpenGL.
//
// gcc -Wall -lpthread -O3 wacomglut2.c wacusb.c wacserial.c wactablet.c -o wacomglut2
//
// Copyleft (L) Noviembre 2007 Jorge Ibáñez
//
//////////////////////////////////////////////////////////////////
// from linux/input.h
#define BITS_PER_LONG (sizeof(long) * 8)
#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
#define LONG(x) ((x)/BITS_PER_LONG)
#define ISBITSET(x,y) ((x)[LONG(y)] & BIT(y))
//Cabeceras de las librerias standar de C para io básica y llamadas al sistema
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <unistd.h> /* standard unix functions */
#include <sys/types.h> /* various type definitions */
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/input.h>
//Cabeceras con definiciones para creacion de hilos
#include <pthread.h>
//Cabeceras con definiciones para el sistema de señales en linux
#include <signal.h>
//Cabeceras con definiciones del API Wacom
#include "wactablet.h"
/*****************************************************************************
** Custom structures
*****************************************************************************/
struct ABS_STATE
{
int bValid;
int nValue, nMin, nMax;
};
struct KEY_STATE
{
int bValid;
int nValue;
};
typedef enum
{
WACOM_SCANMODE_CALLBACK,
WACOM_SCANMODE_NOCALLBACK,
WACOM_SCANMODE_MAX
} WACOM_SCANMODE;
/*****************************************************************************
** Custom API
*****************************************************************************/
// Public API
void WacomInit(int Mode, void (*WacomSignalHandler)(int));
// Inicializa y configura la tableta, lanza el thread wacom
// y configura la funcion que será llamada cuando se genere un evento.
// Si no se desean retrollamadas, el segundo argumento ha ser NULL
void WacomClose(void);
// Libera recursos de la tableta y gráficos, termina el thread,
// y cierra los archivos abiertos para escritura.
int WacomChangeMode(int Modo, void (*WacomSignalHandler)(int));
// Cambia el modo de funcionamiento del thread que lee la tableta.
// Los parámetros son idénticos a los de WacomInit().
// Devuelve 1 si sale con éxito, 0 si hay errores
// Private API
static int InitAll();
static int SetTablet();
static void* WacomThread();
static int LeerTableta();
static void UnSetSignalHandler();