diff --git a/cpp/mimis/Debug/mimis.dll b/cpp/mimis/Debug/mimis.dll
deleted file mode 100644
index 76c718c..0000000
Binary files a/cpp/mimis/Debug/mimis.dll and /dev/null differ
diff --git a/cpp/wiipair/Debug/wiipair.exe b/cpp/wiipair/Debug/wiipair.exe
deleted file mode 100644
index dd533f9..0000000
Binary files a/cpp/wiipair/Debug/wiipair.exe and /dev/null differ
diff --git a/cpp/wiiscan/.cproject b/cpp/wiiscan/.cproject
deleted file mode 100644
index bc351d3..0000000
--- a/cpp/wiiscan/.cproject
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/cpp/wiiscan/.project b/cpp/wiiscan/.project
deleted file mode 100644
index 6b48b82..0000000
--- a/cpp/wiiscan/.project
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- cpp.wiiscan
-
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.genmakebuilder
- clean,full,incremental,
-
-
- ?name?
-
-
-
- org.eclipse.cdt.make.core.append_environment
- true
-
-
- org.eclipse.cdt.make.core.buildArguments
-
-
-
- org.eclipse.cdt.make.core.buildCommand
- make
-
-
- org.eclipse.cdt.make.core.buildLocation
- ${workspace_loc:/Wiiscan/Release}
-
-
- org.eclipse.cdt.make.core.contents
- org.eclipse.cdt.make.core.activeConfigSettings
-
-
- org.eclipse.cdt.make.core.enableAutoBuild
- false
-
-
- org.eclipse.cdt.make.core.enableCleanBuild
- true
-
-
- org.eclipse.cdt.make.core.enableFullBuild
- true
-
-
- org.eclipse.cdt.make.core.stopOnError
- true
-
-
- org.eclipse.cdt.make.core.useDefaultBuildCmd
- true
-
-
-
-
- org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
- full,incremental,
-
-
-
-
-
- org.eclipse.cdt.core.cnature
- org.eclipse.cdt.core.ccnature
- org.eclipse.cdt.managedbuilder.core.managedBuildNature
- org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
-
-
diff --git a/cpp/wiiscan/include/BluetoothAPIs.h b/cpp/wiiscan/include/BluetoothAPIs.h
deleted file mode 100644
index 0027b2b..0000000
--- a/cpp/wiiscan/include/BluetoothAPIs.h
+++ /dev/null
@@ -1,1540 +0,0 @@
-
-//
-// Copyright 2002 - Microsoft Corporation
-//
-// Created By:
-// Geoff Pease (GPease) 12-JAN-2002
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-#define BLUETOOTH_MAX_NAME_SIZE (248)
-#define BLUETOOTH_MAX_PASSKEY_SIZE (16)
-#define BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE (BLUETOOTH_MAX_PASSKEY_SIZE + 1)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// ***************************************************************************
-//
-// Bluetooth Address
-//
-// ***************************************************************************
-
-typedef ULONGLONG BTH_ADDR;
-
-typedef struct _BLUETOOTH_ADDRESS {
- union {
- BTH_ADDR ullLong; // easier to compare again BLUETOOTH_NULL_ADDRESS
- BYTE rgBytes[ 6 ]; // easier to format when broken out
- };
-
-} BLUETOOTH_ADDRESS_STRUCT;
-
-#define BLUETOOTH_ADDRESS BLUETOOTH_ADDRESS_STRUCT
-
-#define BLUETOOTH_NULL_ADDRESS ( (ULONGLONG) 0x0 )
-
-// ***************************************************************************
-//
-// Radio Enumeration
-//
-// Description:
-// This group of APIs enumerates the installed Bluetooth radios.
-//
-// Sample Usage:
-// HANDLE hRadio;
-// BLUETOOTH_FIND_RADIO_PARAMS btfrp = { sizeof(btfrp) };
-//
-// HBLUETOOTH_RADIO_FIND hFind = BluetoothFindFirstRadio( &btfrp, &hRadio );
-// if ( NULL != hFind )
-// {
-// do
-// {
-// //
-// // TODO: Do something with the radio handle.
-// //
-//
-// CloseHandle( hRadio );
-//
-// } while( BluetoothFindNextRadio( hFind, &hRadio ) );
-//
-// BluetoothFindRadioClose( hFind );
-// }
-//
-// ***************************************************************************
-
-typedef struct _BLUETOOTH_FIND_RADIO_PARAMS {
- DWORD dwSize; // IN sizeof this structure
-
-} BLUETOOTH_FIND_RADIO_PARAMS;
-
-typedef HANDLE HBLUETOOTH_RADIO_FIND;
-
-//
-// Description:
-// Begins the enumeration of local Bluetooth radios.
-//
-// Parameters:
-// pbtfrp
-// A pointer to a BLUETOOTH_FIND_RADIO_PARAMS structure. The dwSize
-// member of this structure must match the sizeof the of the structure.
-//
-// phRadio
-// A pointer where the first radio HANDLE enumerated will be returned.
-//
-// Return Values:
-// NULL
-// Error opening radios or no devices found. Use GetLastError() for
-// more info.
-//
-// ERROR_INVALID_PARAMETER
-// pbtfrp parameter is NULL.
-//
-// ERROR_REVISION_MISMATCH
-// The pbtfrp structure is not the right length.
-//
-// ERROR_OUTOFMEMORY
-// Out of memory.
-//
-// other Win32 errors.
-//
-// any other
-// Success. The return handle is valid and phRadio points to a valid handle.
-//
-HBLUETOOTH_RADIO_FIND
-WINAPI
-BluetoothFindFirstRadio(
- BLUETOOTH_FIND_RADIO_PARAMS * pbtfrp,
- HANDLE * phRadio
- );
-
-//
-// Description:
-// Finds the next installed Bluetooth radio.
-//
-// Parameters:
-// hFind
-// The handle returned by BluetoothFindFirstRadio().
-//
-// phRadio
-// A pointer where the next radio HANDLE enumerated will be returned.
-//
-// Return Values:
-// TRUE
-// Next device succesfully found. pHandleOut points to valid handle.
-//
-// FALSE
-// No device found. pHandleOut points to an invalid handle. Call
-// GetLastError() for more details.
-//
-// ERROR_INVALID_HANDLE
-// The handle is NULL.
-//
-// ERROR_NO_MORE_ITEMS
-// No more radios found.
-//
-// ERROR_OUTOFMEMORY
-// Out of memory.
-//
-// other Win32 errors
-//
-BOOL
-WINAPI
-BluetoothFindNextRadio(
- HBLUETOOTH_RADIO_FIND hFind,
- HANDLE * phRadio
- );
-
-//
-// Description:
-// Closes the enumeration handle.
-//
-// Parameters
-// hFind
-// The handle returned by BluetoothFindFirstRadio().
-//
-// Return Values:
-// TRUE
-// Handle succesfully closed.
-//
-// FALSE
-// Failure. Check GetLastError() for details.
-//
-// ERROR_INVALID_HANDLE
-// The handle is NULL.
-//
-BOOL
-WINAPI
-BluetoothFindRadioClose(
- HBLUETOOTH_RADIO_FIND hFind
- );
-
-// ***************************************************************************
-//
-// Radio Information
-//
-// ***************************************************************************
-
-typedef struct _BLUETOOTH_RADIO_INFO {
- DWORD dwSize; // Size, in bytes, of this entire data structure
-
- BLUETOOTH_ADDRESS address; // Address of the local radio
-
- WCHAR szName[ BLUETOOTH_MAX_NAME_SIZE ]; // Name of the local radio
-
- ULONG ulClassofDevice; // Class of device for the local radio
-
- USHORT lmpSubversion; // lmpSubversion, manufacturer specifc.
- USHORT manufacturer; // Manufacturer of the radio, BTH_MFG_Xxx value. For the most up to date
- // list, goto the Bluetooth specification website and get the Bluetooth
- // assigned numbers document.
-} BLUETOOTH_RADIO_INFO, *PBLUETOOTH_RADIO_INFO;
-
-//
-// Description:
-// Retrieves the information about the radio represented by the handle.
-//
-// Parameters:
-// hRadio
-// Handle to a local radio retrieved through BluetoothFindFirstRadio()
-// et al or SetupDiEnumerateDeviceInterfaces()
-//
-// pRadioInfo
-// Radio information to be filled in. The dwSize member must match the
-// size of the structure.
-//
-// Return Values:
-// ERROR_SUCCESS
-// The information was retrieved successfully.
-//
-// ERROR_INVALID_PARAMETER
-// pRadioInfo or hRadio is NULL.
-//
-// ERROR_REVISION_MISMATCH
-// pRadioInfo->dwSize is invalid.
-//
-// other Win32 error codes.
-//
-DWORD
-WINAPI
-BluetoothGetRadioInfo(
- HANDLE hRadio,
- PBLUETOOTH_RADIO_INFO pRadioInfo
- );
-
-// ***************************************************************************
-//
-// Device Information Stuctures
-//
-// ***************************************************************************
-
-typedef struct _BLUETOOTH_DEVICE_INFO {
- DWORD dwSize; // size, in bytes, of this structure - must be the sizeof(BLUETOOTH_DEVICE_INFO)
-
- BLUETOOTH_ADDRESS Address; // Bluetooth address
-
- ULONG ulClassofDevice; // Bluetooth "Class of Device"
-
- BOOL fConnected; // Device connected/in use
- BOOL fRemembered; // Device remembered
- BOOL fAuthenticated; // Device authenticated/paired/bonded
-
- SYSTEMTIME stLastSeen; // Last time the device was seen
- SYSTEMTIME stLastUsed; // Last time the device was used for other than RNR, inquiry, or SDP
-
- WCHAR szName[ BLUETOOTH_MAX_NAME_SIZE ]; // Name of the device
-
-} BLUETOOTH_DEVICE_INFO_STRUCT;
-
-#define BLUETOOTH_DEVICE_INFO BLUETOOTH_DEVICE_INFO_STRUCT
-
-typedef BLUETOOTH_DEVICE_INFO * PBLUETOOTH_DEVICE_INFO;
-
-// ***************************************************************************
-//
-// Device Enumeration
-//
-// Description:
-// Enumerates the Bluetooth devices. The types of returned device depends
-// on the flags set in the BLUETOOTH_DEVICE_SEARCH_PARAMS (see structure
-// definition for details).
-//
-// Sample Usage:
-// HBLUETOOTH_DEVICE_FIND hFind;
-// BLUETOOTH_DEVICE_SEARCH_PARAMS btsp = { sizeof(btsp) };
-// BLUETOOTH_DEVICE_INFO btdi = { sizeof(btdi) };
-//
-// btsp.fReturnAuthenticated = TRUE;
-// btsp.fReturnRemembered = TRUE;
-//
-// hFind = BluetoothFindFirstDevice( &btsp, &btdi );
-// if ( NULL != hFind )
-// {
-// do
-// {
-// //
-// // TODO: Do something useful with the device info.
-// //
-//
-// } while( BluetoothFindNextDevice( hFind, &btdi ) );
-//
-// BluetoothFindDeviceClose( hFind );
-// }
-//
-// ***************************************************************************
-
-typedef struct _BLUETOOTH_DEVICE_SEARCH_PARAMS {
- DWORD dwSize; // IN sizeof this structure
-
- BOOL fReturnAuthenticated; // IN return authenticated devices
- BOOL fReturnRemembered; // IN return remembered devices
- BOOL fReturnUnknown; // IN return unknown devices
- BOOL fReturnConnected; // IN return connected devices
-
- BOOL fIssueInquiry; // IN issue a new inquiry
- UCHAR cTimeoutMultiplier; // IN timeout for the inquiry
-
- HANDLE hRadio; // IN handle to radio to enumerate - NULL == all radios will be searched
-
-} BLUETOOTH_DEVICE_SEARCH_PARAMS;
-
-typedef HANDLE HBLUETOOTH_DEVICE_FIND;
-
-//
-// Description:
-// Begins the enumeration of Bluetooth devices.
-//
-// Parameters:
-// pbtsp
-// A pointer to a BLUETOOTH_DEVICE_SEARCH_PARAMS structure. This
-// structure contains the flags and inputs used to conduct the search.
-// See BLUETOOTH_DEVICE_SEARCH_PARAMS for details.
-//
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
-// about the first Bluetooth device found. Note that the dwSize member
-// of the structure must be the sizeof(BLUETOOTH_DEVICE_INFO) before
-// calling because the APIs hast to know the size of the buffer being
-// past in. The dwSize member must also match the exact
-// sizeof(BLUETOOTH_DEVICE_INFO) or the call will fail.
-//
-// Return Values:
-// NULL
-// Error opening radios or not devices found. Use GetLastError for more info.
-//
-// ERROR_INVALID_PARAMETER
-// pbtsp parameter or pbtdi parameter is NULL.
-//
-// ERROR_REVISION_MISMATCH
-// The pbtfrp structure is not the right length.
-//
-// other Win32 errors
-//
-// any other value
-// Success. The return handle is valid and pbtdi points to valid data.
-//
-HBLUETOOTH_DEVICE_FIND
-WINAPI
-BluetoothFindFirstDevice(
- BLUETOOTH_DEVICE_SEARCH_PARAMS * pbtsp,
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-//
-// Description:
-// Finds the next Bluetooth device in the enumeration.
-//
-// Parameters:
-// hFind
-// The handle returned from BluetoothFindFirstDevice().
-//
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
-// about the first Bluetooth device found. Note that the dwSize member
-// of the structure must be the sizeof(BLUETOOTH_DEVICE_INFO) before
-// calling because the APIs hast to know the size of the buffer being
-// past in. The dwSize member must also match the exact
-// sizeof(BLUETOOTH_DEVICE_INFO) or the call will fail.
-//
-// Return Values:
-// TRUE
-// Next device succesfully found. pHandleOut points to valid handle.
-//
-// FALSE
-// No device found. pHandleOut points to an invalid handle. Call
-// GetLastError() for more details.
-//
-// ERROR_INVALID_HANDLE
-// The handle is NULL.
-//
-// ERROR_NO_MORE_ITEMS
-// No more radios found.
-//
-// ERROR_OUTOFMEMORY
-// Out of memory.
-//
-// other Win32 errors
-//
-BOOL
-WINAPI
-BluetoothFindNextDevice(
- HBLUETOOTH_DEVICE_FIND hFind,
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-//
-// Description:
-// Closes the enumeration handle.
-//
-// Parameters:
-// hFind
-// The handle returned from BluetoothFindFirstDevice().
-//
-// Return Values:
-// TRUE
-// Handle succesfully closed.
-//
-// FALSE
-// Failure. Check GetLastError() for details.
-//
-// ERROR_INVALID_HANDLE
-// The handle is NULL.
-//
-BOOL
-WINAPI
-BluetoothFindDeviceClose(
- HBLUETOOTH_DEVICE_FIND hFind
- );
-
-//
-// Description:
-// Retrieves information about a remote device.
-//
-// Fill in the dwSize and the Address members of the pbtdi structure
-// being passed in. On success, the rest of the members will be filled
-// out with the information that the system knows.
-//
-// Parameters:
-// hRadio
-// Handle to a local radio retrieved through BluetoothFindFirstRadio()
-// et al or SetupDiEnumerateDeviceInterfaces()
-//
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
-// about the first Bluetooth device found. The dwSize member of the
-// structure must be the sizeof the structure in bytes. The Address
-// member must be filled out with the Bluetooth address of the remote
-// device.
-//
-// Return Values:
-// ERROR_SUCCESS
-// Success. Information returned.
-//
-// ERROR_REVISION_MISMATCH
-// The size of the BLUETOOTH_DEVICE_INFO isn't compatible. Check
-// the dwSize member of the BLUETOOTH_DEVICE_INFO structure you
-// passed in.
-//
-// ERROR_NOT_FOUND
-// The radio is not known by the system or the Address field of
-// the BLUETOOTH_DEVICE_INFO structure is all zeros.
-//
-// ERROR_INVALID_PARAMETER
-// pbtdi is NULL.
-//
-// other error codes
-//
-DWORD
-WINAPI
-BluetoothGetDeviceInfo(
- HANDLE hRadio,
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-//
-// Description:
-// Updates the computer local cache about the device.
-//
-// Parameters:
-// pbtdi
-// A pointer to the BLUETOOTH_DEVICE_INFO structure to be updated.
-// The following members must be valid:
-// dwSize
-// Must match the size of the structure.
-// Address
-// Must be a previously found radio address.
-// szName
-// New name to be stored.
-//
-// Return Values:
-// ERROR_SUCCESS
-// The device information was updated successfully.
-//
-// ERROR_INVALID_PARAMETER
-// pbtdi is NULL.
-//
-// ERROR_REVISION_MISMATCH
-// pbtdi->dwSize is invalid.
-//
-// other Win32 error codes.
-//
-DWORD
-WINAPI
-BluetoothUpdateDeviceRecord(
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-//
-// Description:
-// Delete the authentication (aka "bond") between the computer and the
-// device. Also purges any cached information about the device.
-//
-// Return Values:
-// ERROR_SUCCESS
-// The device was removed successfully.
-//
-// ERROR_NOT_FOUND
-// The device was not found. If no Bluetooth radio is installed,
-// the devices could not be enumerated or removed.
-//
-DWORD
-WINAPI
-BluetoothRemoveDevice(
- BLUETOOTH_ADDRESS * pAddress
- );
-
-// ***************************************************************************
-//
-// Device Picker Dialog
-//
-// Description:
-// Invokes a common dialog for selecting Bluetooth devices. The list
-// of devices displayed to the user is determined by the flags and
-// settings the caller specifies in the BLUETOOTH_SELECT_DEVICE_PARAMS
-// (see structure definition for more details).
-//
-// If BluetoothSelectDevices() returns TRUE, the caller must call
-// BluetoothSelectDevicesFree() or memory will be leaked within the
-// process.
-//
-// Sample Usage:
-//
-// BLUETOOTH_SELECT_DEVICE_PARAMS btsdp = { sizeof(btsdp) };
-//
-// btsdp.hwndParent = hDlg;
-// btsdp.fShowUnknown = TRUE;
-// btsdp.fAddNewDeviceWizard = TRUE;
-//
-// BOOL b = BluetoothSelectDevices( &btsdp );
-// if ( b )
-// {
-// BLUETOOTH_DEVICE_INFO * pbtdi = btsdp.pDevices;
-// for ( ULONG cDevice = 0; cDevice < btsdp.cNumDevices; cDevice ++ )
-// {
-// if ( pbtdi->fAuthenticated || pbtdi->fRemembered )
-// {
-// //
-// // TODO: Do something usefull with the device info
-// //
-// }
-//
-// pbtdi = (BLUETOOTH_DEVICE_INFO *) ((LPBYTE)pbtdi + pbtdi->dwSize);
-// }
-//
-// BluetoothSelectDevicesFree( &btsdp );
-// }
-//
-// ***************************************************************************
-
-
-typedef struct _BLUETOOTH_COD_PAIRS {
- ULONG ulCODMask; // ClassOfDevice mask to compare
- LPCWSTR pcszDescription; // Descriptive string of mask
-
-} BLUETOOTH_COD_PAIRS;
-
-typedef BOOL (WINAPI *PFN_DEVICE_CALLBACK)(LPVOID pvParam, PBLUETOOTH_DEVICE_INFO pDevice);
-
-typedef struct _BLUETOOTH_SELECT_DEVICE_PARAMS {
- DWORD dwSize; // IN sizeof this structure
-
- ULONG cNumOfClasses; // IN Number in prgClassOfDevice - if ZERO search for all devices
- BLUETOOTH_COD_PAIRS * prgClassOfDevices; // IN Array of CODs to find.
-
- LPWSTR pszInfo; // IN If not NULL, sets the "information" text
-
- HWND hwndParent; // IN parent window - NULL == no parent
-
- BOOL fForceAuthentication; // IN If TRUE, authenication will be forced before returning
- BOOL fShowAuthenticated; // IN If TRUE, authenticated devices will be shown in the picker
- BOOL fShowRemembered; // IN If TRUE, remembered devices will be shown in the picker
- BOOL fShowUnknown; // IN If TRUE, unknown devices that are not authenticated or "remember" will be shown.
-
- BOOL fAddNewDeviceWizard; // IN If TRUE, invokes the add new device wizard.
- BOOL fSkipServicesPage; // IN If TRUE, skips the "Services" page in the wizard.
-
- PFN_DEVICE_CALLBACK pfnDeviceCallback; // IN If non-NULL, a callback that will be called for each device. If the
- // the callback returns TRUE, the item will be added. If the callback is
- // is FALSE, the item will not be shown.
- LPVOID pvParam; // IN Parameter to be passed to pfnDeviceCallback as the pvParam.
-
- DWORD cNumDevices; // IN number calles wants - ZERO == no limit.
- // OUT the number of devices returned.
-
- PBLUETOOTH_DEVICE_INFO pDevices; // OUT pointer to an array for BLUETOOTH_DEVICE_INFOs.
- // call BluetoothSelectDevicesFree() to free
-
-} BLUETOOTH_SELECT_DEVICE_PARAMS;
-
-//
-// Description:
-// (See header above)
-//
-// Return Values:
-// TRUE
-// User selected a device. pbtsdp->pDevices points to valid data.
-// Caller should check the fAuthenticated && fRemembered flags to
-// determine which devices we successfuly authenticated or valid
-// selections by the user.
-//
-// Use BluetoothSelectDevicesFree() to free the nessecary data
-// such as pDevices only if this function returns TRUE.
-//
-// FALSE
-// No valid data returned. Call GetLastError() for possible details
-// of the failure. If GLE() is:
-//
-// ERROR_CANCELLED
-// The user cancelled the request.
-//
-// ERROR_INVALID_PARAMETER
-// The pbtsdp is NULL.
-//
-// ERROR_REVISION_MISMATCH
-// The structure passed in as pbtsdp is of an unknown size.
-//
-// other WIN32 errors
-//
-BOOL
-WINAPI
-BluetoothSelectDevices(
- BLUETOOTH_SELECT_DEVICE_PARAMS * pbtsdp
- );
-
-//
-// Description:
-// This function should only be called if BluetoothSelectDevices() returns
-// TRUE. This function will free any memory and resource returned by the
-// BluetoothSelectDevices() in the BLUETOOTH_SELECT_DEVICE_PARAMS
-// structure.
-//
-// Return Values:
-// TRUE
-// Success.
-//
-// FALSE
-// Nothing to free.
-//
-BOOL
-WINAPI
-BluetoothSelectDevicesFree(
- BLUETOOTH_SELECT_DEVICE_PARAMS * pbtsdp
- );
-
-// ***************************************************************************
-//
-// Device Property Sheet
-//
-// ***************************************************************************
-
-//
-// Description:
-// Invokes the CPLs device info property sheet.
-//
-// Parameters:
-// hwndParent
-// HWND to parent the property sheet.
-//
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure of the device
-// to be displayed.
-//
-// Return Values:
-// TRUE
-// The property page was successfully displayed.
-//
-// FALSE
-// Failure. The property page was not displayed. Check GetLastError
-// for more details.
-//
-BOOL
-WINAPI
-BluetoothDisplayDeviceProperties(
- HWND hwndParent,
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-
-// ***************************************************************************
-//
-// Radio Authentication
-//
-// ***************************************************************************
-
-//
-// Description:
-// Sends an authentication request to a remote device.
-//
-// There are two modes of operation. "Wizard mode" and "Blind mode."
-//
-// "Wizard mode" is invoked when the pszPasskey is NULL. This will cause
-// the "Bluetooth Connection Wizard" to be invoked. The user will be
-// prompted to enter a passkey during the wizard after which the
-// authentication request will be sent. The user will see the success
-// or failure of the authentication attempt. The user will also be
-// given the oppurtunity to try to fix a failed authentication.
-//
-// "Blind mode" is invoked when the pszPasskey is non-NULL. This will
-// cause the computer to send a authentication request to the remote
-// device. No UI is ever displayed. The Bluetooth status code will be
-// mapped to a Win32 Error code.
-//
-// Parameters:
-//
-// hwndParent
-// The window to parent the authentication wizard. If NULL, the
-// wizard will be parented off the desktop.
-//
-// hRadio
-// A valid local radio handle or NULL. If NULL, then all radios will
-// be tired. If any of the radios succeed, then the call will
-// succeed.
-//
-// pbtdi
-// BLUETOOTH_DEVICE_INFO record of the device to be authenticated.
-//
-// pszPasskey
-// PIN to be used to authenticate the device. If NULL, then UI is
-// displayed and the user steps through the authentication process.
-// If not NULL, no UI is shown. The passkey is NOT NULL terminated.
-//
-// ulPasskeyLength
-// Length of szPassKey in bytes. The length must be less than or
-// equal to BLUETOOTH_MAX_PASSKEY_SIZE * sizeof(WCHAR).
-//
-// Return Values:
-//
-// ERROR_SUCCESS
-// Success.
-//
-// ERROR_CANCELLED
-// User aborted the operation.
-//
-// ERROR_INVALID_PARAMETER
-// The device structure in pbtdi is invalid.
-//
-// ERROR_NO_MORE_ITEMS
-// The device in pbtdi is already been marked as authenticated.
-//
-// other WIN32 error
-// Failure. Return value is the error code.
-//
-// For "Blind mode," here is the current mapping of Bluetooth status
-// code to Win32 error codes:
-//
-// { BTH_ERROR_SUCCESS, ERROR_SUCCESS },
-// { BTH_ERROR_NO_CONNECTION, ERROR_DEVICE_NOT_CONNECTED },
-// { BTH_ERROR_PAGE_TIMEOUT, WAIT_TIMEOUT },
-// { BTH_ERROR_HARDWARE_FAILURE, ERROR_GEN_FAILURE },
-// { BTH_ERROR_AUTHENTICATION_FAILURE, ERROR_NOT_AUTHENTICATED },
-// { BTH_ERROR_MEMORY_FULL, ERROR_NOT_ENOUGH_MEMORY },
-// { BTH_ERROR_CONNECTION_TIMEOUT, WAIT_TIMEOUT },
-// { BTH_ERROR_LMP_RESPONSE_TIMEOUT, WAIT_TIMEOUT },
-// { BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS, ERROR_REQ_NOT_ACCEP },
-// { BTH_ERROR_PAIRING_NOT_ALLOWED, ERROR_ACCESS_DENIED },
-// { BTH_ERROR_UNSPECIFIED_ERROR, ERROR_NOT_READY },
-// { BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION, ERROR_VC_DISCONNECTED },
-//
-DWORD
-WINAPI
-BluetoothAuthenticateDevice(
- HWND hwndParent,
- HANDLE hRadio,
- BLUETOOTH_DEVICE_INFO * pbtbi,
- PWCHAR pszPasskey,
- ULONG ulPasskeyLength
- );
-
-//
-// Description:
-// Allows the caller to prompt for multiple devices to be authenticated
-// within a single instance of the "Bluetooth Connection Wizard."
-//
-// Parameters:
-//
-// hwndParent
-// The window to parent the authentication wizard. If NULL, the
-// wizard will be parented off the desktop.
-//
-// hRadio
-// A valid local radio handle or NULL. If NULL, then all radios will
-// be tired. If any of the radios succeed, then the call will
-// succeed.
-//
-// cDevices
-// Number of devices in the rgbtdi array.
-//
-// rgbtdi
-// An array BLUETOOTH_DEVICE_INFO records of the devices to be
-// authenticated.
-//
-// Return Values:
-//
-// ERROR_SUCCESS
-// Success. Check the fAuthenticate flag on each of the devices.
-//
-// ERROR_CANCELLED
-// User aborted the operation. Check the fAuthenticate flags on
-// each device to determine if any of the devices were authenticated
-// before the user cancelled the operation.
-//
-// ERROR_INVALID_PARAMETER
-// One of the items in the array of devices is invalid.
-//
-// ERROR_NO_MORE_ITEMS
-// All the devices in the array of devices are already been marked as
-// being authenticated.
-//
-// other WIN32 error
-// Failure. Return value is the error code.
-//
-DWORD
-WINAPI
-BluetoothAuthenticateMultipleDevices(
- HWND hwndParent,
- HANDLE hRadio,
- DWORD cDevices,
- BLUETOOTH_DEVICE_INFO * pbtdi
- );
-
-// ***************************************************************************
-//
-// Bluetooth Services
-//
-// ***************************************************************************
-
-#define BLUETOOTH_SERVICE_DISABLE 0x00
-#define BLUETOOTH_SERVICE_ENABLE 0x01
-#define BLUETOOTH_SERVICE_MASK ( BLUETOOTH_ENABLE_SERVICE | BLUETOOTH_DISABLE_SERVICE )
-
-//
-// Description:
-// Enables/disables the services for a particular device.
-//
-// The system maintains a mapping of service guids to supported drivers for
-// Bluetooth-enabled devices. Enabling a service installs the corresponding
-// device driver. Disabling a service removes the corresponding device driver.
-//
-// If a non-supported service is enabled, a driver will not be installed.
-//
-// Parameters
-// hRadio
-// Handle of the local Bluetooth radio device.
-//
-// pbtdi
-// Pointer to a BLUETOOTH_DEVICE_INFO record.
-//
-// pGuidService
-// The service GUID on the remote device.
-//
-// dwServiceFlags
-// Flags to adjust the service.
-// BLUETOOTH_SERVICE_DISABLE - disable the service
-// BLUETOOTH_SERVICE_ENABLE - enables the service
-//
-// Return Values:
-// ERROR_SUCCESS
-// The call was successful.
-//
-// ERROR_INVALID_PARAMETER
-// dwServiceFlags are invalid.
-//
-// ERROR_SERVICE_DOES_NOT_EXIST
-// The GUID in pGuidService is not supported.
-//
-// other WIN32 error
-// The call failed.
-//
-DWORD
-WINAPI
-BluetoothSetServiceState(
- HANDLE hRadio,
- BLUETOOTH_DEVICE_INFO * pbtdi,
- GUID * pGuidService,
- DWORD dwServiceFlags
- );
-
-//
-// Description:
-// Enumerates the services guids enabled on a particular device. If hRadio
-// is NULL, all device will be searched for the device and all the services
-// enabled will be returned.
-//
-// Parameters:
-// hRadio
-// Handle of the local Bluetooth radio device. If NULL, it will search
-// all the radios for the address in the pbtdi.
-//
-// pbtdi
-// Pointer to a BLUETOOTH_DEVICE_INFO record.
-//
-// pcService
-// On input, the number of records pointed to by pGuidServices.
-// On output, the number of valid records return in pGuidServices.
-//
-// pGuidServices
-// Pointer to memory that is at least *pcService in length.
-//
-// Return Values:
-// ERROR_SUCCESS
-// The call succeeded. pGuidServices is valid.
-//
-// ERROR_MORE_DATA
-// The call succeeded. pGuidService contains an incomplete list of
-// enabled service GUIDs.
-//
-// other WIN32 errors
-// The call failed.
-//
-DWORD
-WINAPI
-BluetoothEnumerateInstalledServices(
- HANDLE hRadio,
- BLUETOOTH_DEVICE_INFO * pbtdi,
- DWORD * pcServices,
- GUID * pGuidServices
- );
-
-//
-// Description:
-// Change the discovery state of the local radio(s).
-// If hRadio is NULL, all the radios will be set.
-//
-// Use BluetoothIsDiscoverable() to determine the radios current state.
-//
-// The system ensures that a discoverable system is connectable, thus
-// the radio must allow incoming connections (see
-// BluetoothEnableIncomingConnections) prior to making a radio
-// discoverable. Failure to do so will result in this call failing
-// (returns FALSE).
-//
-// Parameters:
-// hRadio
-// If not NULL, changes the state of a specific radio.
-// If NULL, the API will interate through all the radios.
-//
-// fEnabled
-// If FALSE, discovery will be disabled.
-//
-// Return Values
-// TRUE
-// State was successfully changed. If the caller specified NULL for
-// hRadio, at least of the radios accepted the state change.
-//
-// FALSE
-// State was not changed. If the caller specified NULL for hRadio, all
-// of the radios did not accept the state change.
-//
-BOOL
-WINAPI
-BluetoothEnableDiscovery(
- HANDLE hRadio,
- BOOL fEnabled
- );
-
-//
-// Description:
-// Determines if the Bluetooth radios are discoverable. If there are
-// multiple radios, the first one to say it is discoverable will cause
-// this function to return TRUE.
-//
-// Parameters:
-// hRadio
-// Handle of the radio to check. If NULL, it will check all local
-// radios.
-//
-// Return Values:
-// TRUE
-// A least one radio is discoverable.
-//
-// FALSE
-// No radios are discoverable.
-//
-BOOL
-WINAPI
-BluetoothIsDiscoverable(
- HANDLE hRadio
- );
-
-//
-// Description:
-// Enables/disables the state of a radio to accept incoming connections.
-// If hRadio is NULL, all the radios will be set.
-//
-// Use BluetoothIsConnectable() to determine the radios current state.
-//
-// The system enforces that a radio that is not connectable is not
-// discoverable too. The radio must be made non-discoverable (see
-// BluetoothEnableDiscovery) prior to making a radio non-connectionable.
-// Failure to do so will result in this call failing (returns FALSE).
-//
-// Parameters:
-// hRadio
-// If not NULL, changes the state of a specific radio.
-// If NULL, the API will interate through all the radios.
-//
-// fEnabled
-// If FALSE, incoming connection will be disabled.
-//
-// Return Values
-// TRUE
-// State was successfully changed. If the caller specified NULL for
-// hRadio, at least of the radios accepted the state change.
-//
-// FALSE
-// State was not changed. If the caller specified NULL for hRadio, all
-// of the radios did not accept the state change.
-//
-BOOL
-WINAPI
-BluetoothEnableIncomingConnections(
- HANDLE hRadio,
- BOOL fEnabled
- );
-
-//
-// Description:
-// Determines if the Bluetooth radios are connectable. If there are
-// multiple radios, the first one to say it is connectable will cause
-// this function to return TRUE.
-//
-// Parameters:
-// hRadio
-// Handle of the radio to check. If NULL, it will check all local
-// radios.
-//
-// Return Values:
-// TRUE
-// A least one radio is allowing incoming connections.
-//
-// FALSE
-// No radios are allowing incoming connections.
-//
-BOOL
-WINAPI
-BluetoothIsConnectable(
- HANDLE hRadio
- );
-
-// ***************************************************************************
-//
-// Authentication Registration
-//
-// ***************************************************************************
-
-typedef HANDLE HBLUETOOTH_AUTHENTICATION_REGISTRATION;
-
-typedef BOOL (*PFN_AUTHENTICATION_CALLBACK)(LPVOID pvParam, PBLUETOOTH_DEVICE_INFO pDevice);
-
-//
-// Description:
-// Registers a callback function to be called when a particular device
-// requests authentication. The request is sent to the last application
-// that requested authentication for a particular device.
-//
-// Parameters:
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure. The Bluetooth
-// address will be used for comparision.
-//
-// phRegHandle
-// A pointer to where the registration HANDLE value will be
-// stored. Call BluetoothUnregisterAuthentication() to close
-// the handle.
-//
-// pfnCallback
-// The function that will be called when the authentication event
-// occurs. This function should match PFN_AUTHENTICATION_CALLBACK's
-// prototype.
-//
-// pvParam
-// Optional parameter to be past through to the callback function.
-// This can be anything the application was to define.
-//
-// Return Values:
-// ERROR_SUCCESS
-// Success. A valid registration handle was returned.
-//
-// ERROR_OUTOFMEMORY
-// Out of memory.
-//
-// other Win32 error.
-// Failure. The registration handle is invalid.
-//
-DWORD
-WINAPI
-BluetoothRegisterForAuthentication(
- BLUETOOTH_DEVICE_INFO * pbtdi,
- HBLUETOOTH_AUTHENTICATION_REGISTRATION * phRegHandle,
- PFN_AUTHENTICATION_CALLBACK pfnCallback,
- PVOID pvParam
- );
-
-//
-// Description:
-// Unregisters an authentication callback and closes the handle. See
-// BluetoothRegisterForAuthentication() for more information about
-// authentication registration.
-//
-// Parameters:
-// hRegHandle
-// Handle returned by BluetoothRegisterForAuthentication().
-//
-// Return Value:
-// TRUE
-// The handle was successfully closed.
-//
-// FALSE
-// The handle was not successfully closed. Check GetLastError for
-// more details.
-//
-// ERROR_INVALID_HANDLE
-// The handle is NULL.
-//
-// other Win32 errors.
-//
-BOOL
-WINAPI
-BluetoothUnregisterAuthentication(
- HBLUETOOTH_AUTHENTICATION_REGISTRATION hRegHandle
- );
-
-//
-// Description:
-// This function should be called after receiving an authentication request
-// to send the passkey response.
-//
-// Parameters:
-//
-// hRadio
-// Optional handle to the local radio. If NULL, the function will try
-// each radio until one succeeds.
-//
-// pbtdi
-// A pointer to a BLUETOOTH_DEVICE_INFO structure describing the device
-// being authenticated. This can be the same structure passed to the
-// callback function.
-//
-// pszPasskey
-// A pointer to UNICODE zero-terminated string of the passkey response
-// that should be sent back to the authenticating device.
-//
-// Return Values:
-// ERROR_SUCESS
-// The device accepted the passkey response. The device is authenticated.
-//
-// ERROR_CANCELED
-// The device denied the passkey reponse. This also will returned if there
-// is a communications problem with the local radio.
-//
-// E_FAIL
-// The device returned a failure code during authentication.
-//
-// other Win32 error codes
-//
-DWORD
-WINAPI
-BluetoothSendAuthenticationResponse(
- HANDLE hRadio,
- BLUETOOTH_DEVICE_INFO * pbtdi,
- LPWSTR pszPasskey
- );
-
-// ***************************************************************************
-//
-// SDP Parsing Functions
-//
-// ***************************************************************************
-
-typedef struct _SDP_ELEMENT_DATA {
- //
- // Enumeration of SDP element types. Generic element types will have a
- // specificType value other then SDP_ST_NONE. The generic types are:
- // o SDP_TYPE_UINT
- // o SDP_TYPE_INT
- // o SDP_TYPE_UUID
- //
- SDP_TYPE type;
-
- //
- // Specific types for the generic SDP element types.
- //
- SDP_SPECIFICTYPE specificType;
-
- //
- // Union of all possible data types. type and specificType will indicate
- // which field is valid. For types which do not have a valid specificType,
- // specific type will be SDP_ST_NONE.
- //
- union {
- // type == SDP_TYPE_INT
- SDP_LARGE_INTEGER_16 int128; // specificType == SDP_ST_INT128
- LONGLONG int64; // specificType == SDP_ST_INT64
- LONG int32; // specificType == SDP_ST_INT32
- SHORT int16; // specificType == SDP_ST_INT16
- CHAR int8; // specificType == SDP_ST_INT8
-
- // type == SDP_TYPE_UINT
- SDP_ULARGE_INTEGER_16 uint128; // specificType == SDP_ST_UINT128
- ULONGLONG uint64; // specificType == SDP_ST_UINT64
- ULONG uint32; // specificType == SDP_ST_UINT32
- USHORT uint16; // specificType == SDP_ST_UINT16
- UCHAR uint8; // specificType == SDP_ST_UINT8
-
- // type == SDP_TYPE_BOOLEAN
- UCHAR booleanVal;
-
- // type == SDP_TYPE_UUID
- GUID uuid128; // specificType == SDP_ST_UUID128
- ULONG uuid32; // specificType == SDP_ST_UUID32
- USHORT uuid16; // specificType == SDP_ST_UUID32
-
- // type == SDP_TYPE_STRING
- struct {
- // raw string buffer, may not be encoded as ANSI, use
- // BluetoothSdpGetString to convert the value if it is described
- // by the base language attribute ID list
- LPBYTE value;
-
- // raw length of the string, may not be NULL terminuated
- ULONG length;
- } string;
-
- // type == SDP_TYPE_URL
- struct {
- LPBYTE value;
- ULONG length;
- } url;
-
- // type == SDP_TYPE_SEQUENCE
- struct {
- // raw sequence, starts at sequence element header
- LPBYTE value;
-
- // raw sequence length
- ULONG length;
- } sequence;
-
- // type == SDP_TYPE_ALTERNATIVE
- struct {
- // raw alternative, starts at alternative element header
- LPBYTE value;
-
- // raw alternative length
- ULONG length;
- } alternative;
-
- } data;
-
-} SDP_ELEMENT_DATA, *PSDP_ELEMENT_DATA;
-
-//
-// Description:
-// Retrieves and parses the element found at pSdpStream
-//
-// Parameters:
-// IN pSdpStream
-// pointer to valid SDP stream
-//
-// IN cbSdpStreamLength
-// length of pSdpStream in bytes
-//
-// OUT pData
-// pointer to be filled in with the data of the SDP element at the
-// beginning of pSdpStream
-//
-// Return Values:
-// ERROR_INVALID_PARAMETER
-// one of required parameters is NULL or the pSdpStream is invalid
-//
-// ERROR_SUCCESS
-// the sdp element was parsed correctly
-//
-DWORD
-WINAPI
-BluetoothSdpGetElementData(
- LPBYTE pSdpStream,
- ULONG cbSdpStreamLength,
- PSDP_ELEMENT_DATA pData
- );
-
-typedef HANDLE HBLUETOOTH_CONTAINER_ELEMENT;
-
-//
-// Description:
-// Iterates over a container stream, returning each elemetn contained with
-// in the container element at the beginning of pContainerStream
-//
-// Parameters:
-// IN pContainerStream
-// pointer to valid SDP stream whose first element is either a sequence
-// or alternative
-//
-// IN cbContainerlength
-// length in bytes of pContainerStream
-//
-// IN OUT pElement
-// Value used to keep track of location within the stream. The first
-// time this function is called for a particular container, *pElement
-// should equal NULL. Upon subsequent calls, the value should be
-// unmodified.
-//
-// OUT pData
-// pointer to be filled in with the data of the SDP element at the
-// current element of pContainerStream
-//
-// Return Values:
-// ERROR_SUCCESS
-// The call succeeded, pData contains the data
-//
-// ERROR_NO_MORE_ITEMS
-// There are no more items in the list, the caller should cease calling
-// BluetoothSdpGetContainerElementData for this container.
-//
-// ERROR_INVALID_PARAMETER
-// A required pointer is NULL or the container is not a valid SDP
-// stream
-//
-// Usage example:
-//
-// HBLUETOOTH_CONTAINER_ELEMENT element;
-// SDP_ELEMENT_DATA data;
-// ULONG result;
-//
-// element = NULL;
-//
-// while (TRUE) {
-// result = BluetoothSdpGetContainerElementData(
-// pContainer, ulContainerLength, &element, &data);
-//
-// if (result == ERROR_NO_MORE_ITEMS) {
-// // We are done
-// break;
-// }
-// else if (result != ERROR_SUCCESS) {
-// // error
-// }
-//
-// // do something with data ...
-// }
-//
-//
-DWORD
-WINAPI
-BluetoothSdpGetContainerElementData(
- LPBYTE pContainerStream,
- ULONG cbContainerLength,
- HBLUETOOTH_CONTAINER_ELEMENT* pElement,
- PSDP_ELEMENT_DATA pData
- );
-
-//
-// Description:
-// Retrieves the attribute value for the given attribute ID. pRecordStream
-// must be an SDP stream that is formatted as an SDP record, a SEQUENCE
-// containing UINT16 + element pairs.
-//
-// Parameters:
-// IN pRecordStream
-// pointer to a valid SDP stream which is formatted as a singl SDP
-// record
-//
-// IN cbRecordlnegh
-// length of pRecordStream in bytes
-//
-// IN usAttributeId
-// the attribute ID to search for. see bthdef.h for SDP_ATTRIB_Xxx
-// values.
-//
-// OUT pAttributeData
-// pointer that will contain the attribute ID's value
-//
-// Return Values:
-// ERRROR_SUCCESS
-// Call succeeded, pAttributeData contains the attribute value
-//
-// ERROR_INVALID_PARAMETER
-// One of the required pointers was NULL, pRecordStream was not a valid
-// SDP stream, or pRecordStream was not a properly formatted SDP record
-//
-// ERROR_FILE_NOT_FOUND
-// usAttributeId was not found in the record
-//
-// Usage:
-//
-// ULONG result;
-// SDP_DATA_ELEMENT data;
-//
-// result = BluetoothSdpGetAttributeValue(
-// pRecordStream, cbRecordLength, SDP_ATTRIB_RECORD_HANDLE, &data);
-// if (result == ERROR_SUCCESS) {
-// printf("record handle is 0x%x\n", data.data.uint32);
-// }
-//
-DWORD
-WINAPI
-BluetoothSdpGetAttributeValue(
- LPBYTE pRecordStream,
- ULONG cbRecordLength,
- USHORT usAttributeId,
- PSDP_ELEMENT_DATA pAttributeData
- );
-
-//
-// These three fields correspond one to one with the triplets defined in the
-// SDP specification for the language base attribute ID list.
-//
-typedef struct _SDP_STRING_TYPE_DATA {
- //
- // How the string is encoded according to ISO 639:1988 (E/F): "Code
- // for the representation of names of languages".
- //
- USHORT encoding;
-
- //
- // MIBE number from IANA database
- //
- USHORT mibeNum;
-
- //
- // The base attribute where the string is to be found in the record
- //
- USHORT attributeId;
-
-} SDP_STRING_TYPE_DATA, *PSDP_STRING_TYPE_DATA;
-
-//
-// Description:
-// Converts a raw string embedded in the SDP record into a UNICODE string
-//
-// Parameters:
-// IN pRecordStream
-// a valid SDP stream which is formatted as an SDP record
-//
-// IN cbRecordLength
-// length of pRecordStream in bytes
-//
-// IN pStringData
-// if NULL, then the calling thread's locale will be used to search
-// for a matching string in the SDP record. If not NUL, the mibeNum
-// and attributeId will be used to find the string to convert.
-//
-// IN usStringOffset
-// the SDP string type offset to convert. usStringOffset is added to
-// the base attribute id of the string. SDP specification defined
-// offsets are: STRING_NAME_OFFSET, STRING_DESCRIPTION_OFFSET, and
-// STRING_PROVIDER_NAME_OFFSET (found in bthdef.h).
-//
-// OUT pszString
-// if NULL, pcchStringLength will be filled in with the required number
-// of characters (not bytes) to retrieve the converted string.
-//
-// IN OUT pcchStringLength
-// Upon input, if pszString is not NULL, will contain the length of
-// pszString in characters. Upon output, it will contain either the
-// number of required characters including NULL if an error is returned
-// or the number of characters written to pszString (including NULL).
-//
-// Return Values:
-// ERROR_SUCCES
-// Call was successful and pszString contains the converted string
-//
-// ERROR_MORE_DATA
-// pszString was NULL or too small to contain the converted string,
-// pccxhStringLength contains the required length in characters
-//
-// ERROR_INVALID_DATA
-// Could not perform the conversion
-//
-// ERROR_NO_SYSTEM_RESOURCES
-// Could not allocate memory internally to perform the conversion
-//
-// ERROR_INVALID_PARAMETER
-// One of the rquired pointers was NULL, pRecordStream was not a valid
-// SDP stream, pRecordStream was not a properly formatted record, or
-// the desired attribute + offset was not a string.
-//
-// Other HRESULTs returned by COM
-//
-DWORD
-WINAPI
-BluetoothSdpGetString(
- LPBYTE pRecordStream,
- ULONG cbRecordLength,
- PSDP_STRING_TYPE_DATA pStringData,
- USHORT usStringOffset,
- PWCHAR pszString,
- PULONG pcchStringLength
- );
-
-// ***************************************************************************
-//
-// Raw Attribute Enumeration
-//
-// ***************************************************************************
-
-typedef BOOL (CALLBACK *PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK)(
- ULONG uAttribId,
- LPBYTE pValueStream,
- ULONG cbStreamSize,
- LPVOID pvParam
- );
-
-//
-// Description:
-// Enumerates through the SDP record stream calling the Callback function
-// for each attribute in the record. If the Callback function returns
-// FALSE, the enumeration is stopped.
-//
-// Return Values:
-// TRUE
-// Success! Something was enumerated.
-//
-// FALSE
-// Failure. GetLastError() could be one of the following:
-//
-// ERROR_INVALID_PARAMETER
-// pSDPStream or pfnCallback is NULL.
-//
-// ERROR_INVALID_DATA
-// The SDP stream is corrupt.
-//
-// other Win32 errors.
-//
-#define BluetoothEnumAttributes BluetoothSdpEnumAttributes
-
-BOOL
-WINAPI
-BluetoothSdpEnumAttributes(
- LPBYTE pSDPStream,
- ULONG cbStreamSize,
- PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK pfnCallback,
- LPVOID pvParam
- );
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/cpp/wiiscan/include/DelcomDLL.h b/cpp/wiiscan/include/DelcomDLL.h
deleted file mode 100644
index eb48350..0000000
--- a/cpp/wiiscan/include/DelcomDLL.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Delcom Engineering
-// DelcomDLL.h
-// Version 0.6
-// 02/11/07
-
-#ifndef DELCOMDLL_HEADER
-#define DELCOMDLL_HEADER 1
-
-
-// defines
-#define OFF 0
-#define ON 1
-#define FLASH 2
-
-#define USBIODS 1
-#define USBDELVI 2
-#define USBNDSPY 3
-
-#define GREENLED 0
-#define REDLED 1
-#define BLUELED 2
-
-#define MaxDeviceLen 512
-
-// Typedef
-typedef struct _DeviceNameStruct{
- char DeviceName[MaxDeviceLen];
-} DeviceNameStruct, *pDeviceNameStruct;
-
-
-typedef unsigned long DWORD;
-typedef int BOOL;
-typedef unsigned char BYTE;
-typedef char CHAR;
-typedef unsigned short WORD;
-typedef void * HANDLE;
-typedef CHAR *LPSTR, *PSTR;
-typedef unsigned char uchar;
-typedef unsigned int uint;
-
-typedef struct _PacketStruct{
- uchar Recipient;
- uchar DeviceModel;
- uchar MajorCmd;
- uchar MinorCmd;
- uchar DataLSB;
- uchar DataMSB;
- short Length;
- uchar ExtData[8];
- } PacketStruct,*pPacketStruct;
-
-
-
-
-// DLL Generic Functions
-HANDLE DelcomGetDLLHandle(void);
-double __stdcall DelcomGetDLLVersion(void);
-DWORD __stdcall DelcomGetDLLDate(LPSTR);
-DWORD __stdcall DelcomVerboseControl( DWORD Mode, LPSTR Header );
-
-DWORD __stdcall DelcomGetNthDevice(DWORD, DWORD, LPSTR);
-DWORD __stdcall DelcomScanDevices( DWORD, DeviceNameStruct[], DWORD );
-HANDLE __stdcall DelcomOpenDevice( LPSTR, DWORD);
-DWORD __stdcall DelcomCloseDevice(HANDLE);
-DWORD __stdcall DelcomGetDeviceCount( DWORD Type );
-
-DWORD __stdcall DelcomReadDeviceVersion(HANDLE );
-DWORD __stdcall DelcomReadDeviceSerialNum(LPSTR, HANDLE );
-DWORD __stdcall DelcomSendPacket( HANDLE, pPacketStruct, pPacketStruct);
-
-
-// USBDELVI - Visual Indicator Functions
-DWORD __stdcall DelcomLEDControl( HANDLE hFile, DWORD Color, DWORD Mode );
-DWORD __stdcall DelcomEnableAutoConfirm(HANDLE hUsb, DWORD Mode);
-DWORD __stdcall DelcomEnableAutoClear(HANDLE hUsb, DWORD Mode);
-DWORD __stdcall DelcomBuzzer(HANDLE hUsb, uchar Mode, uchar Freq, uchar Repeat, uchar OnTime, uchar OffTime);
-DWORD __stdcall DelcomLoadInitialPhaseDelay(HANDLE hUsb, BYTE Color, BYTE Delay);
-DWORD __stdcall DelcomSyncLeds(HANDLE hUsb);
-DWORD __stdcall DelcomLoadPreScalar(HANDLE hUsb, BYTE PreScalar);
-DWORD __stdcall DelcomLoadLedFreqDuty(HANDLE hUsb, BYTE Color, BYTE Low, BYTE High);
-DWORD __stdcall DelcomGetButtonStatus(HANDLE hUsb );
-DWORD __stdcall DelcomReadVersionNumber(HANDLE hUsb );
-DWORD __stdcall DelcomReadSerialNumber(HANDLE hUsb );
-DWORD __stdcall DelcomLEDPower( HANDLE hUsb, DWORD Color, DWORD Power );
-
-
-
-// USBIODS - USB IO Functions
-DWORD __stdcall DelcomWritePortPin(HANDLE hUsb, BYTE Port, BYTE Pin, BYTE Value );
-DWORD __stdcall DelcomWritePorts(HANDLE hUsb, BYTE Port0, BYTE Port1 );
-DWORD __stdcall DelcomReadPorts(HANDLE hUsb, BYTE* Port0, BYTE* Port1 );
-
-DWORD __stdcall DelcomWrite64Bit(HANDLE hUsb, LPSTR DataExt );
-DWORD __stdcall DelcomRead64Bit(HANDLE hUsb, LPSTR DataExt );
-
-DWORD __stdcall DelcomWriteI2C(HANDLE hUsb, BYTE CmdAdd, BYTE Length, LPSTR DataExt );
-DWORD __stdcall DelcomReadI2C(HANDLE hUsb, BYTE CmdAdd, BYTE Length, LPSTR DataExt );
-DWORD __stdcall DelcomSelReadI2C(HANDLE hUsb, BYTE SetAddCmd, BYTE Address, BYTE ReadCmd, BYTE Length, LPSTR DataExt );
-DWORD __stdcall DelcomWriteI2CEEPROM(HANDLE hUsb, DWORD Address, DWORD Length, BYTE CtrlCode, BYTE WriteDelay, LPSTR pData );
-DWORD __stdcall DelcomReadI2CEEPROM(HANDLE hUsb, DWORD Address, DWORD Length, BYTE CtrlCode, LPSTR pData );
-
-
-DWORD __stdcall DelcomRS232Ctrl(HANDLE hUsb, DWORD Mode, DWORD Value );
-DWORD __stdcall DelcomWriteRS232(HANDLE hUsb, DWORD Length, LPSTR DataExt );
-DWORD __stdcall DelcomReadRS232(HANDLE hUsb, LPSTR DataExt );
-
- // SPI Commands
-DWORD __stdcall DelcomSPIWrite( HANDLE hUsb, DWORD ClockCount, LPSTR pData);
-DWORD __stdcall DelcomSPISetClock( HANDLE hUsb, DWORD ClockPeriod );
-DWORD __stdcall DelcomSPIRead(HANDLE hUsb, LPSTR pData);
-DWORD __stdcall DelcomSPIWr8Read64( HANDLE hUsb, DWORD WrData, DWORD ClockCount, LPSTR pData);
-
-
-
-// USBNDSPY Functions
-DWORD __stdcall DelcomNumericMode(HANDLE hUsb, BYTE Mode, BYTE Rate );
-DWORD __stdcall DelcomNumericScanRate(HANDLE hUsb, BYTE ScanRate );
-DWORD __stdcall DelcomNumericSetup(HANDLE hUsb, BYTE Digits );
-DWORD __stdcall DelcomNumericRaw(HANDLE hUsb, LPSTR Str );
-DWORD __stdcall DelcomNumericInteger(HANDLE hUsb, DWORD Number, DWORD Base );
-DWORD __stdcall DelcomNumericHexaDecimal(HANDLE hUsb, DWORD Number, DWORD Base );
-DWORD __stdcall DelcomNumericDouble(HANDLE hUsb, double Number, DWORD Base );
-
-
-#endif
diff --git a/cpp/wiiscan/include/bthdef.h b/cpp/wiiscan/include/bthdef.h
deleted file mode 100644
index 37b3f5d..0000000
--- a/cpp/wiiscan/include/bthdef.h
+++ /dev/null
@@ -1,858 +0,0 @@
-/*++
-
-Copyright (c) 2000 Microsoft Corporation
-
-Module Name:
-
- bthdef.h
-
-Abstract:
-
- This module contains the Bluetooth common structures and definitions
-
-Author:
-
-Notes:
-
-Environment:
-
- Kernel mode only
-
-
-Revision History:
-
- --*/
-
-#ifndef __BTHDEF_H__
-#define __BTHDEF_H__
-
-#ifndef GUID_DEFS_ONLY
- #ifndef NO_BTHSDPDEF_INC
- #include "bthsdpdef.h"
- #endif // NO_BTHSDPDEF_INC
-#endif // GUID_DEFS_ONLY
-
-#ifndef NO_GUID_DEFS
-
-// {0850302A-B344-4fda-9BE9-90576B8D46F0}
-DEFINE_GUID(GUID_BTHPORT_DEVICE_INTERFACE, 0x850302a, 0xb344, 0x4fda, 0x9b, 0xe9, 0x90, 0x57, 0x6b, 0x8d, 0x46, 0xf0);
-
-// {EA3B5B82-26EE-450E-B0D8-D26FE30A3869}
-DEFINE_GUID(GUID_BLUETOOTH_RADIO_IN_RANGE, 0xea3b5b82, 0x26ee, 0x450e, 0xb0, 0xd8, 0xd2, 0x6f, 0xe3, 0x0a, 0x38, 0x69);
-
-// {E28867C9-C2AA-4CED-B969-4570866037C4}
-DEFINE_GUID(GUID_BLUETOOTH_RADIO_OUT_OF_RANGE, 0xe28867c9, 0xc2aa, 0x4ced, 0xb9, 0x69, 0x45, 0x70, 0x86, 0x60, 0x37, 0xc4);
-
-// BD198B7C-24AB-4B9A-8C0D-A8EA8349AA16
-DEFINE_GUID(GUID_BLUETOOTH_PIN_REQUEST, 0xbd198b7c, 0x24ab, 0x4b9a, 0x8c, 0x0d, 0xa8, 0xea, 0x83, 0x49, 0xaa, 0x16);
-
-// {7EAE4030-B709-4AA8-AC55-E953829C9DAA}
-DEFINE_GUID(GUID_BLUETOOTH_L2CAP_EVENT, 0x7eae4030, 0xb709, 0x4aa8, 0xac, 0x55, 0xe9, 0x53, 0x82, 0x9c, 0x9d, 0xaa);
-
-// {FC240062-1541-49BE-B463-84C4DCD7BF7F}
-DEFINE_GUID(GUID_BLUETOOTH_HCI_EVENT, 0xfc240062, 0x1541, 0x49be, 0xb4, 0x63, 0x84, 0xc4, 0xdc, 0xd7, 0xbf, 0x7f);
-
-//
-// Bluetooth base UUID for service discovery
-//
-DEFINE_GUID(Bluetooth_Base_UUID, 0x00000000, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-
-//
-// UUID for the root of the browse group list
-//
-
-DEFINE_GUID(SDP_PROTOCOL_UUID, 0x00000001, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(UDP_PROTOCOL_UUID, 0x00000002, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(RFCOMM_PROTOCOL_UUID, 0x00000003, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(TCP_PROTOCOL_UUID, 0x00000004, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(TCSBIN_PROTOCOL_UUID, 0x00000005, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(TCSAT_PROTOCOL_UUID, 0x00000006, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(OBEX_PROTOCOL_UUID, 0x00000008, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(IP_PROTOCOL_UUID, 0x00000009, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(FTP_PROTOCOL_UUID, 0x0000000A, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HTTP_PROTOCOL_UUID, 0x0000000C, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(WSP_PROTOCOL_UUID, 0x0000000E, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(BNEP_PROTOCOL_UUID, 0x0000000F, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(UPNP_PROTOCOL_UUID, 0x00000010, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HID_PROTOCOL_UUID, 0x00000011, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HCCC_PROTOCOL_UUID, 0x00000012, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HCDC_PROTOCOL_UUID, 0x00000014, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HN_PROTOCOL_UUID, 0x00000016, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AVCTP_PROTOCOL_UUID, 0x00000017, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AVDTP_PROTOCOL_UUID, 0x00000019, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(CMPT_PROTOCOL_UUID, 0x0000001B, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(UDI_C_PLANE_PROTOCOL_UUID, 0x0000001D, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(L2CAP_PROTOCOL_UUID, 0x00000100, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-
-#define SDP_PROTOCOL_UUID16 (0x0001)
-#define UDP_PROTOCOL_UUID16 (0x0002)
-#define RFCOMM_PROTOCOL_UUID16 (0x0003)
-#define TCP_PROTOCOL_UUID16 (0x0004)
-#define TCSBIN_PROTOCOL_UUID16 (0x0005)
-#define TCSAT_PROTOCOL_UUID16 (0x0006)
-#define OBEX_PROTOCOL_UUID16 (0x0008)
-#define IP_PROTOCOL_UUID16 (0x0009)
-#define FTP_PROTOCOL_UUID16 (0x000A)
-#define HTTP_PROTOCOL_UUID16 (0x000C)
-#define WSP_PROTOCOL_UUID16 (0x000E)
-#define BNEP_PROTOCOL_UUID16 (0x000F)
-#define UPNP_PROTOCOL_UUID16 (0x0010)
-#define HID_PROTOCOL_UUID16 (0x0011)
-#define HCCC_PROTOCOL_UUID16 (0x0012)
-#define HCDC_PROTOCOL_UUID16 (0x0014)
-#define HCN_PROTOCOL_UUID16 (0x0016)
-#define AVCTP_PROTOCOL_UUID16 (0x0017)
-#define AVDTP_PROTOCOL_UUID16 (0x0019)
-#define CMPT_PROTOCOL_UUID16 (0x001B)
-#define UDI_C_PLANE_PROTOCOL_UUID16 (0x001D)
-#define L2CAP_PROTOCOL_UUID16 (0x0100)
-
-DEFINE_GUID(ServiceDiscoveryServerServiceClassID_UUID, 0x00001000, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(BrowseGroupDescriptorServiceClassID_UUID, 0x00001001, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(PublicBrowseGroupServiceClass_UUID, 0x00001002, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(SerialPortServiceClass_UUID, 0x00001101, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(LANAccessUsingPPPServiceClass_UUID, 0x00001102, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(DialupNetworkingServiceClass_UUID, 0x00001103, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(IrMCSyncServiceClass_UUID, 0x00001104, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(OBEXObjectPushServiceClass_UUID, 0x00001105, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(OBEXFileTransferServiceClass_UUID, 0x00001106, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(IrMCSyncCommandServiceClass_UUID, 0x00001107, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HeadsetServiceClass_UUID, 0x00001108, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(CordlessTelephonyServiceClass_UUID, 0x00001109, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AudioSourceServiceClass_UUID, 0x0000110A, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AudioSinkServiceClass_UUID, 0x0000110B, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AVRemoteControlTargetServiceClass_UUID, 0x0000110C, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AdvancedAudioDistributionServiceClass_UUID,0x0000110D, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AVRemoteControlServiceClass_UUID, 0x0000110E, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(VideoConferencingServiceClass_UUID, 0x0000110F, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(IntercomServiceClass_UUID, 0x00001110, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(FaxServiceClass_UUID, 0x00001111, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HeadsetAudioGatewayServiceClass_UUID, 0x00001112, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(WAPServiceClass_UUID, 0x00001113, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(WAPClientServiceClass_UUID, 0x00001114, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(PANUServiceClass_UUID, 0x00001115, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(NAPServiceClass_UUID, 0x00001116, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(GNServiceClass_UUID, 0x00001117, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(DirectPrintingServiceClass_UUID, 0x00001118, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ReferencePrintingServiceClass_UUID, 0x00001119, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ImagingServiceClass_UUID, 0x0000111A, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ImagingResponderServiceClass_UUID, 0x0000111B, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ImagingAutomaticArchiveServiceClass_UUID, 0x0000111C, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ImagingReferenceObjectsServiceClass_UUID, 0x0000111D, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HandsfreeServiceClass_UUID, 0x0000111E, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HandsfreeAudioGatewayServiceClass_UUID, 0x0000111F, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(DirectPrintingReferenceObjectsServiceClass_UUID,
- 0x00001120, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(ReflectedUIServiceClass_UUID, 0x00001121, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(BasicPringingServiceClass_UUID, 0x00001122, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(PrintingStatusServiceClass_UUID, 0x00001123, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HumanInterfaceDeviceServiceClass_UUID, 0x00001124, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HardcopyCableReplacementServiceClass_UUID, 0x00001125, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HCRPrintServiceClass_UUID, 0x00001126, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(HCRScanServiceClass_UUID, 0x00001127, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(CommonISDNAccessServiceClass_UUID, 0x00001128, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(VideoConferencingGWServiceClass_UUID, 0x00001129, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(UDIMTServiceClass_UUID, 0x0000112A, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(UDITAServiceClass_UUID, 0x0000112B, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(AudioVideoServiceClass_UUID, 0x0000112C, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(PnPInformationServiceClass_UUID, 0x00001200, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(GenericNetworkingServiceClass_UUID, 0x00001201, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(GenericFileTransferServiceClass_UUID, 0x00001202, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(GenericAudioServiceClass_UUID, 0x00001203, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-DEFINE_GUID(GenericTelephonyServiceClass_UUID, 0x00001204, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB);
-
-#define ServiceDiscoveryServerServiceClassID_UUID16 (0x1000)
-#define BrowseGroupDescriptorServiceClassID_UUID16 (0x1001)
-#define PublicBrowseGroupServiceClassID_UUID16 (0x1002)
-#define SerialPortServiceClassID_UUID16 (0x1101)
-#define LANAccessUsingPPPServiceClassID_UUID16 (0x1102)
-#define DialupNetworkingServiceClassID_UUID16 (0x1103)
-#define IrMCSyncServiceClassID_UUID16 (0x1104)
-#define OBEXObjectPushServiceClassID_UUID16 (0x1105)
-#define OBEXFileTransferServiceClassID_UUID16 (0x1106)
-#define IrMcSyncCommandServiceClassID_UUID16 (0x1107)
-#define HeadsetServiceClassID_UUID16 (0x1108)
-#define CordlessServiceClassID_UUID16 (0x1109)
-#define AudioSourceServiceClassID_UUID16 (0x110A)
-#define AudioSinkSourceServiceClassID_UUID16 (0x110B)
-#define AVRemoteControlTargetServiceClassID_UUID16 (0x110C)
-#define AdvancedAudioDistributionServiceClassID_UUID16 (0x110D)
-#define AVRemoteControlServiceClassID_UUID16 (0x110E)
-#define VideoConferencingServiceClassID_UUID16 (0x110F)
-#define IntercomServiceClassID_UUID16 (0x1110)
-#define FaxServiceClassID_UUID16 (0x1111)
-#define HeadsetAudioGatewayServiceClassID_UUID16 (0x1112)
-#define WAPServiceClassID_UUID16 (0x1113)
-#define WAPClientServiceClassID_UUID16 (0x1114)
-#define PANUServiceClassID_UUID16 (0x1115)
-#define NAPServiceClassID_UUID16 (0x1116)
-#define GNServiceClassID_UUID16 (0x1117)
-#define DirectPrintingServiceClassID_UUID16 (0x1118)
-#define ReferencePrintingServiceClassID_UUID16 (0x1119)
-#define ImagingServiceClassID_UUID16 (0x111A)
-#define ImagingResponderServiceClassID_UUID16 (0x111B)
-#define ImagingAutomaticArchiveServiceClassID_UUID16 (0x111C)
-#define ImagingReferenceObjectsServiceClassID_UUID16 (0x111D)
-#define HandsfreeServiceClassID_UUID16 (0x111E)
-#define HandsfreeAudioGatewayServiceClassID_UUID16 (0x111F)
-#define DirectPrintingReferenceObjectsServiceClassID_UUID16 \
- (0x1120)
-#define ReflectsUIServiceClassID_UUID16 (0x1121)
-#define BasicPrintingServiceClassID_UUID16 (0x1122)
-#define PrintingStatusServiceClassID_UUID16 (0x1123)
-#define HumanInterfaceDeviceServiceClassID_UUID16 (0x1124)
-#define HardcopyCableReplacementServiceClassID_UUID16 (0x1125)
-#define HCRPrintServiceClassID_UUID16 (0x1126)
-#define HCRScanServiceClassID_UUID16 (0x1127)
-#define CommonISDNAccessServiceClass_UUID16 (0x1128)
-#define VideoConferencingGWServiceClass_UUID16 (0x1129)
-#define UDIMTServiceClass_UUID16 (0x112A)
-#define UDITAServiceClass_UUID16 (0x112B)
-#define AudioVideoServiceClass_UUID16 (0x112C)
-
-#define PnPInformationServiceClassID_UUID16 (0x1200)
-#define GenericNetworkingServiceClassID_UUID16 (0x1201)
-#define GenericFileTransferServiceClassID_UUID16 (0x1202)
-#define GenericAudioServiceClassID_UUID16 (0x1203)
-#define GenericTelephonyServiceClassID_UUID16 (0x1204)
-
-#endif // NO_GUID_DEFS
-
-#ifndef GUID_DEFS_ONLY
-
-//
-// max length of device friendly name.
-//
-#define BTH_MAX_NAME_SIZE (248)
-
-#define BTH_MAX_PIN_SIZE (16)
-#define BTH_LINK_KEY_LENGTH (16)
-
-#define BTH_MFG_ERICSSON (0)
-#define BTH_MFG_NOKIA (1)
-#define BTH_MFG_INTEL (2)
-#define BTH_MFG_IBM (3)
-#define BTH_MFG_TOSHIBA (4)
-#define BTH_MFG_3COM (5)
-#define BTH_MFG_MICROSOFT (6)
-#define BTH_MFG_LUCENT (7)
-#define BTH_MFG_MOTOROLA (8)
-#define BTH_MFG_INFINEON (9)
-#define BTH_MFG_CSR (10)
-#define BTH_MFG_SILICONWAVE (11)
-#define BTH_MFG_DIGIANSWER (12)
-#define BTH_MFG_TI (13)
-#define BTH_MFG_PARTHUS (14)
-#define BTH_MFG_BROADCOM (15)
-#define BTH_MFG_MITEL (16)
-#define BTH_MFG_WIDCOMM (17)
-#define BTH_MFG_ZEEVO (18)
-#define BTH_MFG_ATMEL (19)
-#define BTH_MFG_MITSIBUSHI (20)
-#define BTH_MFG_RTX_TELECOM (21)
-#define BTH_MFG_KC_TECHNOLOGY (22)
-#define BTH_MFG_NEWLOGIC (23)
-#define BTH_MFG_TRANSILICA (24)
-#define BTH_MFG_ROHDE_SCHWARZ (25)
-#define BTH_MFG_TTPCOM (26)
-#define BTH_MFG_SIGNIA (27)
-#define BTH_MFG_CONEXANT (28)
-#define BTH_MFG_QUALCOMM (29)
-#define BTH_MFG_INVENTEL (30)
-#define BTH_MFG_AVM_BERLIN (31)
-#define BTH_MFG_BANDSPEED (32)
-#define BTH_MFG_MANSELLA (33)
-#define BTH_MFG_NEC (34)
-#define BTH_MFG_WAVEPLUS_TECHNOLOGY_CO (35)
-#define BTH_MFG_ALCATEL (36)
-#define BTH_MFG_PHILIPS_SEMICONDUCTOR (37)
-#define BTH_MFG_C_TECHNOLOGIES (38)
-#define BTH_MFG_OPEN_INTERFACE (39)
-#define BTH_MFG_RF_MICRO_DEVICES (40)
-#define BTH_MFG_HITACHI (41)
-#define BTH_MFG_SYMBOL_TECHNOLOGIES (42)
-#define BTH_MFG_TENOVIS (43)
-#define BTH_MFG_MACRONIX_INTERNATIONAL (44)
-#define BTH_MFG_INTERNAL_USE (65535)
-
-typedef ULONGLONG BTH_ADDR, *PBTH_ADDR;
-typedef ULONG BTH_COD, *PBTH_COD;
-typedef ULONG BTH_LAP, *PBTH_LAP;
-
-#define BTH_ADDR_NULL ((ULONGLONG) 0x0000000000000000)
-
-#define NAP_MASK ((ULONGLONG) 0xFFFF00000000)
-#define SAP_MASK ((ULONGLONG) 0x0000FFFFFFFF)
-
-#define NAP_BIT_OFFSET (8 * 4)
-#define SAP_BIT_OFFSET (0)
-
-#define GET_NAP(_bth_addr) ((USHORT) (((_bth_addr) & NAP_MASK) >> NAP_BIT_OFFSET))
-#define GET_SAP(_bth_addr) ((ULONG) (((_bth_addr) & SAP_MASK) >> SAP_BIT_OFFSET))
-
-#define SET_NAP(_nap) (((ULONGLONG) ((USHORT) (_nap))) << NAP_BIT_OFFSET)
-#define SET_SAP(_sap) (((ULONGLONG) ((ULONG) (_sap))) << SAP_BIT_OFFSET)
-
-#define SET_NAP_SAP(_nap, _sap) (SET_NAP(_nap) | SET_SAP(_sap))
-
-#define COD_FORMAT_BIT_OFFSET (0)
-#define COD_MINOR_BIT_OFFSET (2)
-#define COD_MAJOR_BIT_OFFSET (8 * 1)
-#define COD_SERVICE_BIT_OFFSET (8 * 1 + 5)
-
-#define COD_FORMAT_MASK (0x000003)
-#define COD_MINOR_MASK (0x0000FC)
-#define COD_MAJOR_MASK (0x001F00)
-#define COD_SERVICE_MASK (0xFFE000)
-
-
-#define GET_COD_FORMAT(_cod) ( (_cod) & COD_FORMAT_MASK >> COD_FORMAT_BIT_OFFSET)
-#define GET_COD_MINOR(_cod) (((_cod) & COD_MINOR_MASK) >> COD_MINOR_BIT_OFFSET)
-#define GET_COD_MAJOR(_cod) (((_cod) & COD_MAJOR_MASK) >> COD_MAJOR_BIT_OFFSET)
-#define GET_COD_SERVICE(_cod) (((_cod) & COD_SERVICE_MASK) >> COD_SERVICE_BIT_OFFSET)
-
-#define SET_COD_MINOR(_cod, _minor) (_cod) = ((_cod) & ~COD_MINOR_MASK) | ((_minor) << COD_MINOR_BIT_OFFSET)
-#define SET_COD_MAJOR(_cod, _major) (_cod) = ((_cod) & ~COD_MAJOR_MASK) | ((_major) << COD_MAJOR_BIT_OFFSET)
-#define SET_COD_SERVICE(_cod, _service) (_cod) = ((_cod) & ~COD_SERVICE_MASK) | ((_service) << COD_SERVICE_BIT_OFFSET)
-
-#define COD_VERSION (0x0)
-
-#define COD_SERVICE_LIMITED (0x0001)
-#define COD_SERVICE_POSITIONING (0x0008)
-#define COD_SERVICE_NETWORKING (0x0010)
-#define COD_SERVICE_RENDERING (0x0020)
-#define COD_SERVICE_CAPTURING (0x0040)
-#define COD_SERVICE_OBJECT_XFER (0x0080)
-#define COD_SERVICE_AUDIO (0x0100)
-#define COD_SERVICE_TELEPHONY (0x0200)
-#define COD_SERVICE_INFORMATION (0x0400)
-
-#define COD_SERVICE_VALID_MASK (COD_SERVICE_LIMITED | \
- COD_SERVICE_POSITIONING | \
- COD_SERVICE_NETWORKING | \
- COD_SERVICE_RENDERING | \
- COD_SERVICE_CAPTURING | \
- COD_SERVICE_OBJECT_XFER |\
- COD_SERVICE_AUDIO |\
- COD_SERVICE_TELEPHONY |\
- COD_SERVICE_INFORMATION)
-
-#define COD_SERVICE_MAX_COUNT (9)
-
-//
-// Major class codes
-//
-#define COD_MAJOR_MISCELLANEOUS (0x00)
-#define COD_MAJOR_COMPUTER (0x01)
-#define COD_MAJOR_PHONE (0x02)
-#define COD_MAJOR_LAN_ACCESS (0x03)
-#define COD_MAJOR_AUDIO (0x04)
-#define COD_MAJOR_PERIPHERAL (0x05)
-#define COD_MAJOR_IMAGING (0x06)
-#define COD_MAJOR_UNCLASSIFIED (0x1F)
-
-//
-// Minor class codes specific to each major class
-//
-#define COD_COMPUTER_MINOR_UNCLASSIFIED (0x00)
-#define COD_COMPUTER_MINOR_DESKTOP (0x01)
-#define COD_COMPUTER_MINOR_SERVER (0x02)
-#define COD_COMPUTER_MINOR_LAPTOP (0x03)
-#define COD_COMPUTER_MINOR_HANDHELD (0x04)
-#define COD_COMPUTER_MINOR_PALM (0x05)
-#define COD_COMPUTER_MINOR_WEARABLE (0x06)
-
-#define COD_PHONE_MINOR_UNCLASSIFIED (0x00)
-#define COD_PHONE_MINOR_CELLULAR (0x01)
-#define COD_PHONE_MINOR_CORDLESS (0x02)
-#define COD_PHONE_MINOR_SMART (0x03)
-#define COD_PHONE_MINOR_WIRED_MODEM (0x04)
-
-#define COD_AUDIO_MINOR_UNCLASSIFIED (0x00)
-#define COD_AUDIO_MINOR_HEADSET (0x01)
-#define COD_AUDIO_MINOR_HANDS_FREE (0x02)
-#define COD_AUDIO_MINOR_HEADSET_HANDS_FREE (0x03)
-#define COD_AUDIO_MINOR_MICROPHONE (0x04)
-#define COD_AUDIO_MINOR_LOUDSPEAKER (0x05)
-#define COD_AUDIO_MINOR_HEADPHONES (0x06)
-#define COD_AUDIO_MINOR_PORTABLE_AUDIO (0x07)
-#define COD_AUDIO_MINOR_CAR_AUDIO (0x08)
-#define COD_AUDIO_MINOR_SET_TOP_BOX (0x09)
-#define COD_AUDIO_MINOR_HIFI_AUDIO (0x0A)
-#define COD_AUDIO_MINOR_VCR (0x0B)
-#define COD_AUDIO_MINOR_VIDEO_CAMERA (0x0C)
-#define COD_AUDIO_MINOR_CAMCORDER (0x0D)
-#define COD_AUDIO_MINOR_VIDEO_MONITOR (0x0E)
-#define COD_AUDIO_MINOR_VIDEO_DISPLAY_LOUDSPEAKER \
- (0x0F)
-#define COD_AUDIO_MINOR_VIDEO_DISPLAY_CONFERENCING \
- (0x10)
-// #define COD_AUDIO_MINOR_RESERVED (0x11)
-#define COD_AUDIO_MINOR_GAMING_TOY (0x12)
-
-#define COD_PERIPHERAL_MINOR_KEYBOARD_MASK (0x10)
-#define COD_PERIPHERAL_MINOR_POINTER_MASK (0x20)
-
-#define COD_PERIPHERAL_MINOR_NO_CATEGORY (0x00)
-#define COD_PERIPHERAL_MINOR_JOYSTICK (0x01)
-#define COD_PERIPHERAL_MINOR_GAMEPAD (0x02)
-#define COD_PERIPHERAL_MINOR_REMOTE_CONTROL (0x03)
-#define COD_PERIPHERAL_MINOR_SENSING (0x04)
-
-#define COD_IMAGING_MINOR_DISPLAY_MASK (0x04)
-#define COD_IMAGING_MINOR_CAMERA_MASK (0x08)
-#define COD_IMAGING_MINOR_SCANNER_MASK (0x10)
-#define COD_IMAGING_MINOR_PRINTER_MASK (0x20)
-
-//
-// Cannot use GET_COD_MINOR for this b/c it is embedded in a different manner
-// than the rest of the major classes
-//
-
-#define COD_LAN_ACCESS_BIT_OFFSET (5)
-
-#define COD_LAN_MINOR_MASK (0x00001C)
-#define COD_LAN_ACCESS_MASK (0x0000E0)
-
-#define GET_COD_LAN_MINOR(_cod) (((_cod) & COD_LAN_MINOR_MASK) >> COD_MINOR_BIT_OFFSET)
-#define GET_COD_LAN_ACCESS(_cod) (((_cod) & COD_LAN_ACCESS_MASK) >> COD_LAN_ACCESS_BIT_OFFSET)
-
-//
-// LAN access percent usage subcodes
-//
-#define COD_LAN_MINOR_UNCLASSIFIED (0x00)
-
-#define COD_LAN_ACCESS_0_USED (0x00)
-#define COD_LAN_ACCESS_17_USED (0x01)
-#define COD_LAN_ACCESS_33_USED (0x02)
-#define COD_LAN_ACCESS_50_USED (0x03)
-#define COD_LAN_ACCESS_67_USED (0x04)
-#define COD_LAN_ACCESS_83_USED (0x05)
-#define COD_LAN_ACCESS_99_USED (0x06)
-#define COD_LAN_ACCESS_FULL (0x07)
-
-//
-// Used as an initializer of LAP_DATA
-//
-#define LAP_GIAC_INIT { 0x33, 0x8B, 0x9E }
-#define LAP_LIAC_INIT { 0x00, 0x8B, 0x9E }
-
-//
-// General Inquiry Access Code.
-//
-#define LAP_GIAC_VALUE (0x009E8B33)
-
-//
-// Limited Inquiry Access Code.
-//
-#define LAP_LIAC_VALUE (0x009E8B00)
-
-#define BTH_ADDR_IAC_FIRST (0x9E8B00)
-#define BTH_ADDR_IAC_LAST (0x9E8B3f)
-#define BTH_ADDR_LIAC (0x9E8B00)
-#define BTH_ADDR_GIAC (0x9E8B33)
-
-typedef UCHAR BTHSTATUS, *PBTHSTATUS;
-
-#define BTH_ERROR(_btStatus) ((_btStatus) != BTH_ERROR_SUCCESS)
-#define BTH_SUCCESS(_btStatus) ((_btStatus) == BTH_ERROR_SUCCESS)
-
-#define BTH_ERROR_SUCCESS (0x00)
-#define BTH_ERROR_UNKNOWN_HCI_COMMAND (0x01)
-#define BTH_ERROR_NO_CONNECTION (0x02)
-#define BTH_ERROR_HARDWARE_FAILURE (0x03)
-#define BTH_ERROR_PAGE_TIMEOUT (0x04)
-#define BTH_ERROR_AUTHENTICATION_FAILURE (0x05)
-#define BTH_ERROR_KEY_MISSING (0x06)
-#define BTH_ERROR_MEMORY_FULL (0x07)
-#define BTH_ERROR_CONNECTION_TIMEOUT (0x08)
-#define BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS (0x09)
-#define BTH_ERROR_MAX_NUMBER_OF_SCO_CONNECTIONS (0x0a)
-#define BTH_ERROR_ACL_CONNECTION_ALREADY_EXISTS (0x0b)
-#define BTH_ERROR_COMMAND_DISALLOWED (0x0c)
-#define BTH_ERROR_HOST_REJECTED_LIMITED_RESOURCES (0x0d)
-#define BTH_ERROR_HOST_REJECTED_SECURITY_REASONS (0x0e)
-#define BTH_ERROR_HOST_REJECTED_PERSONAL_DEVICE (0x0f)
-#define BTH_ERROR_HOST_TIMEOUT (0x10)
-#define BTH_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER (0x11)
-#define BTH_ERROR_INVALID_HCI_PARAMETER (0x12)
-#define BTH_ERROR_REMOTE_USER_ENDED_CONNECTION (0x13)
-#define BTH_ERROR_REMOTE_LOW_RESOURCES (0x14)
-#define BTH_ERROR_REMOTE_POWERING_OFF (0x15)
-#define BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION (0x16)
-#define BTH_ERROR_REPEATED_ATTEMPTS (0x17)
-#define BTH_ERROR_PAIRING_NOT_ALLOWED (0x18)
-#define BTH_ERROR_UKNOWN_LMP_PDU (0x19)
-#define BTH_ERROR_UNSUPPORTED_REMOTE_FEATURE (0x1a)
-#define BTH_ERROR_SCO_OFFSET_REJECTED (0x1b)
-#define BTH_ERROR_SCO_INTERVAL_REJECTED (0x1c)
-#define BTH_ERROR_SCO_AIRMODE_REJECTED (0x1d)
-#define BTH_ERROR_INVALID_LMP_PARAMETERS (0x1e)
-#define BTH_ERROR_UNSPECIFIED_ERROR (0x1f)
-#define BTH_ERROR_UNSUPPORTED_LMP_PARM_VALUE (0x20)
-#define BTH_ERROR_ROLE_CHANGE_NOT_ALLOWED (0x21)
-#define BTH_ERROR_LMP_RESPONSE_TIMEOUT (0x22)
-#define BTH_ERROR_LMP_TRANSACTION_COLLISION (0x23)
-#define BTH_ERROR_LMP_PDU_NOT_ALLOWED (0x24)
-#define BTH_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE (0x25)
-#define BTH_ERROR_UNIT_KEY_NOT_USED (0x26)
-#define BTH_ERROR_QOS_IS_NOT_SUPPORTED (0x27)
-#define BTH_ERROR_INSTANT_PASSED (0x28)
-#define BTH_ERROR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED (0x29)
-
-#define BTH_ERROR_UNSPECIFIED (0xFF)
-
-//
-// Min, max, and default L2cap MTU.
-//
-#define L2CAP_MIN_MTU (48)
-#define L2CAP_MAX_MTU (0xFFFF)
-#define L2CAP_DEFAULT_MTU (672)
-
-//
-// Max l2cap signal size (48) - size of signal header (4)
-//
-#define MAX_L2CAP_PING_DATA_LENGTH (44)
-#define MAX_L2CAP_INFO_DATA_LENGTH (44)
-
-//
-// the following two structures provides information about
-// disocvered remote radios.
-//
-
-#define BDIF_ADDRESS (0x00000001)
-#define BDIF_COD (0x00000002)
-#define BDIF_NAME (0x00000004)
-#define BDIF_PAIRED (0x00000008)
-#define BDIF_PERSONAL (0x00000010)
-#define BDIF_CONNECTED (0x00000020)
-
-#define BDIF_VALID_FLAGS \
- (BDIF_ADDRESS | BDIF_COD | BDIF_NAME | BDIF_PAIRED | BDIF_PERSONAL | \
- BDIF_CONNECTED)
-
-typedef struct _BTH_DEVICE_INFO {
- //
- // Combination BDIF_Xxx flags
- //
- ULONG flags;
-
- //
- // Address of remote device.
- //
- BTH_ADDR address;
-
- //
- // Class Of Device.
- //
- BTH_COD classOfDevice;
-
- //
- // name of the device
- //
- CHAR name[BTH_MAX_NAME_SIZE];
-
-} BTH_DEVICE_INFO, *PBTH_DEVICE_INFO;
-
-//
-// Buffer associated with GUID_BLUETOOTH_RADIO_IN_RANGE
-//
-typedef struct _BTH_RADIO_IN_RANGE {
- //
- // Information about the remote radio
- //
- BTH_DEVICE_INFO deviceInfo;
-
- //
- // The previous flags value for the BTH_DEVICE_INFO. The receiver of this
- // notification can compare the deviceInfo.flags and previousDeviceFlags
- // to determine what has changed about this remote radio.
- //
- // For instance, if BDIF_NAME is set in deviceInfo.flags and not in
- // previousDeviceFlags, the remote radio's has just been retrieved.
- //
- ULONG previousDeviceFlags;
-
-} BTH_RADIO_IN_RANGE, *PBTH_RADIO_IN_RANGE;
-
-//
-// Buffer associated with GUID_BLUETOOTH_L2CAP_EVENT
-//
-typedef struct _BTH_L2CAP_EVENT_INFO {
- //
- // Remote radio address which the L2CAP event is associated with
- //
- BTH_ADDR bthAddress;
-
- //
- // The PSM that is either being connected to or disconnected from
- //
- USHORT psm;
-
- //
- // If != 0, then the channel has just been established. If == 0, then the
- // channel has been destroyed. Notifications for a destroyed channel will
- // only be sent for channels successfully established.
- //
- UCHAR connected;
-
- //
- // If != 0, then the local host iniated the l2cap connection. If == 0, then
- // the remote host initated the connection. This field is only valid if
- // connect is != 0.
- //
- UCHAR initiated;
-
-} BTH_L2CAP_EVENT_INFO, *PBTH_L2CAP_EVENT_INFO;
-
-#define HCI_CONNNECTION_TYPE_ACL (1)
-#define HCI_CONNNECTION_TYPE_SCO (2)
-
-//
-// Buffer associated with GUID_BLUETOOTH_HCI_EVENT
-//
-typedef struct _BTH_HCI_EVENT_INFO {
- //
- // Remote radio address which the HCI event is associated with
- //
- BTH_ADDR bthAddress;
-
- //
- // HCI_CONNNECTION_TYPE_XXX value
- //
- UCHAR connectionType;
-
- //
- // If != 0, then the underlying connection to the remote radio has just
- // been estrablished. If == 0, then the underlying conneciton has just been
- // destroyed.
- //
- UCHAR connected;
-
-} BTH_HCI_EVENT_INFO, *PBTH_HCI_EVENT_INFO;
-
-#define MAX_UUIDS_IN_QUERY (12)
-
-#define BTH_VID_DEFAULT_VALUE (0xFFFF)
-
-#define SDP_ERROR_INVALID_SDP_VERSION (0x0001)
-#define SDP_ERROR_INVALID_RECORD_HANDLE (0x0002)
-#define SDP_ERROR_INVALID_REQUEST_SYNTAX (0x0003)
-#define SDP_ERROR_INVALID_PDU_SIZE (0x0004)
-#define SDP_ERROR_INVALID_CONTINUATION_STATE (0x0005)
-#define SDP_ERROR_INSUFFICIENT_RESOURCES (0x0006)
-
-//
-// Defined by windows to handle server errors that are not described by the
-// above errors. Start at 0x0100 so we don't go anywhere near the spec
-// defined values.
-//
-
-//
-// Success, nothing went wrong
-//
-#define SDP_ERROR_SUCCESS ((SDP_ERROR) 0x0000)
-
-//
-// The SDP PDU or parameters other than the SDP stream response was not correct
-//
-#define SDP_ERROR_SERVER_INVALID_RESPONSE ((SDP_ERROR) 0x0100)
-
-//
-// The SDP response stream did not parse correctly.
-//
-#define SDP_ERROR_SERVER_RESPONSE_DID_NOT_PARSE ((SDP_ERROR) 0x0200)
-
-//
-// The SDP response stream was successfully parsed, but did not match the
-// required format for the query.
-//
-#define SDP_ERROR_SERVER_BAD_FORMAT ((SDP_ERROR) 0x0300)
-
-//
-// SDP was unable to send a continued query back to the server
-//
-#define SDP_ERROR_COULD_NOT_SEND_CONTINUE ((SDP_ERROR) 0x0400)
-
-//
-// Server sent a response that was too large to fit in the caller's buffer.
-//
-#define SDP_ERROR_RESPONSE_TOO_LARGE ((SDP_ERROR) 0x0500)
-
-
-#define SDP_ATTRIB_RECORD_HANDLE (0x0000)
-#define SDP_ATTRIB_CLASS_ID_LIST (0x0001)
-#define SDP_ATTRIB_RECORD_STATE (0x0002)
-#define SDP_ATTRIB_SERVICE_ID (0x0003)
-#define SDP_ATTRIB_PROTOCOL_DESCRIPTOR_LIST (0x0004)
-#define SDP_ATTRIB_BROWSE_GROUP_LIST (0x0005)
-#define SDP_ATTRIB_LANG_BASE_ATTRIB_ID_LIST (0x0006)
-#define SDP_ATTRIB_INFO_TIME_TO_LIVE (0x0007)
-#define SDP_ATTRIB_AVAILABILITY (0x0008)
-#define SDP_ATTRIB_PROFILE_DESCRIPTOR_LIST (0x0009)
-#define SDP_ATTRIB_DOCUMENTATION_URL (0x000A)
-#define SDP_ATTRIB_CLIENT_EXECUTABLE_URL (0x000B)
-#define SDP_ATTRIB_ICON_URL (0x000C)
-#define SDP_ATTRIB_ADDITIONAL_PROTOCOL_DESCRIPTOR_LIST \
- (0x000D)
-
-//
-// Attribute IDs in the range of 0x000D - 0x01FF are reserved for future use
-//
-#define SDP_ATTRIB_PROFILE_SPECIFIC (0x0200)
-
-#define LANG_BASE_LANGUAGE_INDEX (0x0000)
-#define LANG_BASE_ENCODING_INDEX (0x0001)
-#define LANG_BASE_OFFSET_INDEX (0x0002)
-#define LANG_DEFAULT_ID (0x0100)
-
-#define STRING_NAME_OFFSET (0x0000)
-#define STRING_DESCRIPTION_OFFSET (0x0001)
-#define STRING_PROVIDER_NAME_OFFSET (0x0002)
-
-#define SDP_ATTRIB_SDP_VERSION_NUMBER_LIST (0x0200)
-#define SDP_ATTRIB_SDP_DATABASE_STATE (0x0201)
-
-#define SDP_ATTRIB_BROWSE_GROUP_ID (0x0200)
-
-#define SDP_ATTRIB_CORDLESS_EXTERNAL_NETWORK (0x0301)
-
-#define SDP_ATTRIB_FAX_CLASS_1_SUPPORT (0x0302)
-#define SDP_ATTRIB_FAX_CLASS_2_0_SUPPORT (0x0303)
-#define SDP_ATTRIB_FAX_CLASS_2_SUPPORT (0x0304)
-#define SDP_ATTRIB_FAX_AUDIO_FEEDBACK_SUPPORT (0x0305)
-
-#define SDP_ATTRIB_HEADSET_REMOTE_AUDIO_VOLUME_CONTROL (0x0302)
-
-#define SDP_ATTRIB_LAN_LPSUBNET (0x0200)
-
-#define SDP_ATTRIB_OBJECT_PUSH_SUPPORTED_FORMATS_LIST (0x0303)
-
-#define SDP_ATTRIB_SYNCH_SUPPORTED_DATA_STORES_LIST (0x0301)
-
-// this is in the assigned numbers doc, but it does not show up in any profile
-#define SDP_ATTRIB_SERVICE_VERSION (0x0300)
-
-#define SDP_ATTRIB_PAN_NETWORK_ADDRESS (0x0306)
-#define SDP_ATTRIB_PAN_WAP_GATEWAY (0x0307)
-#define SDP_ATTRIB_PAN_HOME_PAGE_URL (0x0308)
-#define SDP_ATTRIB_PAN_WAP_STACK_TYPE (0x0309)
-#define SDP_ATTRIB_PAN_SECURITY_DESCRIPTION (0x030A)
-#define SDP_ATTRIB_PAN_NET_ACCESS_TYPE (0x030B)
-#define SDP_ATTRIB_PAN_MAX_NET_ACCESS_RATE (0x030C)
-
-#define SDP_ATTRIB_IMAGING_SUPPORTED_CAPABILITIES (0x0310)
-#define SDP_ATTRIB_IMAGING_SUPPORTED_FEATURES (0x0311)
-#define SDP_ATTRIB_IMAGING_SUPPORTED_FUNCTIONS (0x0312)
-#define SDP_ATTRIB_IMAGING_TOTAL_DATA_CAPACITY (0x0313)
-
-#define SDP_ATTRIB_DI_SPECIFICATION_ID (0x0200)
-#define SDP_ATTRIB_DI_VENDOR_ID (0x0201)
-#define SDP_ATTRIB_DI_PRODUCT_ID (0x0202)
-#define SDP_ATTRIB_DI_VERSION (0x0203)
-#define SDP_ATTRIB_DI_PRIMARY_RECORD (0x0204)
-#define SDP_ATTRIB_DI_VENDOR_ID_SOURCE (0x0205)
-
-#define SDP_ATTRIB_HID_DEVICE_RELEASE_NUMBER (0x0200)
-#define SDP_ATTRIB_HID_PARSER_VERSION (0x0201)
-#define SDP_ATTRIB_HID_DEVICE_SUBCLASS (0x0202)
-#define SDP_ATTRIB_HID_COUNTRY_CODE (0x0203)
-#define SDP_ATTRIB_HID_VIRTUAL_CABLE (0x0204)
-#define SDP_ATTRIB_HID_RECONNECT_INITIATE (0x0205)
-#define SDP_ATTRIB_HID_DESCRIPTOR_LIST (0x0206)
-#define SDP_ATTRIB_HID_LANG_ID_BASE_LIST (0x0207)
-#define SDP_ATTRIB_HID_SDP_DISABLE (0x0208)
-#define SDP_ATTRIB_HID_BATTERY_POWER (0x0209)
-#define SDP_ATTRIB_HID_REMOTE_WAKE (0x020A)
-#define SDP_ATTRIB_HID_REPORT_LIST (0x020B)
-#define SDP_ATTRIB_HID_SUPERVISION_TIMEOUT (0x020C)
-#define SDP_ATTRIB_HID_NORMALLY_CONNECTABLE (0x020D)
-#define SDP_ATTRIB_HID_BOOT_DEVICE (0x020E)
-
-//
-// Profile specific values
-//
-#define CORDLESS_EXTERNAL_NETWORK_PSTN (0x01)
-#define CORDLESS_EXTERNAL_NETWORK_ISDN (0x02)
-#define CORDLESS_EXTERNAL_NETWORK_GSM (0x03)
-#define CORDLESS_EXTERNAL_NETWORK_CDMA (0x04)
-#define CORDLESS_EXTERNAL_NETWORK_ANALOG_CELLULAR (0x05)
-#define CORDLESS_EXTERNAL_NETWORK_PACKET_SWITCHED (0x06)
-#define CORDLESS_EXTERNAL_NETWORK_OTHER (0x07)
-
-#define OBJECT_PUSH_FORMAT_VCARD_2_1 (0x01)
-#define OBJECT_PUSH_FORMAT_VCARD_3_0 (0x02)
-#define OBJECT_PUSH_FORMAT_VCAL_1_0 (0x03)
-#define OBJECT_PUSH_FORMAT_ICAL_2_0 (0x04)
-#define OBJECT_PUSH_FORMAT_VNOTE (0x05)
-#define OBJECT_PUSH_FORMAT_VMESSAGE (0x06)
-#define OBJECT_PUSH_FORMAT_ANY (0xFF)
-
-#define SYNCH_DATA_STORE_PHONEBOOK (0x01)
-#define SYNCH_DATA_STORE_CALENDAR (0x03)
-#define SYNCH_DATA_STORE_NOTES (0x05)
-#define SYNCH_DATA_STORE_MESSAGES (0x06)
-
-#define DI_VENDOR_ID_SOURCE_BLUETOOTH_SIG (0x0001)
-#define DI_VENDOR_ID_SOURCE_USB_IF (0x0002)
-
-#define PSM_SDP (0x0001)
-#define PSM_RFCOMM (0x0003)
-#define PSM_TCS_BIN (0x0005)
-#define PSM_TCS_BIN_CORDLESS (0x0007)
-#define PSM_BNEP (0x000F)
-#define PSM_HID_CONTROL (0x0011)
-#define PSM_HID_INTERRUPT (0x0013)
-#define PSM_AVCTP (0x0017)
-#define PSM_AVDTP (0x0019)
-#define PSM_UDI_C_PLANE (0x001D)
-
-//
-// Strings
-//
-#define STR_ADDR_FMTA "(%02x:%02x:%02x:%02x:%02x:%02x)"
-#define STR_ADDR_FMTW L"(%02x:%02x:%02x:%02x:%02x:%02x)"
-
-#define STR_ADDR_SHORT_FMTA "%04x%08x"
-#define STR_ADDR_SHORT_FMTW L"%04x%08x"
-
-#if defined(UNICODE) || defined(BTH_KERN)
-
-#define STR_ADDR_FMT STR_ADDR_FMTW
-#define STR_ADDR_SHORT_FMT STR_ADDR_SHORT_FMTW
-
-#else // UNICODE
-
-#define STR_ADDR_FMT STR_ADDR_FMTA
-#define STR_ADDR_SHORT_FMT STR_ADDR_SHORT_FMTA
-
-#endif // UNICODE
-
-#define GET_BITS(field,offset,mask) ( ( (field) >> (offset) ) & (mask) )
-#define GET_BIT(field,offset) ( GET_BITS(field,offset,0x1) )
-
-#define LMP_3_SLOT_PACKETS(x) (GET_BIT(x, 0))
-#define LMP_5_SLOT_PACKETS(x) (GET_BIT(x, 1))
-#define LMP_ENCRYPTION(x) (GET_BIT(x, 2))
-#define LMP_SLOT_OFFSET(x) (GET_BIT(x, 3))
-#define LMP_TIMING_ACCURACY(x) (GET_BIT(x, 4))
-#define LMP_SWITCH(x) (GET_BIT(x, 5))
-#define LMP_HOLD_MODE(x) (GET_BIT(x, 6))
-#define LMP_SNIFF_MODE(x) (GET_BIT(x, 7))
-#define LMP_PARK_MODE(x) (GET_BIT(x, 8))
-#define LMP_RSSI(x) (GET_BIT(x, 9))
-#define LMP_CHANNEL_QUALITY_DRIVEN_MODE(x) (GET_BIT(x,10))
-#define LMP_SCO_LINK(x) (GET_BIT(x,11))
-#define LMP_HV2_PACKETS(x) (GET_BIT(x,12))
-#define LMP_HV3_PACKETS(x) (GET_BIT(x,13))
-#define LMP_MU_LAW_LOG(x) (GET_BIT(x,14))
-#define LMP_A_LAW_LOG(x) (GET_BIT(x,15))
-#define LMP_CVSD(x) (GET_BIT(x,16))
-#define LMP_PAGING_SCHEME(x) (GET_BIT(x,17))
-#define LMP_POWER_CONTROL(x) (GET_BIT(x,18))
-#define LMP_TRANSPARENT_SCO_DATA(x) (GET_BIT(x,19))
-#define LMP_FLOW_CONTROL_LAG(x) (GET_BITS(x,20,0x3))
-
-#endif // GUID_DEFS_ONLY
-
-#endif // __BTHDEF_H__
diff --git a/cpp/wiiscan/include/bthsdpdef.h b/cpp/wiiscan/include/bthsdpdef.h
deleted file mode 100644
index 1764816..0000000
--- a/cpp/wiiscan/include/bthsdpdef.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef __BTHSDPDEF_H__
-#define __BTHSDPDEF_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct SDP_LARGE_INTEGER_16 {
- ULONGLONG LowPart;
- LONGLONG HighPart;
-};
-
-
-struct SDP_ULARGE_INTEGER_16 {
- ULONGLONG LowPart;
- ULONGLONG HighPart;
-};
-
-typedef struct SDP_ULARGE_INTEGER_16 SDP_ULARGE_INTEGER_16, *PSDP_ULARGE_INTEGER_16, *LPSDP_ULARGE_INTEGER_16;
-typedef struct SDP_LARGE_INTEGER_16 SDP_LARGE_INTEGER_16, *PSDP_LARGE_INTEGER_16, *LPSDP_LARGE_INTEGER_16;
-
-enum NodeContainerType {
- NodeContainerTypeSequence,
- NodeContainerTypeAlternative
-};
-
-typedef enum NodeContainerType NodeContainerType;
-
-typedef USHORT SDP_ERROR, *PSDP_ERROR;
-
-enum SDP_TYPE {
- SDP_TYPE_NIL = 0x00,
- SDP_TYPE_UINT = 0x01,
- SDP_TYPE_INT = 0x02,
- SDP_TYPE_UUID = 0x03,
- SDP_TYPE_STRING = 0x04,
- SDP_TYPE_BOOLEAN = 0x05,
- SDP_TYPE_SEQUENCE = 0x06,
- SDP_TYPE_ALTERNATIVE = 0x07,
- SDP_TYPE_URL = 0x08,
- SDP_TYPE_CONTAINER = 0x20
-};
-// 9 - 31 are reserved
-typedef enum SDP_TYPE SDP_TYPE;
-
-// allow for a little easier type checking / sizing for integers and UUIDs
-// ((SDP_ST_XXX & 0xF0) >> 4) == SDP_TYPE_XXX
-// size of the data (in bytes) is encoded as ((SDP_ST_XXX & 0xF0) >> 8)
-enum SDP_SPECIFICTYPE {
- SDP_ST_NONE = 0x0000,
-
- SDP_ST_UINT8 = 0x0010,
- SDP_ST_UINT16 = 0x0110,
- SDP_ST_UINT32 = 0x0210,
- SDP_ST_UINT64 = 0x0310,
- SDP_ST_UINT128 = 0x0410,
-
- SDP_ST_INT8 = 0x0020,
- SDP_ST_INT16 = 0x0120,
- SDP_ST_INT32 = 0x0220,
- SDP_ST_INT64 = 0x0320,
- SDP_ST_INT128 = 0x0420,
-
- SDP_ST_UUID16 = 0x0130,
- SDP_ST_UUID32 = 0x0220,
- SDP_ST_UUID128 = 0x0430
-};
-typedef enum SDP_SPECIFICTYPE SDP_SPECIFICTYPE;
-
-typedef struct _SdpAttributeRange {
- USHORT minAttribute;
- USHORT maxAttribute;
-} SdpAttributeRange;
-
-
-typedef
-#ifdef USE_MIDL_SYNTAX
- [switch_type(unsigned short)]
-#endif
- union SdpQueryUuidUnion {
-#ifdef USE_MIDL_SYNTAX
- [case(SDP_ST_UUID128)]
-#endif
- GUID uuid128;
-
-#ifdef USE_MIDL_SYNTAX
- [case(SDP_ST_UUID32)]
-#endif _NTDDK_
- ULONG uuid32;
-
-#ifdef USE_MIDL_SYNTAX
- [case(SDP_ST_UUID16)]
-#endif _NTDDK_
- USHORT uuid16;
-} SdpQueryUuidUnion;
-
-typedef struct _SdpQueryUuid {
-#ifdef USE_MIDL_SYNTAX
- [switch_is(uuidType)]
-#endif
- SdpQueryUuidUnion u;
-
- USHORT uuidType;
-} SdpQueryUuid;
-
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif // __BTHSDPDEF_H__
diff --git a/cpp/wiiscan/include/wiiuse.h b/cpp/wiiscan/include/wiiuse.h
deleted file mode 100644
index bd3c27f..0000000
--- a/cpp/wiiscan/include/wiiuse.h
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * wiiuse
- *
- * Written By:
- * Michael Laforest < para >
- * Email: < thepara (--AT--) g m a i l [--DOT--] com >
- *
- * Copyright 2006-2007
- *
- * This file is part of wiiuse.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * $Header$
- *
- */
-
-/**
- * @file
- *
- * @brief API header file.
- *
- * If this file is included from inside the wiiuse source
- * and not from a third party program, then wiimote_internal.h
- * is also included which extends this file.
- */
-
-#ifndef WIIUSE_H_INCLUDED
-#define WIIUSE_H_INCLUDED
-
-#ifdef _WIN32
- /* windows */
- #include
-#else
- /* nix */
- #include
-#endif
-
-#ifdef WIIUSE_INTERNAL_H_INCLUDED
- #define WCONST
-#else
- #define WCONST const
-#endif
-
-/* led bit masks */
-#define WIIMOTE_LED_NONE 0x00
-#define WIIMOTE_LED_1 0x10
-#define WIIMOTE_LED_2 0x20
-#define WIIMOTE_LED_3 0x40
-#define WIIMOTE_LED_4 0x80
-
-/* button codes */
-#define WIIMOTE_BUTTON_TWO 0x0001
-#define WIIMOTE_BUTTON_ONE 0x0002
-#define WIIMOTE_BUTTON_B 0x0004
-#define WIIMOTE_BUTTON_A 0x0008
-#define WIIMOTE_BUTTON_MINUS 0x0010
-#define WIIMOTE_BUTTON_ZACCEL_BIT6 0x0020
-#define WIIMOTE_BUTTON_ZACCEL_BIT7 0x0040
-#define WIIMOTE_BUTTON_HOME 0x0080
-#define WIIMOTE_BUTTON_LEFT 0x0100
-#define WIIMOTE_BUTTON_RIGHT 0x0200
-#define WIIMOTE_BUTTON_DOWN 0x0400
-#define WIIMOTE_BUTTON_UP 0x0800
-#define WIIMOTE_BUTTON_PLUS 0x1000
-#define WIIMOTE_BUTTON_ZACCEL_BIT4 0x2000
-#define WIIMOTE_BUTTON_ZACCEL_BIT5 0x4000
-#define WIIMOTE_BUTTON_UNKNOWN 0x8000
-#define WIIMOTE_BUTTON_ALL 0x1F9F
-
-/* nunchul button codes */
-#define NUNCHUK_BUTTON_Z 0x01
-#define NUNCHUK_BUTTON_C 0x02
-#define NUNCHUK_BUTTON_ALL 0x03
-
-/* classic controller button codes */
-#define CLASSIC_CTRL_BUTTON_UP 0x0001
-#define CLASSIC_CTRL_BUTTON_LEFT 0x0002
-#define CLASSIC_CTRL_BUTTON_ZR 0x0004
-#define CLASSIC_CTRL_BUTTON_X 0x0008
-#define CLASSIC_CTRL_BUTTON_A 0x0010
-#define CLASSIC_CTRL_BUTTON_Y 0x0020
-#define CLASSIC_CTRL_BUTTON_B 0x0040
-#define CLASSIC_CTRL_BUTTON_ZL 0x0080
-#define CLASSIC_CTRL_BUTTON_FULL_R 0x0200
-#define CLASSIC_CTRL_BUTTON_PLUS 0x0400
-#define CLASSIC_CTRL_BUTTON_HOME 0x0800
-#define CLASSIC_CTRL_BUTTON_MINUS 0x1000
-#define CLASSIC_CTRL_BUTTON_FULL_L 0x2000
-#define CLASSIC_CTRL_BUTTON_DOWN 0x4000
-#define CLASSIC_CTRL_BUTTON_RIGHT 0x8000
-#define CLASSIC_CTRL_BUTTON_ALL 0xFEFF
-
-/* guitar hero 3 button codes */
-#define GUITAR_HERO_3_BUTTON_STRUM_UP 0x0001
-#define GUITAR_HERO_3_BUTTON_YELLOW 0x0008
-#define GUITAR_HERO_3_BUTTON_GREEN 0x0010
-#define GUITAR_HERO_3_BUTTON_BLUE 0x0020
-#define GUITAR_HERO_3_BUTTON_RED 0x0040
-#define GUITAR_HERO_3_BUTTON_ORANGE 0x0080
-#define GUITAR_HERO_3_BUTTON_PLUS 0x0400
-#define GUITAR_HERO_3_BUTTON_MINUS 0x1000
-#define GUITAR_HERO_3_BUTTON_STRUM_DOWN 0x4000
-#define GUITAR_HERO_3_BUTTON_ALL 0xFEFF
-
-
-/* wiimote option flags */
-#define WIIUSE_SMOOTHING 0x01
-#define WIIUSE_CONTINUOUS 0x02
-#define WIIUSE_ORIENT_THRESH 0x04
-#define WIIUSE_INIT_FLAGS (WIIUSE_SMOOTHING | WIIUSE_ORIENT_THRESH)
-
-#define WIIUSE_ORIENT_PRECISION 100.0f
-
-/* expansion codes */
-#define EXP_NONE 0
-#define EXP_NUNCHUK 1
-#define EXP_CLASSIC 2
-#define EXP_GUITAR_HERO_3 3
-#define EXP_BALANCE_BOARD 4
-
-/* IR correction types */
-typedef enum ir_position_t {
- WIIUSE_IR_ABOVE,
- WIIUSE_IR_BELOW
-} ir_position_t;
-
-/**
- * @brief Check if a button is pressed.
- * @param dev Pointer to a wiimote_t or expansion structure.
- * @param button The button you are interested in.
- * @return 1 if the button is pressed, 0 if not.
- */
-#define IS_PRESSED(dev, button) ((dev->btns & button) == button)
-
-/**
- * @brief Check if a button is being held.
- * @param dev Pointer to a wiimote_t or expansion structure.
- * @param button The button you are interested in.
- * @return 1 if the button is held, 0 if not.
- */
-#define IS_HELD(dev, button) ((dev->btns_held & button) == button)
-
-/**
- * @brief Check if a button is released on this event. \n\n
- * This does not mean the button is not pressed, it means \n
- * this button was just now released.
- * @param dev Pointer to a wiimote_t or expansion structure.
- * @param button The button you are interested in.
- * @return 1 if the button is released, 0 if not.
- *
- */
-#define IS_RELEASED(dev, button) ((dev->btns_released & button) == button)
-
-/**
- * @brief Check if a button has just been pressed this event.
- * @param dev Pointer to a wiimote_t or expansion structure.
- * @param button The button you are interested in.
- * @return 1 if the button is pressed, 0 if not.
- */
-#define IS_JUST_PRESSED(dev, button) (IS_PRESSED(dev, button) && !IS_HELD(dev, button))
-
-/**
- * @brief Return the IR sensitivity level.
- * @param wm Pointer to a wiimote_t structure.
- * @param lvl [out] Pointer to an int that will hold the level setting.
- * If no level is set 'lvl' will be set to 0.
- */
-#define WIIUSE_GET_IR_SENSITIVITY(dev, lvl) \
- do { \
- if ((wm->state & 0x0200) == 0x0200) *lvl = 1; \
- else if ((wm->state & 0x0400) == 0x0400) *lvl = 2; \
- else if ((wm->state & 0x0800) == 0x0800) *lvl = 3; \
- else if ((wm->state & 0x1000) == 0x1000) *lvl = 4; \
- else if ((wm->state & 0x2000) == 0x2000) *lvl = 5; \
- else *lvl = 0; \
- } while (0)
-
-#define WIIUSE_USING_ACC(wm) ((wm->state & 0x020) == 0x020)
-#define WIIUSE_USING_EXP(wm) ((wm->state & 0x040) == 0x040)
-#define WIIUSE_USING_IR(wm) ((wm->state & 0x080) == 0x080)
-#define WIIUSE_USING_SPEAKER(wm) ((wm->state & 0x100) == 0x100)
-
-#define WIIUSE_IS_LED_SET(wm, num) ((wm->leds & WIIMOTE_LED_##num) == WIIMOTE_LED_##num)
-
-/*
- * Largest known payload is 21 bytes.
- * Add 2 for the prefix and round up to a power of 2.
- */
-#define MAX_PAYLOAD 32
-
-/*
- * This is left over from an old hack, but it may actually
- * be a useful feature to keep so it wasn't removed.
- */
-#ifdef WIN32
- #define WIIMOTE_DEFAULT_TIMEOUT 10
- #define WIIMOTE_EXP_TIMEOUT 10
-#endif
-
-typedef unsigned char byte;
-typedef char sbyte;
-
-struct wiimote_t;
-struct vec3b_t;
-struct orient_t;
-struct gforce_t;
-
-
-/**
- * @brief Callback that handles a read event.
- *
- * @param wm Pointer to a wiimote_t structure.
- * @param data Pointer to the filled data block.
- * @param len Length in bytes of the data block.
- *
- * @see wiiuse_init()
- *
- * A registered function of this type is called automatically by the wiiuse
- * library when the wiimote has returned the full data requested by a previous
- * call to wiiuse_read_data().
- */
-typedef void (*wiiuse_read_cb)(struct wiimote_t* wm, byte* data, unsigned short len);
-
-
-/**
- * @struct read_req_t
- * @brief Data read request structure.
- */
-struct read_req_t {
- wiiuse_read_cb cb; /**< read data callback */
- byte* buf; /**< buffer where read data is written */
- unsigned int addr; /**< the offset that the read started at */
- unsigned short size; /**< the length of the data read */
- unsigned short wait; /**< num bytes still needed to finish read */
- byte dirty; /**< set to 1 if not using callback and needs to be cleaned up */
-
- struct read_req_t* next; /**< next read request in the queue */
-};
-
-
-/**
- * @struct vec2b_t
- * @brief Unsigned x,y byte vector.
- */
-typedef struct vec2b_t {
- byte x, y;
-} vec2b_t;
-
-
-/**
- * @struct vec3b_t
- * @brief Unsigned x,y,z byte vector.
- */
-typedef struct vec3b_t {
- byte x, y, z;
-} vec3b_t;
-
-
-/**
- * @struct vec3f_t
- * @brief Signed x,y,z float struct.
- */
-typedef struct vec3f_t {
- float x, y, z;
-} vec3f_t;
-
-
-/**
- * @struct orient_t
- * @brief Orientation struct.
- *
- * Yaw, pitch, and roll range from -180 to 180 degrees.
- */
-typedef struct orient_t {
- float roll; /**< roll, this may be smoothed if enabled */
- float pitch; /**< pitch, this may be smoothed if enabled */
- float yaw;
-
- float a_roll; /**< absolute roll, unsmoothed */
- float a_pitch; /**< absolute pitch, unsmoothed */
-} orient_t;
-
-
-/**
- * @struct gforce_t
- * @brief Gravity force struct.
- */
-typedef struct gforce_t {
- float x, y, z;
-} gforce_t;
-
-
-/**
- * @struct accel_t
- * @brief Accelerometer struct. For any device with an accelerometer.
- */
-typedef struct accel_t {
- struct vec3b_t cal_zero; /**< zero calibration */
- struct vec3b_t cal_g; /**< 1g difference around 0cal */
-
- float st_roll; /**< last smoothed roll value */
- float st_pitch; /**< last smoothed roll pitch */
- float st_alpha; /**< alpha value for smoothing [0-1] */
-} accel_t;
-
-
-/**
- * @struct ir_dot_t
- * @brief A single IR source.
- */
-typedef struct ir_dot_t {
- byte visible; /**< if the IR source is visible */
-
- unsigned int x; /**< interpolated X coordinate */
- unsigned int y; /**< interpolated Y coordinate */
-
- short rx; /**< raw X coordinate (0-1023) */
- short ry; /**< raw Y coordinate (0-767) */
-
- byte order; /**< increasing order by x-axis value */
-
- byte size; /**< size of the IR dot (0-15) */
-} ir_dot_t;
-
-
-/**
- * @enum aspect_t
- * @brief Screen aspect ratio.
- */
-typedef enum aspect_t {
- WIIUSE_ASPECT_4_3,
- WIIUSE_ASPECT_16_9
-} aspect_t;
-
-
-/**
- * @struct ir_t
- * @brief IR struct. Hold all data related to the IR tracking.
- */
-typedef struct ir_t {
- struct ir_dot_t dot[4]; /**< IR dots */
- byte num_dots; /**< number of dots at this time */
-
- enum aspect_t aspect; /**< aspect ratio of the screen */
-
- enum ir_position_t pos; /**< IR sensor bar position */
-
- unsigned int vres[2]; /**< IR virtual screen resolution */
- int offset[2]; /**< IR XY correction offset */
- int state; /**< keeps track of the IR state */
-
- int ax; /**< absolute X coordinate */
- int ay; /**< absolute Y coordinate */
-
- int x; /**< calculated X coordinate */
- int y; /**< calculated Y coordinate */
-
- float distance; /**< pixel distance between first 2 dots*/
- float z; /**< calculated distance */
-} ir_t;
-
-
-/**
- * @struct speaker_t
- */
-typedef struct speaker_t {
- byte format;
- byte rate;
- byte freq;
- byte vol;
-} speaker_t;
-
-
-/**
- * @struct joystick_t
- * @brief Joystick calibration structure.
- *
- * The angle \a ang is relative to the positive y-axis into quadrant I
- * and ranges from 0 to 360 degrees. So if the joystick is held straight
- * upwards then angle is 0 degrees. If it is held to the right it is 90,
- * down is 180, and left is 270.
- *
- * The magnitude \a mag is the distance from the center to where the
- * joystick is being held. The magnitude ranges from 0 to 1.
- * If the joystick is only slightly tilted from the center the magnitude
- * will be low, but if it is closer to the outter edge the value will
- * be higher.
- */
-typedef struct joystick_t {
- struct vec2b_t max; /**< maximum joystick values */
- struct vec2b_t min; /**< minimum joystick values */
- struct vec2b_t center; /**< center joystick values */
-
- float ang; /**< angle the joystick is being held */
- float mag; /**< magnitude of the joystick (range 0-1) */
-} joystick_t;
-
-
-/**
- * @struct nunchuk_t
- * @brief Nunchuk expansion device.
- */
-typedef struct nunchuk_t {
- struct accel_t accel_calib; /**< nunchuk accelerometer calibration */
- struct joystick_t js; /**< joystick calibration */
-
- int* flags; /**< options flag (points to wiimote_t.flags) */
-
- byte btns; /**< what buttons have just been pressed */
- byte btns_held; /**< what buttons are being held down */
- byte btns_released; /**< what buttons were just released this */
-
- float orient_threshold; /**< threshold for orient to generate an event */
- int accel_threshold; /**< threshold for accel to generate an event */
-
- struct vec3b_t accel; /**< current raw acceleration data */
- struct orient_t orient; /**< current orientation on each axis */
- struct gforce_t gforce; /**< current gravity forces on each axis */
-} nunchuk_t;
-
-
-/**
- * @struct classic_ctrl_t
- * @brief Classic controller expansion device.
- */
-typedef struct classic_ctrl_t {
- short btns; /**< what buttons have just been pressed */
- short btns_held; /**< what buttons are being held down */
- short btns_released; /**< what buttons were just released this */
-
- float r_shoulder; /**< right shoulder button (range 0-1) */
- float l_shoulder; /**< left shoulder button (range 0-1) */
-
- struct joystick_t ljs; /**< left joystick calibration */
- struct joystick_t rjs; /**< right joystick calibration */
-} classic_ctrl_t;
-
-
-/**
- * @struct guitar_hero_3_t
- * @brief Guitar Hero 3 expansion device.
- */
-typedef struct guitar_hero_3_t {
- short btns; /**< what buttons have just been pressed */
- short btns_held; /**< what buttons are being held down */
- short btns_released; /**< what buttons were just released this */
-
- float whammy_bar; /**< whammy bar (range 0-1) */
-
- struct joystick_t js; /**< joystick calibration */
-} guitar_hero_3_t;
-
-
-/**
- * @struct balance_board_data_t
- * @brief Balance board l/r, t/b corner data data.
- */
-typedef struct balance_board_data_t {
- int tr;
- int br;
- int tl;
- int bl;
-} balance_board_data_t;
-
-
-/**
- * @struct balance_board_t
- * @brief Balance board expansion device.
- */
-typedef struct balance_board_t {
- float tr; /** Top Right weight */
- float br; /** Bottom Right weight */
- float tl; /** Top Left weight */
- float bl; /** Bottom Left weight */
- struct balance_board_data_t raw; /** Raw actual values */
- struct balance_board_data_t cal_0; /** Calibration values at 0kg */
- struct balance_board_data_t cal_17; /** Calibration values at 17kg */
- struct balance_board_data_t cal_34; /** Calibration values at 34kg */
-} balance_board_t;
-
-
-/**
- * @struct expansion_t
- * @brief Generic expansion device plugged into wiimote.
- */
-typedef struct expansion_t {
- int type; /**< type of expansion attached */
-
- union {
- struct nunchuk_t nunchuk;
- struct classic_ctrl_t classic;
- struct guitar_hero_3_t gh3;
- struct balance_board_t bb;
- };
-} expansion_t;
-
-
-/**
- * @enum win32_bt_stack_t
- * @brief Available bluetooth stacks for Windows.
- */
-typedef enum win_bt_stack_t {
- WIIUSE_STACK_UNKNOWN,
- WIIUSE_STACK_MS,
- WIIUSE_STACK_BLUESOLEIL
-} win_bt_stack_t;
-
-
-/**
- * @struct wiimote_state_t
- * @brief Significant data from the previous event.
- */
-typedef struct wiimote_state_t {
- /* expansion_t */
- float exp_ljs_ang;
- float exp_rjs_ang;
- float exp_ljs_mag;
- float exp_rjs_mag;
- unsigned short exp_btns;
- struct orient_t exp_orient;
- struct vec3b_t exp_accel;
- float exp_r_shoulder;
- float exp_l_shoulder;
- struct balance_board_data_t exp_bb_raw;
-
- /* ir_t */
- int ir_ax;
- int ir_ay;
- float ir_distance;
-
- struct orient_t orient;
- unsigned short btns;
-
- struct vec3b_t accel;
-} wiimote_state_t;
-
-
-/**
- * @enum WIIUSE_EVENT_TYPE
- * @brief Events that wiiuse can generate from a poll.
- */
-typedef enum WIIUSE_EVENT_TYPE {
- WIIUSE_NONE = 0,
- WIIUSE_EVENT,
- WIIUSE_STATUS,
- WIIUSE_CONNECT,
- WIIUSE_DISCONNECT,
- WIIUSE_UNEXPECTED_DISCONNECT,
- WIIUSE_READ_DATA,
- WIIUSE_NUNCHUK_INSERTED,
- WIIUSE_NUNCHUK_REMOVED,
- WIIUSE_CLASSIC_CTRL_INSERTED,
- WIIUSE_CLASSIC_CTRL_REMOVED,
- WIIUSE_GUITAR_HERO_3_CTRL_INSERTED,
- WIIUSE_GUITAR_HERO_3_CTRL_REMOVED,
- WIIUSE_BALANCE_BOARD_CTRL_INSERTED,
- WIIUSE_BALANCE_BOARD_CTRL_REMOVED
-} WIIUSE_EVENT_TYPE;
-
-/**
- * @struct wiimote_t
- * @brief Wiimote structure.
- */
-typedef struct wiimote_t {
- WCONST int unid; /**< user specified id */
-
- #ifndef WIN32
- WCONST bdaddr_t bdaddr; /**< bt address */
- WCONST char bdaddr_str[18]; /**< readable bt address */
- WCONST int out_sock; /**< output socket */
- WCONST int in_sock; /**< input socket */
- #else
- WCONST HANDLE dev_handle; /**< HID handle */
- WCONST OVERLAPPED hid_overlap; /**< overlap handle */
- WCONST enum win_bt_stack_t stack; /**< type of bluetooth stack to use */
- WCONST int timeout; /**< read timeout */
- WCONST byte normal_timeout; /**< normal timeout */
- WCONST byte exp_timeout; /**< timeout for expansion handshake */
- #endif
-
- WCONST int state; /**< various state flags */
- WCONST byte leds; /**< currently lit leds */
- WCONST float battery_level; /**< battery level */
-
- WCONST int flags; /**< options flag */
-
- WCONST byte handshake_state; /**< the state of the connection handshake */
-
- WCONST struct read_req_t* read_req; /**< list of data read requests */
- WCONST struct accel_t accel_calib; /**< wiimote accelerometer calibration */
- WCONST struct expansion_t exp; /**< wiimote expansion device */
-
- WCONST struct vec3b_t accel; /**< current raw acceleration data */
- WCONST struct orient_t orient; /**< current orientation on each axis */
- WCONST struct gforce_t gforce; /**< current gravity forces on each axis */
-
- WCONST struct ir_t ir; /**< IR data */
- WCONST struct speaker_t speaker; /**< speaker */
-
- WCONST unsigned short btns; /**< what buttons have just been pressed */
- WCONST unsigned short btns_held; /**< what buttons are being held down */
- WCONST unsigned short btns_released; /**< what buttons were just released this */
-
- WCONST float orient_threshold; /**< threshold for orient to generate an event */
- WCONST int accel_threshold; /**< threshold for accel to generate an event */
-
- WCONST struct wiimote_state_t lstate; /**< last saved state */
-
- WCONST WIIUSE_EVENT_TYPE event; /**< type of event that occured */
- WCONST byte event_buf[MAX_PAYLOAD]; /**< event buffer */
-} wiimote;
-
-
-/*****************************************
- *
- * Include API specific stuff
- *
- *****************************************/
-
-#ifdef _WIN32
- #define WIIUSE_EXPORT_DECL __declspec(dllexport)
- #define WIIUSE_IMPORT_DECL __declspec(dllimport)
-#else
- #define WIIUSE_EXPORT_DECL
- #define WIIUSE_IMPORT_DECL
-#endif
-
-#ifdef WIIUSE_COMPILE_LIB
- #define WIIUSE_EXPORT WIIUSE_EXPORT_DECL
-#else
- #define WIIUSE_EXPORT WIIUSE_IMPORT_DECL
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* wiiuse.c */
-WIIUSE_EXPORT extern const char* wiiuse_version();
-
-WIIUSE_EXPORT extern struct wiimote_t** wiiuse_init(int wiimotes);
-WIIUSE_EXPORT extern void wiiuse_disconnected(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_cleanup(struct wiimote_t** wm, int wiimotes);
-WIIUSE_EXPORT extern void wiiuse_rumble(struct wiimote_t* wm, int status);
-WIIUSE_EXPORT extern void wiiuse_toggle_rumble(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_set_leds(struct wiimote_t* wm, int leds);
-WIIUSE_EXPORT extern void wiiuse_motion_sensing(struct wiimote_t* wm, int status);
-WIIUSE_EXPORT extern int wiiuse_read_data(struct wiimote_t* wm, byte* buffer, unsigned int offset, unsigned short len);
-WIIUSE_EXPORT extern int wiiuse_write_data(struct wiimote_t* wm, unsigned int addr, byte* data, byte len);
-WIIUSE_EXPORT extern void wiiuse_status(struct wiimote_t* wm);
-WIIUSE_EXPORT extern struct wiimote_t* wiiuse_get_by_id(struct wiimote_t** wm, int wiimotes, int unid);
-WIIUSE_EXPORT extern int wiiuse_set_flags(struct wiimote_t* wm, int enable, int disable);
-WIIUSE_EXPORT extern float wiiuse_set_smooth_alpha(struct wiimote_t* wm, float alpha);
-WIIUSE_EXPORT extern void wiiuse_set_bluetooth_stack(struct wiimote_t** wm, int wiimotes, enum win_bt_stack_t type);
-WIIUSE_EXPORT extern void wiiuse_set_orient_threshold(struct wiimote_t* wm, float threshold);
-WIIUSE_EXPORT extern void wiiuse_resync(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_set_timeout(struct wiimote_t** wm, int wiimotes, byte normal_timeout, byte exp_timeout);
-WIIUSE_EXPORT extern void wiiuse_set_accel_threshold(struct wiimote_t* wm, int threshold);
-
-/* connect.c */
-WIIUSE_EXPORT extern int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout);
-WIIUSE_EXPORT extern int wiiuse_connect(struct wiimote_t** wm, int wiimotes);
-WIIUSE_EXPORT extern void wiiuse_disconnect(struct wiimote_t* wm);
-
-/* events.c */
-WIIUSE_EXPORT extern int wiiuse_poll(struct wiimote_t** wm, int wiimotes);
-
-/* ir.c */
-WIIUSE_EXPORT extern void wiiuse_set_ir(struct wiimote_t* wm, int status);
-WIIUSE_EXPORT extern void wiiuse_set_ir_vres(struct wiimote_t* wm, unsigned int x, unsigned int y);
-WIIUSE_EXPORT extern void wiiuse_set_ir_position(struct wiimote_t* wm, enum ir_position_t pos);
-WIIUSE_EXPORT extern void wiiuse_set_aspect_ratio(struct wiimote_t* wm, enum aspect_t aspect);
-WIIUSE_EXPORT extern void wiiuse_set_ir_sensitivity(struct wiimote_t* wm, int level);
-
-/* nunchuk.c */
-WIIUSE_EXPORT extern void wiiuse_set_nunchuk_orient_threshold(struct wiimote_t* wm, float threshold);
-WIIUSE_EXPORT extern void wiiuse_set_nunchuk_accel_threshold(struct wiimote_t* wm, int threshold);
-
-/* speaker.c */
-WIIUSE_EXPORT extern void wiiuse_speaker_enable(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_disable(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_mute(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_unmute(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_activate(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_deactivate(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_format(struct wiimote_t* wm, byte format);
-WIIUSE_EXPORT extern void wiiuse_speaker_volume(struct wiimote_t* wm, double vol);
-WIIUSE_EXPORT extern void wiiuse_speaker_rate(struct wiimote_t* wm, byte rate, byte freq);
-WIIUSE_EXPORT extern void wiiuse_speaker_config(struct wiimote_t* wm);
-WIIUSE_EXPORT extern void wiiuse_speaker_data(struct wiimote_t* wm, byte* data, int len);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* WIIUSE_H_INCLUDED */
-
diff --git a/cpp/wiiscan/lib/DelcomDLL.lib b/cpp/wiiscan/lib/DelcomDLL.lib
deleted file mode 100644
index 0c540c6..0000000
Binary files a/cpp/wiiscan/lib/DelcomDLL.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/advapi32.lib b/cpp/wiiscan/lib/advapi32.lib
deleted file mode 100644
index 2812216..0000000
Binary files a/cpp/wiiscan/lib/advapi32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/comdlg32.lib b/cpp/wiiscan/lib/comdlg32.lib
deleted file mode 100644
index 181fca1..0000000
Binary files a/cpp/wiiscan/lib/comdlg32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/gdi32.lib b/cpp/wiiscan/lib/gdi32.lib
deleted file mode 100644
index 63172a5..0000000
Binary files a/cpp/wiiscan/lib/gdi32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/irprops.lib b/cpp/wiiscan/lib/irprops.lib
deleted file mode 100644
index 1761118..0000000
Binary files a/cpp/wiiscan/lib/irprops.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/kernel32.lib b/cpp/wiiscan/lib/kernel32.lib
deleted file mode 100644
index 77b0e53..0000000
Binary files a/cpp/wiiscan/lib/kernel32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/libcpmt.lib b/cpp/wiiscan/lib/libcpmt.lib
deleted file mode 100644
index 85e91bb..0000000
Binary files a/cpp/wiiscan/lib/libcpmt.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/odbc32.lib b/cpp/wiiscan/lib/odbc32.lib
deleted file mode 100644
index 1add151..0000000
Binary files a/cpp/wiiscan/lib/odbc32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/odbccp32.lib b/cpp/wiiscan/lib/odbccp32.lib
deleted file mode 100644
index 0f2ef09..0000000
Binary files a/cpp/wiiscan/lib/odbccp32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/ole32.lib b/cpp/wiiscan/lib/ole32.lib
deleted file mode 100644
index 17d6af8..0000000
Binary files a/cpp/wiiscan/lib/ole32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/oleaut32.lib b/cpp/wiiscan/lib/oleaut32.lib
deleted file mode 100644
index 1955d00..0000000
Binary files a/cpp/wiiscan/lib/oleaut32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/shell32.lib b/cpp/wiiscan/lib/shell32.lib
deleted file mode 100644
index b723320..0000000
Binary files a/cpp/wiiscan/lib/shell32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/user32.lib b/cpp/wiiscan/lib/user32.lib
deleted file mode 100644
index eda26c0..0000000
Binary files a/cpp/wiiscan/lib/user32.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/uuid.lib b/cpp/wiiscan/lib/uuid.lib
deleted file mode 100644
index f6e4ae2..0000000
Binary files a/cpp/wiiscan/lib/uuid.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/wiiuse.lib b/cpp/wiiscan/lib/wiiuse.lib
deleted file mode 100644
index b9cc79d..0000000
Binary files a/cpp/wiiscan/lib/wiiuse.lib and /dev/null differ
diff --git a/cpp/wiiscan/lib/winspool.lib b/cpp/wiiscan/lib/winspool.lib
deleted file mode 100644
index 61cb936..0000000
Binary files a/cpp/wiiscan/lib/winspool.lib and /dev/null differ
diff --git a/cpp/wiiscan/src/args.h b/cpp/wiiscan/src/args.h
deleted file mode 100644
index 21ae941..0000000
--- a/cpp/wiiscan/src/args.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __ARGS_H__
-#define __ARGS_H__
-
-class args{
- private:
- typedef vector t_args;
- t_args m_args;
-
- void Remove(t_args::iterator itt1,int n)
- {
- t_args args2;
- for(t_args::iterator itt2=m_args.begin();itt2!=m_args.end();++itt2) {
- if(itt2!=itt1) args2.push_back(*itt2);
- else {if (--n>0) ++itt1;}
- }
- m_args=args2;
- }
-
- t_args::iterator Find(const string& v)
- {
- for(t_args::iterator itt=m_args.begin();itt!=m_args.end();++itt) {
- if (v==*itt) return itt;
- }
- return m_args.end();
- }
-
- t_args::const_iterator Find(const string& v) const
- {
- for(t_args::const_iterator itt=m_args.begin();itt!=m_args.end();++itt) {
- if (v==*itt) return itt;
- }
- return m_args.end();
- }
-
- public:
- args(const int argc,char **argv,const bool printargs=false)
- {
- for(int i=0;i=size()) throw_("argument[] out of range");
- return m_args[i];
- }
-
- size_t size() const {return m_args.size();}
- bool hasopt(const string& tag) const {return Find(tag)!=m_args.end();}
- template T Totype(const size_t i) const {return totype((*this)[i]);}
- template T Tounit(const size_t i) const {
- const string& s=(*this)[i+1];
- #ifndef USE_UNITS
- // fake test of units, primitive test, must be one-of: kpc, per_kpc and msun1E10
- if (s!="kpc/h" && s!="h/kpc" && s!="msun1E10/h") throw_("bad unit=<" + s + ">, can only handle units of type: kpc/h, h/kpc, and msun1E10/h");
- #endif
- return totype((*this)[i] + " " + s);
- }
-
- template
- T parseval(const string& tag,const T& defaultval)
- {
- t_args::iterator itt=Find(tag);
- if (itt==m_args.end() || itt+1==m_args.end()) return defaultval;
-
- const T v=totype(*(++itt));
- Remove(--itt,2);
-
- return v;
- }
-
- template
- pair parseval(const string& tag,const T& defaultval1,const R& defaultval2)
- {
- t_args::iterator itt=Find(tag);
- if (itt==m_args.end() || itt+1==m_args.end() || itt+2==m_args.end()) return make_pair(defaultval1,defaultval2);
-
- const T v1=totype(*(++itt));
- const R v2=totype(*(++itt));
- Remove(----itt,3);
-
- return make_pair(v1,v2);
- }
-
- template
- T parseunit(const string& tag,const T& defaultval)
- {
- t_args::iterator itt=Find(tag);
- if (itt==m_args.end() || itt+2==m_args.end()) return defaultval;
-
- const string s1=*(++itt);
- const string s2=*(++itt);
- const T v=totype(s1 + " " + s2);
- Remove(----itt,3);
-
- return v;
- }
-
- bool parseopt(const string& tag)
- {
- t_args::iterator itt=Find(tag);
- if (itt==m_args.end()) return false;
- Remove(itt,1);
-
- return true;
- }
-
- int getoptindex(const string& tag) const
- {
- int n=0;
- for(t_args::const_iterator itt=m_args.begin();itt!=m_args.end();++itt,++n) {
- if (tag==*itt) {
- assert( n>=0 && size_t(n)m_args.size() || i+n>m_args.size()) throw_("out of range");
- m_args.erase(m_args.begin()+i,m_args.begin()+i+n);
- }
-
- friend ostream& operator<<(ostream& s,const args& v)
- {
- for(t_args::const_iterator itt=v.m_args.begin();itt!=v.m_args.end();++itt){
- s << *itt << " ";
- }
- return s;
- }
-};
-
-#endif // __ARGS_H__
diff --git a/cpp/wiiscan/src/configfile.h b/cpp/wiiscan/src/configfile.h
deleted file mode 100644
index 859b802..0000000
--- a/cpp/wiiscan/src/configfile.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __CONFIGFILE_H__
-#define __CONFIGFILE_H__
-
-class Configfile {
- private:
- typedef vector t_value;
- t_value m_text;
- map m_vals;
- string m_rem;
- string m_strip;
- string m_file;
-
- void Load(istream &s)
- {
- if (!s) throw_("bad stream in configfile input operator");
- char buff[32*1024];
- bool ini=true;
- while(s.getline(buff,32*1024)) {
- const string b(strip(buff));
- if (ini && b!=m_rem + " Configfile_begin") throw_("bad stream in configfile input operator, missing begin tag");
- if (b==m_rem + " Configfile_end") return;
- const string t(strip(removerems(b,m_rem)));
- if (t.size()>0){
- m_text.push_back(t);
- const size_t n=t.find_first_of("=");
- istringstream s2(t.substr(0,n) + " " + (n==string::npos ? "" : t.substr(n+1)));
- string v,k;
- s2 >> k;
- while ((s2 >> v)) m_vals[k].push_back(v);
- }
- ini=false;
- }
- throw_("bad stream in configfile input operator, missing end tag");
- }
-
- void Strip(const string& s) const
- {
- for(size_t i=0;i does not exist");
- Load(s);
- }
-
- Configfile(istream& s,const string rem="%") : m_rem(rem)
- {
- if (!s) throw_("stream is invalid");
- Load(s);
- }
-
- size_t size() const {return m_text.size();}
- const string& operator[](const size_t n) const {assert(n::const_iterator itt=m_vals.find(key); return itt!=m_vals.end();}
- void Save(const string& filename) {ofstream s(filename.c_str()); s << *this;}
-
- bool operator==(const Configfile& c) const
- {
- if (m_text!=c.m_text) return false;
- else if (m_vals!=c.m_vals) return false;
- else if (m_rem!=c.m_rem) return false;
- else if (m_strip!=c.m_strip) return false;
- else if (m_file!=c.m_file) return false;
- return true;
- }
- bool operator!=(const Configfile& c) const {return !this->operator==(c);}
-
- void Checkfilechange()
- {
- if (m_file.empty()) return;
- Configfile c(m_file);
- if (c!=*this) *this=c;
- }
-
- const t_value& Get(const string& key) const
- {
- map::const_iterator itt=m_vals.find(key);
- if (itt==m_vals.end()) throw_("No such entry, <" + key + ">, in configfile");
- return itt->second;
- }
-
- template const T Get(const string& key,const bool fullline=false) const
- {
- const t_value& v=Get(key);
- assert( v.size()>0 );
- string s=v[0];
- if (fullline) for(size_t i=1;i(s);
- return t;
- }
-
- template const T Initialize(const string& key,const T valiueifnotfound,const bool fullline=false) const
- {
- if (!hasEntry(key)) return valiueifnotfound;
- else return Get(key,fullline);
- }
-
- template
- pair GetConfig(const string& e) const
- {
- if (!hasEntry(e)) return make_pair(false,T());
- else return make_pair(true,Get(e,true));
- }
-
- template void Set(const string& key,const T& v)
- {
- t_value val;
- val.push_back(tostring(v));
- m_vals[key]=val;
- m_text.push_back(key + " " + val[0]);
- }
-
- friend ostream& operator<<(ostream& s,const Configfile& x)
- {
- s << x.m_rem << " Configfile_begin\n";
- for(map::const_iterator itt1=x.m_vals.begin();itt1!=x.m_vals.end();++itt1){
- s << "\t" << itt1->first << " = ";
- for(t_value::const_iterator itt2=itt1->second.begin();itt2!=itt1->second.end();++itt2) s << *itt2 << " ";
- s << "\n";
- }
- s << x.m_rem << " Configfile_end\n";
- // if (!s) throw_("bad stream in configfile output operator");, XXX throws in cout!?
- return s;
- }
-
- friend istream& operator>>(istream& s,Configfile& x){x.Load(s); return s;}
-};
-#endif // __CONFIGFILE_H__
diff --git a/cpp/wiiscan/src/exception.h b/cpp/wiiscan/src/exception.h
deleted file mode 100644
index 5721a37..0000000
--- a/cpp/wiiscan/src/exception.h
+++ /dev/null
@@ -1,197 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __EXCEPTION_H__
-#define __EXCEPTION_H__
-
-// forward defs to funs.h
-string Getlocaltime();
-size_t GetThreadId();
-int Message(const string& title,const string& msg,const int type=0);
-
-// simple class for debugging call stack
-#ifdef _DEBUG
- struct Stackinfo : public vector {
- friend ostream& operator<<(ostream& s,const Stackinfo& x)
- {
- s << "Function stack {" << endl;
- for(int i=x.size();i>0;--i){
- const string& f=x[i-1];
- s << " [" << i-1 << "]: " << f << "(...)" << endl;
- }
- return s << "}" << endl;
- }
- };
-
- class Funstack {
- private:
- const string m_f;
- static map m_s;
-
- Funstack(const Funstack&);
- void operator=(const Funstack&);
-
- public:
- Funstack(const string& f,const int line,const string& file) : m_f(f) {m_s[GetThreadId()].push_back(f);}
- ~Funstack()
- {
- const size_t tid=GetThreadId();
- assert(m_s.find(tid)!=m_s.end());
- assert(m_s[tid].size()>0 && m_s[tid].back()==m_f);
- m_s[tid].pop_back();
- }
-
- static const Stackinfo GetStack()
- {
- const size_t tid=GetThreadId();
- if (m_s.find(tid)==m_s.end()) return Stackinfo();
- else return m_s[tid];
- }
- };
- map Funstack::m_s; // initialize static var
- #define FUNSTACK Funstack __f_stack__(__FUNCTION__,__LINE__,__FILE__)
-#else
- #define FUNSTACK
- #define DUMPSTACK(s)
- struct Stackinfo {
- friend ostream& operator<<(ostream& s,const Stackinfo& x) {return s;}
- };
- class Funstack {
- public:
- static Stackinfo GetStack() {return Stackinfo();}
- };
-#endif
-
-// tee like logger class
-class Logger
-{
-private:
- //ostream* m_log;
- string m_logfilename;
- ofstream m_logfile;
- ostream* m_log;
- const bool m_logstdout,m_logstderr;
-
- Logger(const Logger&);
- void operator=(const Logger&);
-
-public:
- Logger(ostream* log,const bool logstdout=true,const bool logstderr=false) : m_log(log), m_logstdout(logstdout), m_logstderr(logstderr) {}
-
- void operator=(ostream* log){m_logfilename=""; m_logfile.close(); m_log=log;}
- void open(const string& logfilename,const ios_base::openmode mode)
- {
- m_log=0;
- if (m_logfile.is_open()) m_logfile.close();
- m_logfilename=logfilename;
- m_logfile.open(m_logfilename.c_str(),mode);
- if (!m_logfile) throw("cannot write to logfile <" + logfilename + ">"); // Exception uses logger class, so do not throw a nice Exception class here, use a plain throw
- m_log=&m_logfile;
- }
-
- void clear()
- {
- if (m_logfile.is_open()) m_logfile.close();
- m_logfile.open(m_logfilename.c_str());
- }
-
- template
- friend Logger& operator<<(Logger& log,const T& t)
- {
- if(log.m_logstdout) cout << t;
- if(log.m_logstderr) cerr << t;
- if(log.m_log!=0) (*(log.m_log)) << t;
- return log;
- }
-
- // handle endl and like
- friend Logger& operator<<(Logger& log,std::ostream& (*fn)(std::ostream&))
- {
- if(log.m_logstdout) fn(cout);
- if(log.m_logstderr) fn(cerr);
- if(log.m_log!=0) fn(*(log.m_log));
- return log;
- }
-
- void writelogheader(const string& msg)
- {
- if(m_log==0) return;
- else{
- (*m_log) << "********************************************************" << endl;
- (*m_log) << "** Logentry: " << msg << endl;
- (*m_log) << "** Time: " << Getlocaltime();
- (*m_log) << "********************************************************" << endl;
- }
- }
-};
-
-// static global logging, default standand out
-static Logger g_log(0,true,false);
-
-class Exception{
-private:
- const string m_msg;
- const string m_file;
- const int m_line;
- const Stackinfo m_stack;
-
-public:
- Exception(const string msg,const string file,const int line,const Stackinfo s) : m_msg(msg), m_file(file), m_line(line), m_stack(s) {}
- Exception(const char* msg,const string file,const int line,const Stackinfo s) : m_msg(msg), m_file(file), m_line(line), m_stack(s) {}
-
- inline static string FormatCompilerMsg(const string& file,const int line,const bool warnonly=false)
- {
- #ifdef WIN32
- return file + "(" + Exception::tostring(line) + ") : " + (warnonly ? "warning : " : "error : ");
- #else
- return file + ":" + Exception::tostring(line) + ": " + (warnonly ? "warning: " : "error: ");
- #endif
- }
-
- inline static void throw_fun(const string& msg,const string& file,const int line)
- {
- const string msg2=Exception::FormatCompilerMsg(file,line) + "throwing exception: " + msg;
- g_log << msg2;
- #ifdef _WINDOWS_
- const string f=tostring(Funstack::GetStack());
- const string msg3=msg2 + (f.size()>0 ? "\n\n" : "") + f.substr(0,300) + (f.size()>300 ? "\n..." : "");
- Message("Exception encountered...",msg3,0);
- #endif
- throw Exception(msg,file,line,Funstack::GetStack());
- }
-
- inline string Msg() const
- {
- return FormatCompilerMsg(m_file,m_line) + "Exception: " + m_msg;
- }
-
- friend ostream& operator<<(ostream& os,const Exception& e)
- {
- return os << e.Msg() << endl << e.m_stack;
- }
-
- template
- static string tostring(const T& x)
- {
- ostringstream os;
- os << x;
- return os.str();
- }
-};
-
-#define throw_(msg) Exception::throw_fun(msg,__FILE__, __LINE__)
-#define warn_(msg) cerr << Exception::FormatCompilerMsg(__FILE__, __LINE__,true) << msg << endl;
-
-#define CATCH_ALL\
- catch(const char* s) {cout.flush(); cerr << Exception::FormatCompilerMsg(__FILE__, __LINE__) << "caught exception chars: " << s;}\
- catch(const string& s) {cout.flush(); cerr << Exception::FormatCompilerMsg(__FILE__, __LINE__) << "caught exception string: " << s;}\
- catch(const Exception& s){cout.flush(); cerr << Exception::FormatCompilerMsg(__FILE__, __LINE__) << "caught Exception class: " << s;}\
- catch(...) {cout.flush(); cerr << Exception::FormatCompilerMsg(__FILE__, __LINE__) << "caught unknown exception";}\
- cerr << "...aborting" << endl;
-
-#endif // __EXCEPTION_H__
diff --git a/cpp/wiiscan/src/file.h b/cpp/wiiscan/src/file.h
deleted file mode 100644
index 915f6ed..0000000
--- a/cpp/wiiscan/src/file.h
+++ /dev/null
@@ -1,208 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __FILE_H__
-#define __FILE_H__
-
-inline bool FileExists(const std::string& f)
-{
- ifstream s(f.c_str());
- return (!s)==false;
-}
-
-inline void AssertFileExists(const std::string& f)
-{
- if (!FileExists(f)) throw_("File <" + f + "> does not exist");
-}
-
-inline size_t FileSize(const std::string& f)
-{
- AssertFileExists(f);
- ifstream s(f.c_str());
- if (!s) throw_("Stream is bad (file <" + f + ">)");
- s.seekg(0,ios::end);
- if (!s) throw_("Stream is bad (file <" + f + ">)");
- return s.tellg();
-}
-
-inline void AssertFileNotEmpty(const std::string& f)
-{
- if (FileSize(f)==0) throw_("File <" + f + "> is empty");
-}
-
-inline size_t FileTime(const string& file)
-{
- AssertFileExists(file);
- const string t=System("date -r " + file + " +%s",true,true); // seconds since 1970-01-01 00:00:00 UTC
- return totype(t);
- // #include
- // #include
- // struct stat s;
- // int n=stat(file.c_str(),&s);
- // if (n!=0) throw_("cannot stat file <" + file + ">");
- // assert( sizeof(time_t)==sizeof(size_t) );
- // return s.st_mtime;
-}
-
-inline bool isFileNewer(const string& file0,const string& file1)
-{
- return FileTime(file0)>FileTime(file1);
-}
-
-inline bool DirExists(const std::string& f)
-{
- const string file=f + "/.dummy.txt";
- ofstream s(file.c_str());
- if(!s) return false;
- s << "testfile";
- if(!s) return false;
- s.close();
- return FileSize(file)==8;
-}
-
-inline string MakeSuffix(const int n)
-{
- assert(n>=0);
- if (n<=9) return "00" + tostring(n);
- else if (n<=99) return "0" + tostring(n);
- else return tostring(n);
-}
-
-template
-void Readdata(const string& tok,istream& is,T& t)
-{
- if (!is) throw_("Stream is bad");
- is >> t;
- if (!is) throw_("Reading {" + tok + "} settings");
-}
-
-inline string Readline(istream& is)
-{
- char buff[16*1024];
- is.getline(buff,16*1024);
- return string(buff);
-}
-
-template
-inline T Readtyp(ifstream& s){
- T x;
- s.read(reinterpret_cast(&x),sizeof(x));
- if(!s) throw_("bad stream");
- return x;
-}
-
-inline string Readstring(ifstream& s){
- char c=0;
- string t;
- do{
- c=Readtyp(s);
- if(c!=0) t+=c;
- }
- while (c!=0);
- return t;
-}
-
-template
-inline vector Readbin(std::ifstream& s,const int size)
-{
- if(!s) throw_("bad stream");
- vector x(size);
- s.read(reinterpret_cast(&x.front()),x.size()*sizeof(T));
- if(!s) throw_( "bad write");
- return x;
-}
-
-template
-inline void Writetyp(ofstream& s,const T& x){
- s.write(reinterpret_cast(&x),sizeof(x));
- if(!s) throw_( "bad stream");
-}
-
-template
-inline void Writebin(std::ofstream& s,const std::vector& x,const bool writetag)
-{
- if(!s) throw_("bad stream");
- const size_t sz=x.size()*sizeof(T);
- if(writetag){
- Writetyp(s,sz);
- }
- if(!s) throw_( "bad stream" );
- s.write(reinterpret_cast(&x.front()),sz);
- if(!s) throw_( "bad write");
- if (writetag) Writetyp(s,sz);
- if(!s) throw_( "bad stream");
-}
-
-template
-inline void Writebin(std::ofstream& s,const std::map& x,const bool writetag)
-{
- vector t;
- vector r;
- t.reserve(x.size());
- r.reserve(x.size());
- for(typename std::map::const_iterator itt=x.begin();itt!=x.end();++itt){
- t.push_back(itt->first);
- r.push_back(itt->second);
- }
- if (writetag) {
- Writetyp(s,x.size());
- Writetyp(s,static_cast(sizeof(T)));
- Writetyp(s,static_cast(sizeof(R)));
- }
- Writebin(s,t,writetag);
- Writebin(s,r,writetag);
-}
-
-template
-inline void Readbin(std::ifstream& s,vector& x)
-{
- if(!s) throw_("bad stream");
- const size_t sz=Readtyp(s);
- if(!s) throw_( "bad stream" );
- if(sz%sizeof(T)!=0) throw_("bad size tag");
- x.resize(sz/sizeof(T));
- s.read(reinterpret_cast(&x.front()),sz);
- if(!s) throw_( "bad write");
- if (Readtyp(s)!=sz) throw_("bad size tag");
- if(!s) throw_( "bad stream");
-}
-
-template
-inline void Readbin(std::ifstream& s,map& x)
-{
- vector t;
- vector r;
-
- const size_t sz=Readtyp(s);
- const size_t szT=Readtyp(s);
- const size_t szR=Readtyp(s);
-
- if (szT!=sizeof(T)) throw_("type T size mismatch in Readbin (map)");
- if (szR!=sizeof(R)) throw_("type R size mismatch in Readbin (map)");
-
- Readbin(s,t);
- Readbin(s,r);
- if (t.size()!=r.size()) throw_("size mismatch in Readbin (map)");
- x.clear();
- for(size_t i=0;i
-inline void Writeascii(const string& filename,const std::vector& x,const string& comment="",const char& newline='\n')
-{
- ofstream s(filename.c_str());
- if(!s) throw_("bad file <" + filename + ">");
- s << "% Writeascii: size=" << x.size() << " " << comment << "\n";
- for(size_t i=0;i");
-}
-
-#endif // __FILE_H__
diff --git a/cpp/wiiscan/src/funs.h b/cpp/wiiscan/src/funs.h
deleted file mode 100644
index f1a2c4f..0000000
--- a/cpp/wiiscan/src/funs.h
+++ /dev/null
@@ -1,413 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __FUNS_H__
-#define __FUNS_H__
-
-#include
-#include
-
-#define Unimplemented throw_("Function unimplemented")
-#define Dontgethere throw_("Dontgethere")
-
-#ifndef NDEBUG
- #define ON_DEBUG(a) a
-#else
- #define ON_DEBUG(a)
-#endif
-
-#ifdef USE_FFTW
- extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size);
-#endif
-
-// Small template funs
-template bool isinmap (const map& m,const T& t) {return m.size()>=2 && m.begin()->first<=t && t<(--m.end())->first;}
-template const size_t getsteps(const T& r0,const T& r1,const T& rstep,const bool logarithmic) {size_t N=0; for(T r=r0;r(&one)));
- if (big) s+=" BIGENDIAN";
- else s+=" LITENDIAN";
-
- return s;
-}
-
-inline string FormatCompilerMsg(const string& file,const int line)
-{
- #ifdef WIN32
- return file + ":" + line + ":";
- #else
- return file + "(" + line + ")";
- #endif
-}
-
-#ifdef WIN32
- extern "C"{
- #ifdef _UNICODE
- #pragma message("ERROR: toolsfun cannot handle unicode...giving up compilation");
- ERROR_complier
- #endif
-
- #ifdef _AFXDLL
- __declspec(dllimport) void* __stdcall GetCurrentThread();
- __declspec(dllimport) void* __stdcall GetCurrentThreadId();
- __declspec(dllimport) int __stdcall SetThreadPriority(void* hThread,int nPriority);
- #else
- //void* __stdcall GetCurrentThread();
- //void* __stdcall GetCurrentThreadId();
- //int __stdcall SetThreadPriority(void* hThread,int nPriority);
- __declspec(dllimport) void* __stdcall GetCurrentThread();
- __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId();
- __declspec(dllimport) int __stdcall SetThreadPriority(void* hThread,int nPriority);
- __declspec(dllimport) int __stdcall GetThreadPriority(void* hThread);
- __declspec(dllimport) unsigned int __stdcall WinExec(const char* lpCmdLine,unsigned int uCmdShow);
- #ifndef _WINDOWS_
- __declspec(dllimport) unsigned int __stdcall MessageBox(void* hWnd,const char* lpText,const char* lpCaption,unsigned int Type);
- __declspec(dllimport) unsigned long __stdcall GetCurrentDirectory(unsigned long nBufferLength,char* lpBuffer);
- #endif
- #endif
- }
-#else
- int nice(int inc);
-#endif
-
-inline int Message(const string& title,const string& msg,const int type)
-{
-#ifdef WIN32
- // 0 = MB_OK
- // 1 = MB_OKCANCEL
- // 2 = MB_ABORTRETRYIGNORE
- // 3 = MB_YESNOCANCEL
- // 4 = MB_YESNO
- // 5 = MB_RETRYCANCEL
- // 6 = MB_CANCELTRYCONTINUE: if(WINVER >= 0x0500)
- MessageBox(NULL,msg.c_str(),title.c_str(),type);
-#else
- Unimplemented;
-#endif
- return 1;
-}
-/*
-string GetCurrentDir()
-{
-#ifdef WIN32
- char buff[16*1024];
- if(GetCurrentDirectory(16*1024,buff)==0) throw_("GetCurrentDirectory() failed");
- return tostring(buff);
-#else
- Unimplemented;
- return "";
-#endif
-}
-*/
-
-inline void SetNiceLevel(const int level)
-{
- #ifdef WIN32
- // THREAD_PRIORITY_ABOVE_NORMAL 1 Priority 1 point above the priority class.
- // THREAD_PRIORITY_BELOW_NORMAL -1 Priority 1 point below the priority class.
- // THREAD_PRIORITY_HIGHEST 2 Priority 2 points above the priority class.
- // THREAD_PRIORITY_IDLE -15 Base priority of 1 for IDLE_PRIORITY_CLASS,...
- // THREAD_PRIORITY_LOWEST -2 Priority 2 points below the priority class.
- // THREAD_PRIORITY_NORMAL 0 Normal priority for the priority class.
- // THREAD_PRIORITY_TIME_CRITICAL 15 Base priority of 15 for IDLE_PRIORITY_CLASS,...
- if (level!=0 && level!=1 && level!=-1 && level!=2 && level!=-2 && level!=15 && level!=-15) throw_("wrong Win32 nice level, must be oneof -15,-2,-1,0,1,2,15");
- SetThreadPriority(GetCurrentThread(),-level);
- assert( GetThreadPriority(GetCurrentThread())==-level );
- #else
- const int n=nice(level);
- if (n<0) throw_("Could not set nice level");
- #endif
-}
-
-inline size_t GetThreadId()
-{
- #ifdef WIN32
- assert( sizeof(size_t)==sizeof(unsigned long) );
- return GetCurrentThreadId();
- #else
- // may be replaced by return 0; if phtread not found!
- assert( sizeof(size_t)==sizeof(pthread_t) );
- const pthread_t p=pthread_self();
- size_t q=0;
- memcpy(&q,&p,sizeof(q));
- return q;
- #endif
-}
-
-#ifdef TOOLSFUN_QUIET_WIN32_SYSTEM
-#ifdef WIN32
- // make a special non-console system call, instead of the standard system()
- // XXX SystemWin, does not wait for process to finish, CreatProc still create window
-
- int SystemWin(const string& cmd)
- {
- //ShellExecute, CreateProcess, WinExec or system
- // HINSTANCE hi=ShellExecute(NULL,NULL,cmdx,"","",SW_SHOSNOACTIVATE);
- // if (reinterpret_cast(hi)<32) MessageBox(NULL,(string("ShellExecute <") + cmd + "> failed").c_str(),"Error",0);
-
- // const string cmd2="\\\"" + cmd + "\\\""; // fix problem with spaces in executable, not working yet
- unsigned int r=WinExec(cmd.c_str(),4);
- return r<32 ? -1 : 0;
- }
-
- bool CreateProc(const string& cmd,const bool throwexception=true,const bool waitforprocesstofinish=true)
- {
- STARTUPINFO s;
- PROCESS_INFORMATION p;
- memset(&s,0,sizeof(s));
- memset(&p,0,sizeof(p));
- s.cb=sizeof(s);
-
- // to avoid const cast of char* in CreateProcess
- char cmdx[16*1024];
- strcpy_s(cmdx,16*1024,cmd.c_str());
-
- const int r=CreateProcess(0,cmdx,0,0,false,CREATE_DEFAULT_ERROR_MODE,0,0,&s,&p);
- if (r!=0) {if(waitforprocesstofinish) WaitForSingleObject(p.hProcess,INFINITE);}
- else {
- if (throwexception) throw_(string("CreateProcess() failed with return code <") + GetLastError() + ">");
- else return false;
- }
-
- // Release handles
- assert(r!=0);
- CloseHandle(p.hProcess);
- CloseHandle(p.hThread);
- return true;
- }
-#endif
-#endif
-
-inline string System(const string& cmd,const bool throwexception=true,const bool captureoutput=false,int* pret=0)
-{
- if (!captureoutput){
- #ifdef TOOLSFUN_QUIET_WIN32_SYSTEM
- const int n=SystemWin(cmd);
- #else
- const int n=system(cmd.c_str());
- #endif
- if (n!=0 && throwexception) throw_(string("system command failed with code=") + n + " cmd=<" + cmd + ">");
- if (pret!=0) *pret=n;
- return "";
- } else {
- #ifdef WIN32
- const string rm="del ";
- char tmp[1024];
- if (tmpnam(tmp)) throw_("error in creating win32 temp name");
- const string file(tmp);
- #else
- const string rm="rm ";
- const string file=tmpnam("tempfile");
- #endif
- ifstream s1(file.c_str());
- if(s1) {
- s1.close();
- System((rm + file).c_str(),true,false);
- }
- System(cmd + " > " + file,throwexception,false,pret);
-
- string t;
- char buff[16*1024];
- ifstream s2(file.c_str());
- while(s2) {
- s2.getline(buff,16*1024);
- if (s2) t += buff;
- }
- s2.close();
- System((rm + file).c_str(),true,false);
- return t;
- }
-}
-
-string Getlocaltime()
-{
- FUNSTACK;
- time_t rawtime;
- time(&rawtime);
- struct tm* timeinfo;
- timeinfo = localtime(&rawtime);
- return asctime(timeinfo);
-}
-
-class timer
-{
- private:
- double m_t,m_cpu_t;
- double* m_addt;
- mutable double m_last_t,m_last_eta;
-
- static double gettime()
- {
- #ifdef WIN32
- return 1.0*clock()/CLOCKS_PER_SEC; // use low-res clock
- // FILETIME ft;
- // unsigned __int64 tmpres = 0;
- //
- // GetSystemTimeAsFileTime(&ft);
- //
- // tmpres |= ft.dwHighDateTime;
- // tmpres <<= 32;
- // tmpres |= ft.dwLowDateTime;
- //
- // converting file time to unix epoch
- // tmpres -= DELTA_EPOCH_IN_MICROSECS;
- // tmpres /= 10; // convert into microseconds
- // tv->tv_sec = (long)(tmpres / 1000000UL);
- // tv->tv_usec = (long)(tmpres % 1000000UL);
- #else
- struct timeval tv;
- gettimeofday(&tv,NULL);
- return tv.tv_sec + static_cast(tv.tv_usec)/1000000;
- #endif
- }
-
- static double getcputime()
- {
- static const double f=1.0/CLOCKS_PER_SEC;
- return f*clock();
- }
-
- template
- static double Remaining(const double t,const T& n,const T& N)
- {
- if (n>=N || N<=T(0)) throw_("value out of range in timer::Remaining, n>=N or N<=0, n=" + tostring(n) + " N=" + tostring(N));
- const double p=static_cast(n/T(1)+1)/(N/T(1));
- const double p2=p>0 ? t/p : 0;
- return p2>t ? p2-t : 0;
- }
-
- public:
- timer() : m_t(gettime()), m_cpu_t(getcputime()), m_addt(0), m_last_t(-1), m_last_eta(-1) {}
- timer(double& t) : m_t(gettime()), m_cpu_t(getcputime()), m_addt(&t), m_last_t(-1), m_last_eta(-1) {}
- ~timer() {if (m_addt!=0) (*m_addt) += elapsed();}
-
- void reset () {m_t=gettime(); m_cpu_t=getcputime(); m_last_t=-1; m_last_eta=-1;}
- double elapsed() const {return gettime()-m_t;}
- double cputime() const {return getcputime()-m_cpu_t;}
-
- static string ToHMS(const double& t)
- {
- assert( t>=0 );
- const unsigned int it=static_cast(t+.5);
- const unsigned int hours=it/(60*60);
- const unsigned int mins=(it-hours*60*60)/(60);
- const unsigned int secs=(it-hours*60*60-mins*60);
- assert( secs<60 && mins<60);
- return tostring(hours) + ":" + (mins<10 ? "0": "") + tostring(mins) + ":" + (secs<10 ? "0": "") + tostring(secs);
- }
-
- template static inline int Topercent(const T x,const T N,const int decimals=-1)
- {
- assert(x(x/T(1))/(N/T(1));
- if (decimals>0) pf=static_cast(pf*decimals)/(1.0*decimals);
- return static_cast(pf*100+.5);
- }
-
- template void ToEta(const T& n,const T& N,ostream& s,const double timeprintsteps=30,const bool verboseprint=false) const
- {
- if (n>=N) return;
- assert( ntimeprintsteps) {
- const double f=timeprintsteps*60;
- const double r=Remaining(t,n,N);
- if (m_last_eta<0 || rf && e>f) /*|| (m_last_eta>0 && r>1.2*m_last_eta) */ ){
- time_t tm;
- time(&tm);
- const string systime=ctime(&tm);
- if (m_last_eta<0) s << "Current system time: " << systime;
- tm += static_cast(r);
- const string eta=ctime(&tm);
- const bool extraday=(eta.substr(0,3)!=systime.substr(0,3));
- const string eday=extraday ? " "+eta.substr(0,3)+" " : "";
- s << "Time [h:m:s]=" << ToHMS(t) << ", R=" << ToHMS(r) << ", ETA=" << eday << eta.substr(11,8);
- if(verboseprint) {
- const string t=", n/N=" + tostring(n) + "/" + tostring(N) + "=" + tostring(Topercent(n,N,10)) + " percent,";
- s << t;
- for(size_t i=t.size();i<42;++i) s << " ";
- s << " CPU=" << ToHMS(cputime());
- }
- s << endl;
-
- m_last_t=t;
- m_last_eta=r;
- }
- }
- }
- friend ostream& operator<<(ostream& s,const timer x)
- {
- return s << "Time [h:m:s]= " << x.ToHMS(x.elapsed()) << " CPU=" << x.ToHMS(x.cputime());
- }
-};
-
-/*
-int SwapEndian(void *data,const size_t size) {
-
- short xs;
- long xl;
-
- switch (size){
- case 2:
- xs = *(short *)data;
- *(short *)data = ( ((xs & 0x0000ff00) >> 8) | ((xs & 0x000000ff) << 8) );
- break;
- case 4:
- xl = *(long *)data;
- *(long *)data = ( ((xl & 0xff000000) >> 24) | ((xl & 0x00ff0000) >> 8) |
- ((xl & 0x0000ff00) << 8) | ((xl & 0x000000ff) << 24) );
- break;
- default: break;
- }
-
- return 0;
-}
-*/
-
-#endif // __FUNS_H__
diff --git a/cpp/wiiscan/src/process.h b/cpp/wiiscan/src/process.h
deleted file mode 100644
index 77ffc52..0000000
--- a/cpp/wiiscan/src/process.h
+++ /dev/null
@@ -1,282 +0,0 @@
-#ifndef __PROCESS_H__
-#define __PROCESS_H__
-
-#include
-
-pair ProcessWalkInit()
-{
- // Take a snapshot of all processes in the system.
- HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- if( hProcessSnap == INVALID_HANDLE_VALUE ) throw_("CreateToolhelp32Snapshot() returned invalid handle");
-
- // Set the size of the structure before using it.
- PROCESSENTRY32 pe32;
- pe32.dwSize = sizeof(PROCESSENTRY32);
-
- // Retrieve information about the first process,
- // and exit if unsuccessful
- if(!Process32First(hProcessSnap,&pe32)) {
- CloseHandle(hProcessSnap); // clean the snapshot object
- throw_("Process32First"); // show cause of failure
- }
-
- return make_pair(hProcessSnap,pe32);
-}
-
-DWORD GetProcessID(const string& processname)
-{
- pair h=ProcessWalkInit();
- HANDLE hProcessSnap=h.first;
- PROCESSENTRY32 pe32=h.second;
-
- do {
- if (pe32.szExeFile==processname) {
- CloseHandle(hProcessSnap);
- return pe32.th32ProcessID;
- }
- } while( Process32Next(hProcessSnap,&pe32) );
-
- CloseHandle(hProcessSnap);
- return 0;
-}
-
-PROCESSENTRY32 GetProcessInfo(const DWORD id)
-{
- pair h=ProcessWalkInit();
- HANDLE hProcessSnap=h.first;
- PROCESSENTRY32 pe32=h.second;
-
- int n=0;
- do {
- if (pe32.th32ProcessID==id) {
- CloseHandle(hProcessSnap);
- return pe32;
- }
- } while( Process32Next(hProcessSnap,&pe32) );
-
- CloseHandle(hProcessSnap);
- ZeroMemory( &pe32, sizeof(pe32) );
- pe32.dwSize = sizeof(PROCESSENTRY32);
-
- return pe32;
-}
-
-DWORD GetProcessCount(const string& processname)
-{
- pair h=ProcessWalkInit();
- HANDLE hProcessSnap=h.first;
- PROCESSENTRY32 pe32=h.second;
- int n=0;
- do {
- if (pe32.szExeFile==processname) ++n;
- } while( Process32Next(hProcessSnap,&pe32) );
-
- CloseHandle(hProcessSnap);
- return n;
-}
-
-bool KillProcessID(const DWORD id)
-{
- HANDLE hProcess = OpenProcess( PROCESS_TERMINATE, FALSE, id);
- if(hProcess==NULL) return false; // might have gone in the meantime, so no throw_("OpenProcess() got null handle");
-
- const BOOL t=TerminateProcess(hProcess,-1);
- CloseHandle(hProcess);
- return t!=0;
-}
-
-void KillAllProcesses(const string& exe)
-{
- // kill existing polls
- DWORD id=GetProcessID(exe);
- while(id!=0){
- KillProcessID(id);
- id=GetProcessID(exe);
- }
-}
-
-/*
-#include
-#include
-#include
-
-BOOL GetProcessList( );
-BOOL ListProcessModules( DWORD dwPID );
-BOOL ListProcessThreads( DWORD dwOwnerPID );
-void printError( TCHAR* msg );
-
-FILE* log=fopen("d:\\plog.txt","w");
-
-BOOL GetProcessList( )
-{
- HANDLE hProcessSnap;
- HANDLE hProcess;
- PROCESSENTRY32 pe32;
- DWORD dwPriorityClass;
-
- // Take a snapshot of all processes in the system.
- hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
- if( hProcessSnap == INVALID_HANDLE_VALUE )
- {
- printError( TEXT("CreateToolhelp32Snapshot (of processes)") );
- return( FALSE );
- }
-
- // Set the size of the structure before using it.
- pe32.dwSize = sizeof( PROCESSENTRY32 );
-
- // Retrieve information about the first process,
- // and exit if unsuccessful
- if( !Process32First( hProcessSnap, &pe32 ) )
- {
- printError( TEXT("Process32First") ); // show cause of failure
- CloseHandle( hProcessSnap ); // clean the snapshot object
- return( FALSE );
- }
-
- // Now walk the snapshot of processes, and
- // display information about each process in turn
- do
- {
- fprintf(log, "\n\n=====================================================" );
- fprintf(log, TEXT("\nPROCESS NAME: %s"), pe32.szExeFile );
- fprintf(log, "\n-----------------------------------------------------" );
-
- // Retrieve the priority class.
- dwPriorityClass = 0;
- hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
- if( hProcess == NULL )
- printError( TEXT("OpenProcess") );
- else
- {
- dwPriorityClass = GetPriorityClass( hProcess );
- if( !dwPriorityClass )
- printError( TEXT("GetPriorityClass") );
- CloseHandle( hProcess );
- }
-
- fprintf(log, "\n Process ID = 0x%08X", pe32.th32ProcessID );
- fprintf(log, "\n Thread count = %d", pe32.cntThreads );
- fprintf(log, "\n Parent process ID = 0x%08X", pe32.th32ParentProcessID );
- fprintf(log, "\n Priority base = %d", pe32.pcPriClassBase );
- if( dwPriorityClass )
- fprintf(log, "\n Priority class = %d", dwPriorityClass );
-
- // List the modules and threads associated with this process
- ListProcessModules( pe32.th32ProcessID );
- ListProcessThreads( pe32.th32ProcessID );
-
- } while( Process32Next( hProcessSnap, &pe32 ) );
-
- CloseHandle( hProcessSnap );
- return( TRUE );
-}
-
-
-BOOL ListProcessModules( DWORD dwPID )
-{
- HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
- MODULEENTRY32 me32;
-
- // Take a snapshot of all modules in the specified process.
- hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
- if( hModuleSnap == INVALID_HANDLE_VALUE )
- {
- printError( TEXT("CreateToolhelp32Snapshot (of modules)") );
- return( FALSE );
- }
-
- // Set the size of the structure before using it.
- me32.dwSize = sizeof( MODULEENTRY32 );
-
- // Retrieve information about the first module,
- // and exit if unsuccessful
- if( !Module32First( hModuleSnap, &me32 ) )
- {
- printError( TEXT("Module32First") ); // show cause of failure
- CloseHandle( hModuleSnap ); // clean the snapshot object
- return( FALSE );
- }
-
- // Now walk the module list of the process,
- // and display information about each module
- do
- {
- fprintf(log, TEXT("\n\n MODULE NAME: %s"), me32.szModule );
- fprintf(log, TEXT("\n Executable = %s"), me32.szExePath );
- fprintf(log, "\n Process ID = 0x%08X", me32.th32ProcessID );
- fprintf(log, "\n Ref count (g) = 0x%04X", me32.GlblcntUsage );
- fprintf(log, "\n Ref count (p) = 0x%04X", me32.ProccntUsage );
- fprintf(log, "\n Base address = 0x%08X", (DWORD) me32.modBaseAddr );
- fprintf(log, "\n Base size = %d", me32.modBaseSize );
-
- } while( Module32Next( hModuleSnap, &me32 ) );
-
- CloseHandle( hModuleSnap );
- return( TRUE );
-}
-
-BOOL ListProcessThreads( DWORD dwOwnerPID )
-{
- HANDLE hThreadSnap = INVALID_HANDLE_VALUE;
- THREADENTRY32 te32;
-
- // Take a snapshot of all running threads
- hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 );
- if( hThreadSnap == INVALID_HANDLE_VALUE )
- return( FALSE );
-
- // Fill in the size of the structure before using it.
- te32.dwSize = sizeof(THREADENTRY32);
-
- // Retrieve information about the first thread,
- // and exit if unsuccessful
- if( !Thread32First( hThreadSnap, &te32 ) )
- {
- printError( TEXT("Thread32First") ); // show cause of failure
- CloseHandle( hThreadSnap ); // clean the snapshot object
- return( FALSE );
- }
-
- // Now walk the thread list of the system,
- // and display information about each thread
- // associated with the specified process
- do
- {
- if( te32.th32OwnerProcessID == dwOwnerPID )
- {
- fprintf(log, "\n\n THREAD ID = 0x%08X", te32.th32ThreadID );
- fprintf(log, "\n Base priority = %d", te32.tpBasePri );
- fprintf(log, "\n Delta priority = %d", te32.tpDeltaPri );
- }
- } while( Thread32Next(hThreadSnap, &te32 ) );
-
- CloseHandle( hThreadSnap );
- return( TRUE );
-}
-
-void printError( TCHAR* msg )
-{
- DWORD eNum;
- TCHAR sysMsg[256];
- TCHAR* p;
-
- eNum = GetLastError( );
- FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, eNum,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- sysMsg, 256, NULL );
-
- // Trim the end of the line and terminate it with a null
- p = sysMsg;
- while( ( *p > 31 ) || ( *p == 9 ) )
- ++p;
- do { *p-- = 0; } while( ( p >= sysMsg ) &&
- ( ( *p == '.' ) || ( *p < 33 ) ) );
-
- // Display the message
- fprintf(log, TEXT("\n WARNING: %s failed with error %d (%s)"), msg, eNum, sysMsg );
-}
-*/
-
-#endif // __PROCESS_H__
\ No newline at end of file
diff --git a/cpp/wiiscan/src/reg.h b/cpp/wiiscan/src/reg.h
deleted file mode 100644
index 5d3d565..0000000
--- a/cpp/wiiscan/src/reg.h
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef __REGISTRY_H__
-#define __REGISTRY_H__
-
-#ifdef WIN32
-#ifdef _WINDOWS
-
-namespace Registry{
- void* StringtoRoot(const string& t)
- {
- if (t=="HKEY_CLASSES_ROOT") return HKEY_CLASSES_ROOT;
- else if (t=="HKEY_CURRENT_USER") return HKEY_CURRENT_USER;
- else if (t=="HKEY_LOCAL_MACHINE") return HKEY_LOCAL_MACHINE;
- else if (t=="HKEY_USERS") return HKEY_USERS;
- else {throw_("bad root path in registry"); return 0;}
- }
-
- pair > GetPath(const string& fullpath)
- {
- const int n=fullpath.find_first_of('\\');
- if (n==string::npos) throw_("mallformated registry entry");
- const string t=fullpath.substr(0,n);
- void* root=StringtoRoot(t);
-
- const string r=fullpath.substr(n+1,-1);
- const int m=r.find_last_of('\\');
- if (m==string::npos) throw_("mallformated registry entry");
-
- const string path=r.substr(0,m);
- const string key =r.substr(m+1,-1);
-
- return make_pair(root,make_pair(path,key));
- }
-
- bool hasKey(void* root,const string& path,const string& key,string* val=0)
- {
- assert( sizeof(void*)==sizeof(HKEY) && root!=0 );
- if (root!=HKEY_CLASSES_ROOT && root!=HKEY_CURRENT_USER && root!=HKEY_LOCAL_MACHINE && root!=HKEY_USERS) throw_("unknown root path in registry");
-
- DWORD buffersize=1024*16;
- char buff[1024*16];
- buff[0]=0;
-
- HKEY hKey;
- if (ERROR_SUCCESS!=RegOpenKeyEx(static_cast(root),path.c_str(),NULL,KEY_READ,&hKey)) return false;
- if (ERROR_SUCCESS!=RegQueryValueEx(hKey,key.c_str(),NULL,NULL,(LPBYTE)buff,&buffersize)) return false;
- if (ERROR_SUCCESS!=RegCloseKey(hKey)) return false;
-
- if (val!=0) *val=buff;
- return true;
- }
-
- string GetKey(void* root,const string& path,const string& key)
- {
- string val;
- if (!hasKey(root,path,key,&val)) throw_("could not read registry entry");
- return val;
- }
-
- string GetKey(const string& fullpath)
- {
- const pair > p=GetPath(fullpath);
- return GetKey(p.first,p.second.first,p.second.second);
- }
-
- bool SetKey(void* root,const string& path,const string& key,const string& val)
- {
- assert( sizeof(void*)==sizeof(HKEY) && root!=0 );
- if (root!=HKEY_CLASSES_ROOT && root!=HKEY_CURRENT_USER && root!=HKEY_LOCAL_MACHINE && root!=HKEY_USERS) throw_("unknown root path in registry");
- if (val.size()+1>1024*16) throw_("lenght of value to long");
-
- char buff[1024*16];
- size_t i;
- for(i=0;i(root),path.c_str(),0,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL)) return false;
- if (ERROR_SUCCESS!=RegSetValueEx(hKey,key.c_str(),NULL,REG_SZ,(LPBYTE)buff,buffersize)) return false;
- if (ERROR_SUCCESS!=RegCloseKey(hKey)) return false;
-
- return true;
- }
-
- bool SetKey(const string& fullpath,const string& val)
- {
- const pair > p=GetPath(fullpath);
- return SetKey(p.first,p.second.first,p.second.second,val);
- }
-
-}; // namespace Registry
-
-#endif // _WINDOWS
-#endif // WIN32
-#endif // __REGISTRY_H__
\ No newline at end of file
diff --git a/cpp/wiiscan/src/stringfun.h b/cpp/wiiscan/src/stringfun.h
deleted file mode 100644
index 9624292..0000000
--- a/cpp/wiiscan/src/stringfun.h
+++ /dev/null
@@ -1,284 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __STRINGFUN_H__
-#define __STRINGFUN_H__
-
-struct outputoperator_tags
-{
- string preline,endline;
- int prewidth,postwidth,precision;
- bool maptags,printnumbers,serialize;
-
- outputoperator_tags()
- : endline("\n"), prewidth(-1), postwidth(-1), precision(-1), maptags(false), printnumbers(false), serialize(false) {}
-};
-
-static outputoperator_tags g_tags;
-
-inline ostream& operator<<(ostream& os,const outputoperator_tags& x){
- g_tags=x;
- if (g_tags.precision>0) os.precision(g_tags.precision);
- return os;
-}
-
-template
-inline string tostring(const T& x)
-{
- ostringstream os;
- outputoperator_tags t1=g_tags;
- g_tags=outputoperator_tags();
- g_tags.serialize=true;
- g_tags.endline="";
- os << x;
- g_tags=t1;
- return os.str();
-}
-
-template
-inline T totype(const string& s)
-{
- istringstream is(s);
- T x;
- is >> x;
- return x;
-}
-
-inline string operator+ (const string& s,const char* c) {return s+string(c);}
-inline string operator+ (const string& s,const short& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const unsigned short& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const int& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const long& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const unsigned long& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const float& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const double& c) {return s+tostring(c);}
-inline string operator+ (const string& s,const long double& c) {return s+tostring(c);}
-inline string operator+ (const char* a ,const string& b) {return string(a)+b;}
-
-#ifdef OS_Linux
-#ifdef __GCC_V4__
- // does not work under some compilers where size_t==unsigned int
- inline string operator+ (const string& s,const size_t& c) {return s+tostring(c);}
-#endif
-#endif
-
-inline string tostring(const int argc,char** argv)
-{
- string s;
- for(int i=0;i
-inline string fwidth2(const T& x,const size_t wdt,const bool prefix)
-{
- string s=tostring(x);
- if(wdt>1024 || s.size()>=wdt) return s;
- size_t n=wdt-s.size();
- while(n>0) {
- if (prefix) s=' '+ s;
- else s+=' ';
- --n;
- }
- return s;
-}
-
-template
-inline string fwidth(const T& x,const size_t wdt=8,const size_t tailwdt=4)
-{
- string s=tostring(x);
- if(wdt>1024 || tailwdt>1024 || s.size()>wdt+tailwdt) return s;
-
- const size_t m=min(s.find('.'),s.find(' '));
- if (m==string::npos) {
- s=fwidth2(s,wdt,true);
- return fwidth2(s,wdt+tailwdt,false);
- }
- else{
- if(wdt=m );
- size_t n1=wdt-m;
- while(n1>0) {s= ' ' + s; --n1;}
- return fwidth2(s,wdt+tailwdt,false);
- }
-}
-
-inline string strip(const string& s,const char ch=' ')
-{
- const size_t n=s.find_first_not_of(ch);
- const size_t m=s.find_last_not_of (ch);
-
- if (n==string::npos || m==string::npos) return "";
- return s.substr(n,m-n+1);
-}
-
-inline string replace(const string& s,const string& f,const string& r)
-{
- if (f.size()==0) return s;
- const size_t n=s.find(f);
- if (n==string::npos) return s;
- else return replace(s.substr(0,n) + r + s.substr(n+f.size()),f,r);
-}
-
-inline string indent(const string& s,const string& indent)
-{
- string t,q=s;
- while(q.size()){
- const string::size_type n=q.find_first_of("\n");
- t += indent + q.substr(0,n) + "\n";
- if (n==string::npos) break;
- assert(n+1<=q.size());
- q = q.substr(n+1,q.size());
- }
- return t;
-}
-
-inline string removerems(const string& s,const string rem)
-{
- const size_t n=s.find_first_of(rem);
- return s.substr(0,n);
-}
-
-inline string suffix(const int n)
-{
- assert(n>=0 && n<999);
- if (n<=9) return "00" + tostring(n);
- else if (n<=99) return "0" + tostring(n);
- else return tostring(n);
-}
-
-string tail(const string& s,const string& delimiter)
-{
- const size_t n=s.find_last_of(delimiter);
- if (n==string::npos) return s;
- else return s.substr(n+delimiter.size(),-1);
-}
-
-string tail(const string& s,const char c) {
- string t;
- t.resize(1);
- t[0]=c;
- return tail(s,t);
-}
-
-template
-inline ostream& operator<<(ostream& os,const pair x)
-{
- for(int i=0;i
-inline istream& operator>>(istream& is,pair x)
-{
- for(int i=0;i> x.first[i];
- return is;
-}
-
-template
-inline ostream& operator<<(ostream& s,const vector& x)
-{
- int i=0;
- if (g_tags.serialize) s << "vector: " << x.size() << " { ";
- for(typename vector::const_iterator itt=x.begin();itt!=x.end();++itt) {
- s << g_tags.preline;
- if(g_tags.printnumbers) s << "[" << fwidth(++i,3,0) << "] ";
- s << *itt << " " << g_tags.endline;
- }
- if (g_tags.serialize) s << "} ";
- return s;
-}
-
-template
-inline istream& operator>>(istream& s,vector& x)
-{
- size_t n=0;
- string t;
- s >> t;
- if (t!="vector:") throw_("bad format in vector serialization stream, tag missing");
- s >> n >> t;
- if (t!="{") throw_("bad format in vector serialization stream, missing begin brace");
- x.resize(n);
- for(size_t i=0;i> x[i];
- s >> t;
- if (t!="}") throw_("bad format in vector serialization stream, missing end brace");
- return s;
-}
-
-template
-inline ostream& operator<<(ostream& s,const list& x)
-{
- if (g_tags.serialize) s << "list: " << x.size() << " { ";
- int i=0;
- for(typename list::const_iterator itt=x.begin();itt!=x.end();++itt){
- s << g_tags.preline;
- if(g_tags.printnumbers) s << "[" << fwidth(++i,3,0) << "] ";
- s << *itt << " " << g_tags.endline;
- }
- if (g_tags.serialize) s << "} ";
- return s;
-}
-
-template
-inline istream& operator>>(istream& s,list& x)
-{
- size_t n=0;
- string t;
- s >> t;
- if (t!="list:") throw_("bad format in list serialization stream, tag missing");
- s >> n >> t;
- if (t!="{") throw_("bad format in list serialization stream, missing begin brace");
- for(size_t i=0;i> y;
- x.push_back(y);
- }
- s >> t;
- if (t!="}") throw_("bad format in list serialization stream, missing end brace");
- return s;
-}
-
-template
-inline ostream& operator<<(ostream& s,const map& x)
-{
- if (g_tags.serialize) s << "map: " << x.size() << " { ";
- int i=0;
- for(typename map::const_iterator itt=x.begin();itt!=x.end();++itt) {
- s << g_tags.preline;
- if(g_tags.printnumbers) s << "[" << fwidth(++i,3,0) << "] ";
- s << fwidth(itt->first,g_tags.prewidth,g_tags.postwidth) << (g_tags.maptags ? " |-> " : " ");
- s << fwidth(itt->second,g_tags.prewidth,g_tags.postwidth) << " " << g_tags.endline;
- }
- if (g_tags.serialize) s << "} ";
- return s;
-}
-
-template
-inline istream& operator>>(istream& s,map& x)
-{
- size_t n=0;
- string t;
- s >> t;
- if (t!="map:") throw_("bad format in map serialization stream, tag missing");
- s >> n >> t;
- if (t!="{") throw_("bad format in map serialization stream, missing begin brace");
- for(size_t i=0;i> y >> z;
- if (x.find(y)!=x.end()) throw_("bad stream, key value no unique");
- x[y]=z;
- }
- s >> t;
- if (t!="}") throw_("bad format in map serialization stream, missing end brace");
- return s;
-}
-
-#endif // __STRINGFUNS_H__
diff --git a/cpp/wiiscan/src/templatefun.h b/cpp/wiiscan/src/templatefun.h
deleted file mode 100644
index 5212732..0000000
--- a/cpp/wiiscan/src/templatefun.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef __TEMPLATE_FUN__
-#define __TEMPLATE_FUN__
-
-#define __stdcall
-
-template
-class Autobool
-{
-private:
- volatile T* m_b;
- Autobool(const Autobool&);
- void operator=(const Autobool&);
-public:
- Autobool(volatile T* b) : m_b(b) {assert(m_b && *m_b==false); *m_b=true;}
- ~Autobool() {assert(m_b && *m_b==true); *m_b=false; m_b=0;}
-};
-
-template
-class DeviceAutoClose
-{
-private:
- T m_dev;
- R (__stdcall *m_fun)(void *);
- bool m_init;
-
- // private Copy CTOR and assignment operator
- DeviceAutoClose(const DeviceAutoClose&);
- void operator=(const DeviceAutoClose&);
-
-public:
- DeviceAutoClose(T dev,R(__stdcall *fun)(void*)) : m_dev(dev), m_fun(fun), m_init(true)
- {
- FUNSTACK;
- assert(m_fun!=NULL);
- }
- ~DeviceAutoClose()
- {
- FUNSTACK;
- assert(m_init);
- assert(m_fun!=NULL);
- if (m_dev!=NULL){
- R r=m_fun(m_dev);
- if (!r) throw_("DeviceClose() failed"); // throw in DTOR -> bad, bad!
- }
- m_dev=NULL;
- m_fun=NULL;
- m_init=false;
- }
- const T& operator()() const {FUNSTACK; assert(m_init); return m_dev;}
- T& operator()() {FUNSTACK; assert(m_init); return m_dev;}
-};
-
-
-#endif // __TEMPLATE_FUN__
diff --git a/cpp/wiiscan/src/toolsfun.h b/cpp/wiiscan/src/toolsfun.h
deleted file mode 100644
index 211ba55..0000000
--- a/cpp/wiiscan/src/toolsfun.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// The code is copyrighted 2008 by Carsten Frigaard.
-// All rights placed in public domain under GNU licence V2, 2008
-//
-// © 2008 Carsten Frigaard. Permission to use, copy, modify, and distribute this software
-// and its documentation for any purpose and without fee is hereby granted, provided that
-// the above copyright notice appear in all copies and that both that copyright notice
-// and this permission notice appear in supporting documentation.
-
-#ifndef __TOOLSFUN_H__
-#define __TOOLSFUN__H__
-
-#include
-#include
-#include
-#include
-#include
-#include