2023-12-01 09:17:09 +00:00
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <thread>
|
|
|
|
#include <functional>
|
|
|
|
#include <algorithm>
|
|
|
|
#include <memory>
|
|
|
|
#include <vector>
|
|
|
|
#include <base/utils.h>
|
|
|
|
#include <base/data.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class async_usb_gadget;
|
|
|
|
class device_option;
|
|
|
|
class image_capture;
|
|
|
|
class img_processor;
|
|
|
|
class gb_json;
|
2023-12-18 01:39:48 +00:00
|
|
|
class scanner_const_opts;
|
2023-12-19 07:27:16 +00:00
|
|
|
class scanner_hw;
|
2024-01-05 09:36:50 +00:00
|
|
|
class user_priv;
|
2024-01-16 09:51:34 +00:00
|
|
|
class imgproc_mgr;
|
2024-02-25 05:51:52 +00:00
|
|
|
class resource_mgr;
|
2023-12-01 09:17:09 +00:00
|
|
|
|
|
|
|
class async_scanner : public refer
|
|
|
|
{
|
2023-12-19 07:27:16 +00:00
|
|
|
async_usb_gadget *usb_ = nullptr;
|
|
|
|
device_option *cfg_mgr_ = nullptr;
|
|
|
|
scanner_const_opts *const_opts_ = nullptr;
|
|
|
|
scanner_hw *cis_ = nullptr;
|
2024-01-05 09:36:50 +00:00
|
|
|
user_priv *user_ = nullptr;
|
2024-01-16 09:51:34 +00:00
|
|
|
imgproc_mgr *img_prcr_ = nullptr;
|
2023-12-01 09:17:09 +00:00
|
|
|
|
|
|
|
MUTEX locker_;
|
2023-12-25 09:39:34 +00:00
|
|
|
volatile bool connected_ = false;
|
2023-12-01 09:17:09 +00:00
|
|
|
uint32_t img_cnt_;
|
|
|
|
uint32_t scan_id_;
|
|
|
|
uint32_t scan_err_;
|
|
|
|
volatile bool reply_start_;
|
2023-12-01 10:03:10 +00:00
|
|
|
int last_err_ = 0;
|
2024-02-25 05:51:52 +00:00
|
|
|
std::unique_ptr<resource_mgr> res_mgr_;
|
2023-12-01 09:17:09 +00:00
|
|
|
|
2023-12-09 10:21:05 +00:00
|
|
|
MUTEX fsender_;
|
|
|
|
std::vector<file_reader*> send_files_;
|
2023-12-18 01:39:48 +00:00
|
|
|
|
2024-01-16 09:51:34 +00:00
|
|
|
dyn_mem_ptr handle_bulk_cmd(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
2023-12-01 09:17:09 +00:00
|
|
|
void init(void);
|
2024-01-05 09:36:50 +00:00
|
|
|
bool on_energy_conservation(bool normal/*true - working status; false - go to sleep*/); // return true to enable get into 'normal' status
|
2023-12-01 09:17:09 +00:00
|
|
|
|
2024-01-16 09:51:34 +00:00
|
|
|
dyn_mem_ptr handle_simple_roger(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_get_opt_value(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_get_opt_all(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_set_opt(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_file_receive(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_file_send(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_file_send_roger(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_scan_start(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_scan_stop(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
|
|
|
dyn_mem_ptr handle_process_cmd(LPPACK_BASE pack, uint32_t* used, packet_data_base_ptr* required, uint32_t session);
|
2023-12-01 09:17:09 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
async_scanner();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
~async_scanner();
|
|
|
|
|
|
|
|
public:
|
|
|
|
uint32_t stop(void);
|
2023-12-01 10:03:10 +00:00
|
|
|
int last_error(void);
|
2023-12-01 09:17:09 +00:00
|
|
|
};
|