Primer uso

Primer uso

Inclusión la librería

Tras instalar la librería CWIID el fichero de cabeceras quedará en /usr/local/include/cwiid.h, por lo que para incluir la librería en el código bastaría con usar la siguiente línea:

#include <cwiid.h>

 

Primer uso de la librería

A continuación se expondrá el código necesario para establecer comunicación con un Wiimote.

En primer lugar es recomendable establecer la función que se lanzará en caso de error:

cwiid_set_err(funcionerror);

La función "funcionerror" deben declararse según el siguiente esquema:

void error(cwiid_wiimote_t *wiimote, const char *s, va_list ap);

Siendo:

  • wiimote el gestor de Wiimote que disparó el error o NULL si es error no asociado a un Wiimote.
  • s formato de la información de error.
  • ap, lista de argumentos con la información de error.

El siguiente paso será conectar el Wiimote al PC mediante cwiid_connect de la siguiente forma:

bdaddr = *BDADDR_ANY;
if (!(wiimote = cwiid_connect(&bdaddr, 0))) {printf("No se pudo detectar wiimote ");}

Con la primera línea se indica que se aceptará la conexión de cualquier Wiimote, si se desea limitar a una cierta dirección Bluetooth habrá que especificarlo aquí.

En la segunda línea se realiza la conexión, en bdaddr se indicará la dirección del Wiimote conectado y su segundo parámetro (aquí 0) indicará el modo de funcionamiento. Las distintas opciones para este último parámetro se explicarán en el siguiente apartado.

Para que el ordenador encuentre al Wiimote este debe estar en modo descubrimiento antes de que se ejecute la función cwiid_connect. Este modo se activa pulsando simultáneamente los botones "1" y "2" en el mando.

Una vez detectado y conectado se puede averiguar la dirección Bluetooth del mando desde la variable bdaddr mediante la siguiente función:

ba2str(&bdaddr, tmp);

Siendo tmp una cadena de caracteres.

Antes de comenzar a recibir información faltaría configurar qué datos se desean recibir, para ello se usa la siguiente sentencia:

if (cwiid_set_rpt_mode(wiimote, CWIID_RPT_STATUS)) {printf("Erroral establecer rpt_mode ");}

Por el momento sólo nos interesa recibir información de estado, por lo que sólo se indica CWIID_RPT_STATUS. Otras opciones se podrían indicar mediante la operación OR lógica.

Tras terminar las operaciones que se deseen realizar habrá que desconectar el mando, para ello se ejecutará lo siguiente:

if (cwiid_disconnect(wiimote)) {printf("Error al desconectar el wiimote ");}

De la misma forma que se ha expuesto se podría gestionar más de un mando, habría que realizar múltiples llamadas de cwiid_connect y cwiid_disconnect pero sólo una de cwiid_set_err, ya que esta es global a toda la librería.

 

Compilar fuentes que usen CWIID

La librería CWIID viene acompañada de los archivos necesarios para el uso de pkg-config, por lo tanto, pueden obtenerse los parámetros necesarios para pre-procesado, compilado y linkado mediante los siguientes comandos:

  • Para pre-procesado y compilado: pkg-config --cflags cwiid
  • Para linkado: pkg-config --libs cwiid

De forma alternativa pueden incluirse estos parámetros manualmente:

  • Para pre-procesado y compilado: -I/usr/local/include
  • Para linkado: -L/usr/local/lib -lcwiid -lbluetooth

 

Obra publicada con Licencia Creative Commons Reconocimiento 3.0