void WiimoteController::connect() { assert(m_wiimote == 0); /* Connect to any wiimote */ bdaddr_t bdaddr = Bluetooth::addr_any; /* Connect to address in string WIIMOTE_BDADDR */ /* str2ba(WIIMOTE_BDADDR, &bdaddr); */ /* Connect to the wiimote */ printf("Put Wiimote in discoverable mode now (press 1+2)...\n"); // wait forever till a Wiimote is found m_wiimote = cwiid_open_timeout(&bdaddr, CWIID_FLAG_MESG_IFC, -1); { std::cout << "Wiimote connected: " << m_wiimote << std::endl; if (cwiid_set_mesg_callback(m_wiimote, &WiimoteController::mesg_callback)) { std::cerr << "Unable to set message callback" << std::endl; } if (cwiid_command(m_wiimote, CWIID_CMD_RPT_MODE, CWIID_RPT_STATUS | CWIID_RPT_NUNCHUK | CWIID_RPT_ACC | CWIID_RPT_IR | CWIID_RPT_BTN)) { std::cerr << "Wiimote: Error setting report mode" << std::endl; } read_wiimote_calibration(); read_nunchuk_calibration(); } }
/* TODO: Turn this onto a macro on next major so version */ cwiid_wiimote_t *cwiid_open(bdaddr_t *bdaddr, int flags) { return cwiid_open_timeout(bdaddr, flags, DEFAULT_TIMEOUT); }