2015-08-18 12:43:30 -10:00
|
|
|
#include "boo/inputdev/DeviceBase.hpp"
|
|
|
|
|
#include "boo/inputdev/DeviceToken.hpp"
|
2015-04-20 18:02:43 -10:00
|
|
|
#include "IHIDDevice.hpp"
|
2015-08-18 16:32:19 -07:00
|
|
|
#include <cstdarg>
|
2015-04-20 18:02:43 -10:00
|
|
|
|
2015-04-29 00:24:39 -10:00
|
|
|
namespace boo
|
|
|
|
|
{
|
|
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
DeviceBase::DeviceBase(DeviceToken* token)
|
2015-04-23 14:24:15 -10:00
|
|
|
: m_token(token), m_hidDev(NULL)
|
2015-04-22 14:46:32 -10:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
DeviceBase::~DeviceBase()
|
2015-04-22 14:46:32 -10:00
|
|
|
{
|
|
|
|
|
delete m_hidDev;
|
|
|
|
|
}
|
2015-04-20 18:02:43 -10:00
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
void DeviceBase::_deviceDisconnected()
|
2015-04-20 18:02:43 -10:00
|
|
|
{
|
2015-04-22 11:48:23 -10:00
|
|
|
deviceDisconnected();
|
2015-04-20 18:02:43 -10:00
|
|
|
m_token = NULL;
|
2015-04-22 14:46:32 -10:00
|
|
|
if (m_hidDev)
|
|
|
|
|
{
|
|
|
|
|
m_hidDev->_deviceDisconnected();
|
|
|
|
|
delete m_hidDev;
|
|
|
|
|
m_hidDev = NULL;
|
|
|
|
|
}
|
2015-04-20 18:02:43 -10:00
|
|
|
}
|
|
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
void DeviceBase::closeDevice()
|
2015-04-22 11:48:23 -10:00
|
|
|
{
|
|
|
|
|
if (m_token)
|
|
|
|
|
m_token->_deviceClose();
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-18 16:32:19 -07:00
|
|
|
void DeviceBase::deviceError(const char* error, ...)
|
|
|
|
|
{
|
|
|
|
|
va_list vl;
|
|
|
|
|
va_start(vl, error);
|
|
|
|
|
vfprintf(stderr, error, vl);
|
|
|
|
|
va_end(vl);
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
bool DeviceBase::sendUSBInterruptTransfer(const uint8_t* data, size_t length)
|
2015-04-23 14:24:15 -10:00
|
|
|
{
|
|
|
|
|
if (m_hidDev)
|
2015-05-09 21:02:18 -10:00
|
|
|
return m_hidDev->_sendUSBInterruptTransfer(data, length);
|
2015-04-23 14:24:15 -10:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-18 09:40:26 -10:00
|
|
|
size_t DeviceBase::receiveUSBInterruptTransfer(uint8_t* data, size_t length)
|
2015-04-23 14:24:15 -10:00
|
|
|
{
|
|
|
|
|
if (m_hidDev)
|
2015-05-09 21:02:18 -10:00
|
|
|
return m_hidDev->_receiveUSBInterruptTransfer(data, length);
|
2015-04-23 14:24:15 -10:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-18 16:32:19 -07:00
|
|
|
bool DeviceBase::sendHIDReport(const uint8_t* data, size_t length, uint16_t message)
|
2015-04-23 14:24:15 -10:00
|
|
|
{
|
|
|
|
|
if (m_hidDev)
|
2015-08-18 16:32:19 -07:00
|
|
|
return m_hidDev->_sendHIDReport(data, length, message);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t DeviceBase::receiveReport(uint8_t* data, size_t length, uint16_t message)
|
|
|
|
|
{
|
|
|
|
|
if (m_hidDev)
|
|
|
|
|
return m_hidDev->_recieveReport(data, length, message);
|
2015-04-23 14:24:15 -10:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-29 00:24:39 -10:00
|
|
|
}
|