#include "usbreceive.h" #include "memoryex.h" #include "applog.h" #include #include "usbdevice.h" static std::string loggername = "UsbReceive"; UsbReceive::UsbReceive(std::shared_ptr t_usb) { LOG_INIT(); this->usb=t_usb; } UsbReceive::~UsbReceive() { cannel(); } int UsbReceive::read(MemoryPtr& memroy) { int nread=0; LOG_TRACE("rx start in"); if (is_reading()) return nread; runthread.reset(new ThreadEx([this, memroy]() { LOG_TRACE("rx starting"); if (usb && usb->is_connected()) usb->read_bulk(memroy->data(), memroy->size()); LOG_TRACE("rx started"); })); return nread; } int UsbReceive::read_bulk(void* data,unsigned int length) { int nread=0; if(usb.get()&&usb->is_connected()) { if(data != nullptr && length >0) nread = usb->read_bulk(data,length); else LOG_TRACE("read_bulk uncorrect data ptr or length"); } return nread; } bool UsbReceive::is_reading() { return runthread&&runthread->is_runing(); } void UsbReceive::cannel() { if(runthread.get()) runthread->cannel(); }