/WiiC

A C/C++ Library to control Wiimote controllers

Primary LanguageCGNU General Public License v3.0GPL-3.0

---------------------------
-
-  README - WiiC
-
---------------------------

Available from:
https://github.com/grandelli/WiiC

---------------------------

ABOUT

	WiiC is a C/C++ library that extends the well known Wiiuse library, 
	used to control several Nintendo Wii remotes, and its C++ wrapper
	WiiuseCpp, all in a single library.
	While Wiiuse supports Linux and Windows platforms, my aim was
	to port it for Mac platforms, withdrawing the Windows support. 
	WiiC fixes some Wiiuse minor bugs, and adds support to Motion Plus
	and Balance Board.
	WiiC also supports all the Wiiuse functionality, such as: 
	motion sensing, IR tracking, nunchuk, classic controller, 
	and the Guitar Hero 3 controller. 
	WiiC can be integrated with OpenCV, in order to exploit its machine
	learning algorithms for gesture recognition.
	Single threaded and nonblocking makes a light weight and clean API.

	Distributed under the GPL and LGPL.


AUTHORS

	Gabriele Randelli        
	Email: < gabrielerandelli (--AT--) gmail [--DOT--] com >


LICENSE

	There are two licenses for wiiC (same as wiiuse).  Please read them carefully before choosing which one
	you use.  You may of course at any time switch the license you are currently using to
	the other.

	Briefly, the license options are:

		a) GNU LGPL (modified for non-commercial usage only)
		b) GNU GPL

	PLEASE READ THE LICENSES!


ACKNOWLEDGEMENTS

	First of all, I would like to thank the RoCoCo Laboratory (http://labrococo.dis.uniroma1.it)
	at the Department of Computer Science and Systems, Sapienza University of Rome, Italy.
	Thanks to Luca, Daniele, Valentina, Angelo, and sorry to everyone I missed!

	http://www.wiiuse.net/
		A high-quality library for controlling Wii devices, which inspired my project.

	http://wiibrew.org/
		This site is a rich knowledge base that allowed me to understand lots of things
		while porting Wiiuse to Mac.

	http://www.missioncognition.net/wiiusecpp/
		A C++ wrapper for Wiiuse, hence for WiiC as well, very useful for C++ developers.

DISCLAIMER AND WARNINGS

	I am in no way responsible for any damages or effects, intended or not, caused by this program.

	*** WARNING *** WARNING *** WARNING ***

	Be aware that writing to memory may damage or destroy your wiimote or expansions.

	*** WARNING *** WARNING *** WARNING ***

	This program was written using reverse engineered specifications available from wiibrew.org.
	Therefore the operation of this program may not be entirely correct.
	Results obtained by using this program may vary.


AUDIENCE

	This project is intended for developers who wish to include support for the Nintendo Wii remote
	with their third party application.  Please be aware that by using this software you are bound
	to the terms of the GNU GPL.


PLATFORMS AND DEPENDENCIES

	WiiC currently operates on Linux and Mac.
	You will need:

	For Linux:
		- The kernel must support bluetooth
		- The BlueZ bluetooth drivers must be installed
		- CMake for compiling the library

	For Mac:
		- CMake for compiling the library
		- Everything else is already present in the OS :)

	Optional additional libraries:
		- OpenCV, for machine learning support for gesture recognition
		- Doxygen, if you want to generate the documentation


DOWNLOAD
	
	WiiC is available at GitHub (http://www.github.com).
	In order to download, you can download the latest release
	(https://github.com/grandelli/WiiC/archive/master.zip), or you
	can check it out via Git, typing:

		git clone https://github.com/grandelli/WiiC.git


COMPILING

	Linux:
		Open a shell and type:

			cd <WIIC_HOME>
			mkdir build
			cd build
			cmake ../src
			make
		
		Now, to install the libraries, become root, and type:

			make install

		The above command will only install the binaries that you
		selected to compile.

		libwiic.so is installed to /usr/local/lib
		libwiicpp.so is installed to /usr/local/lib
		libwiicml.so (optional) is installed to /usr/local/lib
		wiic-example and wiicpp-example are installed to /usr/local/bin
		Headers file are installed in /usr/local/include

		If you want to generate documentation, then type:

			make doc

	Mac:
		Open a shell and type:

			cd <WIIC_HOME>
			mkdir build
			cd build
			cmake ../src
			make
		
		Now, to install the libraries, become root, and type:

			make install

		The above command will only install the binaries that you
		selected to compile.

		libwiic.dylib is installed to /usr/local/lib
		libwiicpp.dylib is installed to /usr/local/lib
		libwiicml.dylib (optional) is installed to /usr/local/lib
		wiic-example and wiicpp-example are installed to /usr/local/bin
		Headers file are installed in /usr/local/include

		If you want to generate documentation, then type:

			make doc


USING THE LIBRARY IN A THIRD PARTY APPLICATION

	To use the library in your own program you must first compile WiiC as a module.
	Include wiic.h in any file that uses the WiiC C layer, or wiicpp.h in any C++ file.

	For Linux you must link libwiic.so ( -lwiic ) for the C library, or libwiicpp.so ( -lwiicpp ) for the C++ library.
	For Mac you must link libwiic.dylib ( -lwiic ) for the C library, or libwiicpp.dylib ( -lwiicpp ) for the C++ library.
	In case you aim at exploiting WiiC machine learning techniques, link libwiicml.so (Linux) or libwiicml.dylib (Mac).