Bueno, por fin he conseguido que la librería funcione como debe (más o menos)... Creo que aún existen ciertos problemas con la pila del bluetooth de la libogc, y con la propia librería wiiuse; pero añadiendo dos funciones más, podemos conseguir sincronizar tantos wiimotes como queramos en nuestra aplicación, con solo una instancia de "wiimote**"...
Aquí tenéis la prueba y las fuentes...
http://www.mediafire.com/?621jjlu71my
No es difícil de entender: la primera vez que cargamos un wiimote, lo hacemos con wiiuse_find y wiiuse_connect; las demás con wiiuse_find_more y wiiuse_connect_more... Simple, pero eficiente.
Por cierto, en la demo, hay que presionar A y B a la vez con bastante precisión, si no interpretará solo uno de los botones...
Edito:
[Gerar], tienes razón, jeje... estábamos escribiendo a la vez
Le he estado echando un ojo a la libogc, concretamente al BT stack y la verdad es que tiene una implementación un tanto extraña, pero esto es normal, por eso lo mantienen en el cvs.
Creo que no es capaz de detectar más de un dispositivo a la vez en el hci_inquiry, y esto prefiero no tocarlo...
La wiiuse es un port de la misma librería de linux, no tiene todas las opciones, pero si el stack funciona bien, no debería tener mayores problemas. Aunque si se le pueden añadir opciones que la versión de linux ya tiene...
Y por último, después de varios retoques, he llegado a la conclusión de que la forma menos intrusiva y más simple de sincronizar varios wiimotes en un solo objeto es la de ir añadiéndolos a continuación. Con esto conseguiremos una mejora, por ejemplo, en el emulador de snes, que ahora declara dos matrices para almacenar dos wiimotes.
Con esta simple modificación se consigue almacenar lo mismo en una sola matriz, reduciendo el código, operaciones y memoria.
Aunque habrá que esperar, todas estas librerías son versiones tempranas... Pero viene bien ir usándolas y aprendiendo, además, funcionan bastante bien