Files
boo/lib/inputdev/DeviceBase.cpp
T

88 lines
1.7 KiB
C++
Raw Normal View History

2015-08-18 12:43:30 -10:00
#include "boo/inputdev/DeviceBase.hpp"
#include "boo/inputdev/DeviceToken.hpp"
#include "IHIDDevice.hpp"
#include <cstdarg>
2015-04-29 00:24:39 -10:00
namespace boo
{
2015-08-18 09:40:26 -10:00
DeviceBase::DeviceBase(DeviceToken* token)
2017-05-07 11:24:00 -10:00
: m_token(token)
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
{
}
2015-08-18 09:40:26 -10:00
void DeviceBase::_deviceDisconnected()
{
2015-04-22 11:48:23 -10:00
deviceDisconnected();
2017-05-07 11:24:00 -10:00
m_token = nullptr;
2015-04-22 14:46:32 -10:00
if (m_hidDev)
{
m_hidDev->_deviceDisconnected();
2017-05-07 11:24:00 -10:00
m_hidDev.reset();
2015-04-22 14:46:32 -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();
}
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;
}
2017-09-15 12:26:39 -10:00
#if _WIN32
const PHIDP_PREPARSED_DATA DeviceBase::getReportDescriptor()
{
if (m_hidDev)
return m_hidDev->_getReportDescriptor();
return {};
}
#else
2017-09-15 07:20:52 -10:00
std::vector<uint8_t> DeviceBase::getReportDescriptor()
{
if (m_hidDev)
return m_hidDev->_getReportDescriptor();
return {};
}
2017-09-15 12:26:39 -10:00
#endif
2017-09-15 07:20:52 -10:00
2017-05-07 11:24:00 -10:00
bool DeviceBase::sendHIDReport(const uint8_t* data, size_t length, HIDReportType tp, uint32_t message)
2015-04-23 14:24:15 -10:00
{
if (m_hidDev)
2017-05-07 11:24:00 -10:00
return m_hidDev->_sendHIDReport(data, length, tp, message);
return false;
}
2017-05-07 11:24:00 -10:00
size_t DeviceBase::receiveHIDReport(uint8_t* data, size_t length, HIDReportType tp, uint32_t message)
{
if (m_hidDev)
2017-05-07 11:24:00 -10:00
return m_hidDev->_receiveHIDReport(data, length, tp, message);
return 0;
2015-04-23 14:24:15 -10:00
}
2015-04-29 00:24:39 -10:00
}