add last_error

This commit is contained in:
gb 2023-12-01 18:03:10 +08:00
parent 4d0f93932d
commit 575d2919cb
7 changed files with 34 additions and 6 deletions

View File

@ -56,6 +56,7 @@ async_scanner::async_scanner() : usb_(nullptr), cfg_mgr_(nullptr), scan_id_(0)
cfg_mgr_ = new device_option(user, on_log);
init();
usb_ = new async_usb_gadget(bulk_handle, on_connect);
last_err_ = usb_->last_error();
}
async_scanner::~async_scanner()
@ -70,6 +71,7 @@ async_scanner::~async_scanner()
cfg_mgr_->clear();
delete cfg_mgr_;
}
utils::uninit();
}
dyn_mem_ptr async_scanner::handle_bulk_cmd(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required)
@ -372,4 +374,7 @@ uint32_t async_scanner::stop(void)
usb_->stop();
}
}
int async_scanner::last_error(void)
{
return last_err_;
}

View File

@ -26,6 +26,7 @@ class async_scanner : public refer
uint32_t scan_id_;
uint32_t scan_err_;
volatile bool reply_start_;
int last_err_ = 0;
dyn_mem_ptr handle_bulk_cmd(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required);
void init(void);
@ -48,4 +49,5 @@ protected:
public:
uint32_t stop(void);
int last_error(void);
};

View File

@ -39,7 +39,13 @@ int main()
exit(-1);
}
async_scanner *scanner = new async_scanner();
while(1) {std::this_thread::sleep_for(std::chrono::milliseconds(2));}
int err = scanner->last_error();
if(err == 0)
while(1) {std::this_thread::sleep_for(std::chrono::milliseconds(2));}
scanner->stop();
scanner->release();
return 0;
}

View File

@ -1067,6 +1067,7 @@ namespace utils
if (fn_appendix)
file += fn_appendix;
file += ".log";
printf("log file: %s\n", file.c_str());
}
log_cls::instance()->set_log_type(type, &file[0]);

View File

@ -384,12 +384,20 @@ int usb_device::config_device(bool ffs_mode)
{
if(ffs_mode)
{
ret = write(gadget_.usb_device, &ffs_strs_, sizeof(ffs_strs_));
if(ret)
ret = write(gadget_.usb_device, &ffs_strs_, ffs_strs_.header.length);
if(ret != ffs_strs_.header.length)
{
ret = errno;
utils::to_log(LOG_LEVEL_FATAL, "config device with ffs_strings failed: %d - %s\n", errno, strerror(errno));
}
else
{
ret = 0;
}
}
else
{
ret = 0;
}
}
else

View File

@ -25,7 +25,7 @@ async_usb_gadget::async_usb_gadget(std::function<FUNCTION_PROTO_COMMAND_HANDLE>
dev_ = new usb_device("fe900000.dwc3", "/opt/cfg/usb_gadget/g1/UDC", "linaro");
dev_->add_endpoint(USB_EP_BULK_IN, true, true);
dev_->add_endpoint(USB_EP_BULK_OUT, true, false);
if(dev_->open_device(USB_DEV, true))
if((last_err_ = dev_->open_device(USB_DEV, true)))
{
dev_->release();
dev_ = nullptr;
@ -634,3 +634,7 @@ int async_usb_gadget::write_bulk(data_source_ptr data)
return quel;
}
int async_usb_gadget::last_error(void)
{
return last_err_;
}

View File

@ -52,6 +52,7 @@ class async_usb_gadget : public refer
uint32_t enc_head_;
uint32_t enc_payload_;
uint8_t enc_data_;
int last_err_ = 0;
volatile EP0REPLYSTATUS status_;
safe_fifo<dyn_mem_ptr> cmd_que_;
@ -94,5 +95,6 @@ protected:
public:
int stop(void);
int write_bulk(data_source_ptr data); // return sent-que length
int last_error(void);
};