66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
#include "P700Driver.hpp"
|
|
|
|
#include <iostream>
|
|
#include <stdexcept>
|
|
|
|
#include <spdlog/spdlog.h>
|
|
|
|
namespace ptprnt::driver {
|
|
|
|
P700Driver::P700Driver(std::shared_ptr<Usb> usbDriver, uint16_t usbDevVendor, uint16_t usbProductId)
|
|
: mUsbDriver{std::move(usbDriver)}
|
|
, mUsbDev{.vendorId = usbDevVendor, .productId = usbProductId}
|
|
|
|
{
|
|
spdlog::debug("P700Driver constructing");
|
|
if(!init()) {
|
|
spdlog::error("Could not find any P700 Printers.");
|
|
}
|
|
else {
|
|
spdlog::info("Found P700 Printer :-).");
|
|
}
|
|
}
|
|
|
|
P700Driver::~P700Driver() {
|
|
spdlog::debug("P700Driver destructing");
|
|
}
|
|
|
|
driver::info P700Driver::getInfo() {
|
|
return driver::info{};
|
|
}
|
|
|
|
bool P700Driver::open() {
|
|
return false;
|
|
}
|
|
|
|
bool P700Driver::close() {
|
|
return false;
|
|
}
|
|
|
|
bool P700Driver::command() {
|
|
return false;
|
|
}
|
|
|
|
bool P700Driver::init() {
|
|
auto devs = mUsbDriver->getDevices();
|
|
|
|
if(!devs.has_value()) {
|
|
spdlog::error("No USB devices found");
|
|
return false;
|
|
}
|
|
|
|
auto devIt = std::find_if(devs.value().begin(), devs.value().end(),
|
|
[=] (auto dev) { return mUsbDev.vendorId == dev.vendorId && mUsbDev.productId == dev.productId;}
|
|
);
|
|
|
|
if(devIt == devs.value().end()) {
|
|
spdlog::error("No device with {0:04X}:{1:04X}", mUsbDev.vendorId, mUsbDev.productId);
|
|
return false;
|
|
}
|
|
|
|
mUsbDev = *devIt;
|
|
|
|
return true;
|
|
}
|
|
|
|
} // namespace ptprnt::driver
|