diff options
| -rw-r--r-- | tracker-wii/wii_camera.cpp | 14 | ||||
| -rw-r--r-- | tracker-wii/wii_camera.h | 2 | ||||
| -rw-r--r-- | tracker-wii/wii_frame.cpp | 20 | ||||
| -rw-r--r-- | tracker-wii/wii_point_extractor.cpp | 2 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/warns-begin.hpp | 9 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/warns-end.hpp | 3 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/wiimote.cpp | 45 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/wiimote.h | 10 | ||||
| -rw-r--r-- | tracker-wii/wiiyourself/wiimote_common.h | 2 | 
10 files changed, 72 insertions, 40 deletions
| diff --git a/tracker-wii/wii_camera.cpp b/tracker-wii/wii_camera.cpp index 93dfe4ff..38cbf26a 100644 --- a/tracker-wii/wii_camera.cpp +++ b/tracker-wii/wii_camera.cpp @@ -21,6 +21,7 @@  #include <opencv2/imgproc.hpp> +#include <bthsdpdef.h>  #include <bluetoothapis.h>  using namespace pt_module; @@ -79,6 +80,8 @@ WIICamera::result WIICamera::get_frame(pt_frame& frame_)  		break;  	case wii_cam_data_no_change:          return { false, cam_info }; +	default: +		break;  	}      return { true, cam_info }; @@ -109,9 +112,12 @@ void WIICamera::stop()      cam_desired = pt_camera_info();  } -  wii_camera_status WIICamera::_pair()  { +#if defined __MINGW32__ +        // missing prototypes and implib entries +        return wii_cam_wait_for_connect; +#else  	wii_camera_status ret = wii_cam_wait_for_sync;  	HBLUETOOTH_RADIO_FIND hbt;  	BLUETOOTH_FIND_RADIO_PARAMS bt_param; @@ -195,21 +201,25 @@ wii_camera_status WIICamera::_pair()  	}  	if (wiifound) { ret = wii_cam_wait_for_connect; }  	return ret; +#endif  }  wii_camera_status WIICamera::_get_frame(cv::Mat& frame)  { +	(void)frame;  	wii_camera_status ret = wii_cam_wait_for_connect;  	if (!m_pDev->IsConnected()) {  		qDebug() << "wii wait";  		ret = _pair(); -		switch(ret){ +		switch (ret) {  		case wii_cam_wait_for_sync:  			m_pDev->Disconnect();  			goto goodbye;  		case wii_cam_wait_for_connect:  			break; +		default: +			break;  		}  		if (!m_pDev->Connect(wiimote::FIRST_AVAILABLE)) {  			Beep(500, 30); Sleep(1000); diff --git a/tracker-wii/wii_camera.h b/tracker-wii/wii_camera.h index 55def206..f4ee5c00 100644 --- a/tracker-wii/wii_camera.h +++ b/tracker-wii/wii_camera.h @@ -41,7 +41,7 @@ struct WIICamera final : pt_camera      QString get_desired_name() const override;      QString get_active_name() const override; -    void set_fov(double value) override {} +    void set_fov(double value) override { (void)value; }      void show_camera_settings() override;  private: diff --git a/tracker-wii/wii_frame.cpp b/tracker-wii/wii_frame.cpp index df7b9ca4..432b1f18 100644 --- a/tracker-wii/wii_frame.cpp +++ b/tracker-wii/wii_frame.cpp @@ -49,14 +49,18 @@ WIIPreview::WIIPreview(int w, int h)  QImage WIIPreview::get_bitmap()  { -	switch (status) { -	case wii_cam_wait_for_dongle: -		return QImage(":/Resources/usb.png"); -	case wii_cam_wait_for_sync: -		return QImage(":/Resources/sync.png"); -	case wii_cam_wait_for_connect: -		return QImage(":/Resources/on.png"); -	} +    switch (status) { +    case wii_cam_wait_for_dongle: +        return QImage(":/Resources/usb.png"); +    case wii_cam_wait_for_sync: +        return QImage(":/Resources/sync.png"); +    case wii_cam_wait_for_connect: +        return QImage(":/Resources/on.png"); +    case wii_cam_data_change: +    case wii_cam_data_no_change: +        break; +    } +      int stride = frame_out.step.p[0];      if (stride < 64 || stride < frame_out.cols * 4) diff --git a/tracker-wii/wii_point_extractor.cpp b/tracker-wii/wii_point_extractor.cpp index 215d50b8..1be6049b 100644 --- a/tracker-wii/wii_point_extractor.cpp +++ b/tracker-wii/wii_point_extractor.cpp @@ -57,7 +57,7 @@ void WIIPointExtractor::_draw_point(cv::Mat& preview_frame, const vec2& p, const  		cv::Point(p2.x, p2.y + len),  		color,  		thinkness); -}; +}  bool WIIPointExtractor::_draw_points(cv::Mat& preview_frame, const struct wii_info &wii, std::vector<vec2>& points)  { diff --git a/tracker-wii/wiiyourself/CMakeLists.txt b/tracker-wii/wiiyourself/CMakeLists.txt index 614ff1c3..fe6d62e8 100644 --- a/tracker-wii/wiiyourself/CMakeLists.txt +++ b/tracker-wii/wiiyourself/CMakeLists.txt @@ -1 +1,4 @@ -otr_module(wiiyourself STATIC NO-COMPAT NO-QT) +if(WIN32) +    otr_module(wiiyourself STATIC NO-COMPAT NO-QT) +    target_link_libraries(${self} setupapi hid winmm) +endif() diff --git a/tracker-wii/wiiyourself/warns-begin.hpp b/tracker-wii/wiiyourself/warns-begin.hpp new file mode 100644 index 00000000..ca2b6b93 --- /dev/null +++ b/tracker-wii/wiiyourself/warns-begin.hpp @@ -0,0 +1,9 @@ +#ifdef __GNUG__ +#   pragma GCC diagnostic push +#   pragma GCC diagnostic ignored "-Wswitch" +#   pragma GCC diagnostic ignored "-Wreorder" +#   pragma GCC diagnostic ignored "-Wunused-variable" +#   pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#   pragma GCC diagnostic ignored "-Wunused-parameter" +#   pragma GCC diagnostic ignored "-Wcast-function-type" +#endif diff --git a/tracker-wii/wiiyourself/warns-end.hpp b/tracker-wii/wiiyourself/warns-end.hpp new file mode 100644 index 00000000..beaf245d --- /dev/null +++ b/tracker-wii/wiiyourself/warns-end.hpp @@ -0,0 +1,3 @@ +#ifdef __GNUG__ +#   pragma GCC diagnostic pop +#endif diff --git a/tracker-wii/wiiyourself/wiimote.cpp b/tracker-wii/wiiyourself/wiimote.cpp index f53e1acf..0da0113b 100644 --- a/tracker-wii/wiiyourself/wiimote.cpp +++ b/tracker-wii/wiiyourself/wiimote.cpp @@ -8,15 +8,17 @@  //  //  wiimote.cpp  (tab = 4 spaces) +#include "warns-begin.hpp" +  // VC-specifics:  #ifdef _MSC_VER    // disable warning "C++ exception handler used, but unwind semantics are not enabled."   //				     in <xstring> (I don't use it - or just enable C++ exceptions)  # pragma warning(disable: 4530)  //  auto-link with the necessary libs -# pragma comment(lib, "setupapi.lib")	 -# pragma comment(lib, "hid.lib")		// for HID API (from DDK) -# pragma comment(lib, "winmm.lib")		// for timeGetTime() +//# pragma comment(lib, "setupapi.lib") +//# pragma comment(lib, "hid.lib")		// for HID API (from DDK) +//# pragma comment(lib, "winmm.lib")		// for timeGetTime()  #endif // _MSC_VER  #include "wiimote.h" @@ -24,14 +26,13 @@  extern "C" {  #include <hidsdi.h>// from WinDDK  } +  #include <sys/types.h>	// for _stat  #include <sys/stat.h>	// " +#include <cstring> +#include <cstdio>  #include <process.h>	// for _beginthreadex() -#ifdef __BORLANDC__ -# include <cmath.h>		// for orientation -#else -# include <math.h>		// " -#endif +#include <math.h>		// for orientation  #include <mmreg.h>		// for WAVEFORMATEXTENSIBLE  #include <mmsystem.h>	// for timeGetTime() @@ -49,17 +50,12 @@ template<class T> inline T square(const T& val) { return val * val; }  // ------------------------------------------------------------------------------------  //  Tracing & Debugging  // ------------------------------------------------------------------------------------ -#define PREFIX	_T("WiiYourself! : ") +#define PREFIX	"WiiYourself: "  // comment these to auto-strip their code from the library:  //  (they currently use OutputDebugString() via _TRACE() - change to suit) -#if (_MSC_VER >= 1400) // VC 2005+ (earlier versions don't support variable args) -# define TRACE(fmt, ...) _TRACE(PREFIX          fmt          _T("\n"), __VA_ARGS__) -# define WARN(fmt, ...)  _TRACE(PREFIX _T("* ") fmt _T(" *") _T("\n"), __VA_ARGS__) -#elif defined(__MINGW32__) -# define TRACE(fmt, ...) _TRACE(PREFIX          fmt          _T("\n") , ##__VA_ARGS__) -# define WARN(fmt, ...)  _TRACE(PREFIX _T("* ") fmt _T(" *") _T("\n") , ##__VA_ARGS__) -#endif +# define TRACE _TRACE +# define WARN _TRACE  // uncomment any of these for deeper debugging:  //#define DEEP_TRACE(fmt, ...) _TRACE(PREFIX _T("|") fmt _T("\n"), __VA_ARGS__)    // VC 2005+  //#define DEEP_TRACE(fmt, ...) _TRACE(PREFIX _T("|") fmt _T("\n") , ##__VA_ARGS__) // mingw @@ -745,7 +741,7 @@ void wiimote::SetReportType(input_report type, bool continuous)  		TYPE2NAME(IN_BUTTONS_ACCEL_EXT) :  		TYPE2NAME(IN_BUTTONS_ACCEL_IR_EXT) :  		TYPE2NAME(IN_BUTTONS_BALANCE_BOARD) : -		_T("(unknown??)"); +		_T("(unknown?)");  	TRACE(_T("ReportType: %s (%s)"), name, (continuous ? _T("continuous") :  		_T("non-continuous")));  #endif @@ -2372,10 +2368,10 @@ unsigned __stdcall wiimote::SampleStreamThreadfunc(void* param)  // ------------------------------------------------------------------------------------  bool wiimote::Load16bitMonoSampleWAV(const TCHAR* filepath, wiimote_sample &out)  { +	out = {};  	// converts unsigned 16bit mono .wav audio data to the 4bit ADPCM variant  	//  used by the Wiimote (at least the closest match so far), and returns  	//  the data in a BYTE array (caller must delete[] it when no longer needed): -	memset(&out, 0, sizeof(out));  	TRACE(_T("Loading '%s'"), filepath); @@ -2543,10 +2539,10 @@ bool wiimote::Load16BitMonoSampleRAW(const TCHAR*   filepath,  	speaker_freq   freq,  	wiimote_sample &out)  { +	out = {};  	// converts (.wav style) unsigned 16bit mono raw data to the 4bit ADPCM variant  	//  used by the Wiimote, and returns the data in a BYTE array (caller must  	//  delete[] it when no longer needed): -	memset(&out, 0, sizeof(out));  	// get the length of the file  	struct _stat file_info; @@ -2564,12 +2560,11 @@ bool wiimote::Load16BitMonoSampleRAW(const TCHAR*   filepath,  	unsigned total_samples = (len + 1) / 2; // round up just in case file is corrupt  	// allocate a buffer to hold the samples to convert -	short *samples = new short[total_samples]; -	_ASSERT(samples); -	if (!samples) { +	if (!total_samples) {  		TRACE(_T("Couldn't open '%s"), filepath);  		return false;  	} +	short *samples = new short[total_samples];  	// load them  	FILE *file; @@ -2608,10 +2603,11 @@ bool wiimote::Convert16bitMonoSamples(const short*   samples,  	speaker_freq   freq,  	wiimote_sample &out)  { +	out = {}; +  	// converts 16bit mono sample data to the native 4bit format used by the Wiimote,  	//  and returns the data in a BYTE array (caller must delete[] when no  	//  longer needed): -	memset(&out, 0, sizeof(0));  	_ASSERT(samples && length);  	if (!samples || !length) @@ -2815,3 +2811,6 @@ void wiimote::StopRecording()  }  // ------------------------------------------------------------------------------------  // ------------------------------------------------------------------------------------ + +#include "warns-end.hpp" + diff --git a/tracker-wii/wiiyourself/wiimote.h b/tracker-wii/wiiyourself/wiimote.h index 3588b7c7..dac949c7 100644 --- a/tracker-wii/wiiyourself/wiimote.h +++ b/tracker-wii/wiiyourself/wiimote.h @@ -10,15 +10,15 @@  #pragma once +#include "warns-begin.hpp" +  #define WIN32_LEAN_AND_MEAN  #include <windows.h>  #include <tchar.h>		// auto Unicode/Ansi support  #include <queue>		// for HID write method  #include <list>			// for state recording -#ifndef QWORD - typedef unsigned __int64 QWORD; -#endif +typedef unsigned __int64 QWORD;  #ifdef _MSC_VER			   // VC-specific: _DEBUG build only _ASSERT() sanity checks  # include <crtdbg.h> @@ -181,7 +181,7 @@ class wiimote : public wiimote_state  		// get the frequency from speaker_freq enum  		static const unsigned	   FreqLookup [TOTAL_FREQUENCIES]; -		static const unsigned	GetFreqLookup (unsigned index) +		static unsigned	GetFreqLookup(unsigned index)  			{  			_ASSERT(index < TOTAL_FREQUENCIES);  			if(index >= TOTAL_FREQUENCIES) @@ -486,3 +486,5 @@ volatile int	 MotionPlusDetectCount;		  // waiting for the result  			unsigned		ExtTriggerFlags;// extension changes "  			} Recording;  	}; + +#include "warns-end.hpp" diff --git a/tracker-wii/wiiyourself/wiimote_common.h b/tracker-wii/wiiyourself/wiimote_common.h index c0fd01e1..9934d6ec 100644 --- a/tracker-wii/wiiyourself/wiimote_common.h +++ b/tracker-wii/wiiyourself/wiimote_common.h @@ -1,3 +1,5 @@ +#pragma once +  // _______________________________________________________________________________  //  //	 - WiiYourself! - native C++ Wiimote library  v1.15 RC | 
