sane-project-backends/backend/genesys/test_usb_device.cpp

134 wiersze
2.8 KiB
C++

/* sane - Scanner Access Now Easy.
Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
This file is part of the SANE package.
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 2 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 <https://www.gnu.org/licenses/>.
*/
#define DEBUG_DECLARE_ONLY
#include "test_usb_device.h"
#include "low.h"
namespace genesys {
TestUsbDevice::TestUsbDevice(std::uint16_t vendor, std::uint16_t product,
std::uint16_t bcd_device) :
vendor_{vendor},
product_{product},
bcd_device_{bcd_device}
{
}
TestUsbDevice::~TestUsbDevice()
{
if (is_open()) {
DBG(DBG_error, "TestUsbDevice not closed; closing automatically");
close();
}
}
void TestUsbDevice::open(const char* dev_name)
{
DBG_HELPER(dbg);
if (is_open()) {
throw SaneException("device already open");
}
name_ = dev_name;
is_open_ = true;
}
void TestUsbDevice::clear_halt()
{
DBG_HELPER(dbg);
assert_is_open();
}
void TestUsbDevice::reset()
{
DBG_HELPER(dbg);
assert_is_open();
}
void TestUsbDevice::close()
{
DBG_HELPER(dbg);
assert_is_open();
is_open_ = false;
name_ = "";
}
std::uint16_t TestUsbDevice::get_vendor_id()
{
DBG_HELPER(dbg);
assert_is_open();
return vendor_;
}
std::uint16_t TestUsbDevice::get_product_id()
{
DBG_HELPER(dbg);
assert_is_open();
return product_;
}
std::uint16_t TestUsbDevice::get_bcd_device()
{
DBG_HELPER(dbg);
assert_is_open();
return bcd_device_;
}
void TestUsbDevice::control_msg(int rtype, int reg, int value, int index, int length,
std::uint8_t* data)
{
(void) reg;
(void) value;
(void) index;
DBG_HELPER(dbg);
assert_is_open();
if (rtype == REQUEST_TYPE_IN) {
std::memset(data, 0, length);
}
}
void TestUsbDevice::bulk_read(std::uint8_t* buffer, std::size_t* size)
{
DBG_HELPER(dbg);
assert_is_open();
std::memset(buffer, 0, *size);
}
void TestUsbDevice::bulk_write(const std::uint8_t* buffer, std::size_t* size)
{
(void) buffer;
(void) size;
DBG_HELPER(dbg);
assert_is_open();
}
void TestUsbDevice::assert_is_open() const
{
if (!is_open()) {
throw SaneException("device not open");
}
}
} // namespace genesys