#include "usbtransmit.h" #include "usbdevice.h" #include #include #include "applog.h" #include "memoryex.h" #include #include "stringex.hpp" static std::string loggername = "UsbTransmit"; UsbTransmit::UsbTransmit(std::shared_ptr usb) { LOG_INIT(); this->usb = usb; } UsbTransmit::~UsbTransmit() { cannel(); } void UsbTransmit::write(MemoryPtr memroy) { LOG_TRACE("tx start in"); if (is_writing()) { LOG_TRACE("send image data error "); printf("send image data error "); return; } static int indextransfer=0; runthread.reset(new ThreadEx([this, memroy]() { if (usb && usb->is_connected()) { printf("tx starting"); printf("tx starting transfer index =%d mmy size = %d",++indextransfer,memroy->size()); //printf("\n tx starting transfer index =%d mmy size = %d",++indextransfer,memroy->size()); int num= usb->write_bulk(memroy->data(), memroy->size()); printf("tx end\n"); //printf("\n xfer size %d",num); } })); } int UsbTransmit::write_bulk(void* data,int size) { int nwrite = 0; if (usb && usb->is_connected()) nwrite = usb->write_bulk(data, size); return nwrite; } bool UsbTransmit::is_writing() { LOG_TRACE("checking UsbTransmit is_writing"); auto ret=runthread && runthread->is_runing(); LOG_TRACE(string_format("checking UsbTransmit done ret= %s ",ret?"true":"false")); return ret; } void UsbTransmit::cannel() { if(runthread) runthread->cannel(); }