SANE属性name及fixed-id定义,单独放sane_name.h文件中统一管理

This commit is contained in:
gb 2024-01-31 12:03:56 +08:00
parent 0ad5a10dd5
commit 4a454d6473
7 changed files with 89 additions and 10 deletions

View File

@ -134,6 +134,7 @@ void hg_scanner::init(void)
else if (pimg == IMG_RECEIVER_FINISHED) else if (pimg == IMG_RECEIVER_FINISHED)
{ {
status_ = size; status_ = size;
utils::to_log(LOG_LEVEL_DEBUG, "Scan finished with error: %s\n", scanner_error_name(status_).c_str());
if (scan_over_notify_) if (scan_over_notify_)
scan_over_notify_(status_); scan_over_notify_(status_);
} }
@ -310,7 +311,7 @@ char* hg_scanner::get_value(const char* name, void* value, size_t* size, int* er
if (err) if (err)
*err = status_; *err = status_;
} }
else if (strcmp(name, SANE_FULL_NAME(DUMP_IMG_PATH)) == 0) else if (strcmp(name, SANE_OPT_NAME(DUMP_IMG_PATH)) == 0)
{ {
ret = (char*)malloc(dump_path_.length() + 1); ret = (char*)malloc(dump_path_.length() + 1);
strcpy(ret, dump_path_.c_str()); strcpy(ret, dump_path_.c_str());
@ -354,10 +355,10 @@ int hg_scanner::set_value(const char* name, void* val)
std::string t(dev_opts_->get_option_value_type(name, &size)); std::string t(dev_opts_->get_option_value_type(name, &size));
uint16_t after = 0; uint16_t after = 0;
if (strcmp(SANE_FULL_NAME(RESOLUTION), name) == 0) if (strcmp(SANE_OPT_NAME(RESOLUTION), name) == 0)
dpi_ = *(int*)val; dpi_ = *(int*)val;
if (strcmp(name, SANE_FULL_NAME(DUMP_IMG)) == 0) if (strcmp(name, SANE_OPT_NAME(DUMP_IMG)) == 0)
{ {
if (*(bool*)val && dump_path_.empty()) if (*(bool*)val && dump_path_.empty())
{ {
@ -366,7 +367,7 @@ int hg_scanner::set_value(const char* name, void* val)
dump_path_ += std::string(PATH_SEPARATOR); dump_path_ += std::string(PATH_SEPARATOR);
} }
} }
else if (strcmp(name, SANE_FULL_NAME(DUMP_IMG_PATH)) == 0) else if (strcmp(name, SANE_OPT_NAME(DUMP_IMG_PATH)) == 0)
{ {
dump_path_ = (char*)val; dump_path_ = (char*)val;
@ -494,8 +495,8 @@ int hg_scanner::get_image_info(SANE_Parameters* pii)
else else
{ {
// default ... // default ...
double *w = (double*)get_value(SANE_FULL_NAME(PAPER_W), nullptr, nullptr), double *w = (double*)get_value(SANE_OPT_NAME(PAPER_W), nullptr, nullptr),
*h = (double*)get_value(SANE_FULL_NAME(PAPER_H), nullptr, nullptr); *h = (double*)get_value(SANE_OPT_NAME(PAPER_H), nullptr, nullptr);
int res = dpi_; int res = dpi_;
SIZE size(paper::size("A3")); SIZE size(paper::size("A3"));
@ -634,9 +635,9 @@ int hg_scanner::file_transfer(const char* local, const char* remote, bool to_rem
tx_prg_ = now; tx_prg_ = now;
status_ = err; status_ = err;
if (err) if (err)
utils::to_log(LOG_LEVEL_WARNING, "File transfer error: %d (at %llu/%llu)\n", err, txed, total); utils::to_log(LOG_LEVEL_WARNING, "File transfer error: %s (at %llu/%llu)\n", scanner_error_name(err).c_str(), txed, total);
else if (txed >= total) else if (txed >= total)
utils::to_log(LOG_LEVEL_DEBUG, "File transfer finished(%llu/%llu) with error %d\n", txed, total, err); utils::to_log(LOG_LEVEL_DEBUG, "File transfer finished(%llu/%llu) with error %d\n", txed, total, scanner_error_name(err).c_str());
return 0; return 0;

View File

@ -272,7 +272,7 @@ void async_usb_host::thread_read_bulk(void)
else else
{ {
// handle the error ... // handle the error ...
utils::to_log(LOG_LEVEL_FATAL, "thread_read_bulk FATAL error: %d\r\n", err); utils::to_log(LOG_LEVEL_FATAL, "thread_read_bulk FATAL error: %d(%s)\r\n", err, libusb_error_name(err));
break; break;
} }
} }

View File

@ -221,7 +221,7 @@ scanner_handler::scanner_handler(void) : usb_(nullptr), status_(SCANNER_ERR_NOT_
else if (pack->cmd == PACK_CMD_FILE_WRITE_REQ_ROGER) else if (pack->cmd == PACK_CMD_FILE_WRITE_REQ_ROGER)
{ {
*used = sizeof(PACK_BASE); *used = sizeof(PACK_BASE);
utils::to_log(LOG_LEVEL_DEBUG, "Send file finished with error: %d\r\n", pack->data); utils::to_log(LOG_LEVEL_DEBUG, "Send file finished with error: %s\r\n", scanner_error_name(pack->data).c_str());
} }
else else
{ {

View File

@ -4,6 +4,7 @@
#include <algorithm> #include <algorithm>
#include <string.h> #include <string.h>
#define IS_PTR_NUMBER(ptr) (((unsigned long long)(ptr)) < 0x10000)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// sane_opt // sane_opt

View File

@ -6,6 +6,8 @@
#define OS_WIN 0 #define OS_WIN 0
#endif #endif
#include <math.h> // for fabs
#define SIZE_KB(n) ((n) * 1024) #define SIZE_KB(n) ((n) * 1024)
#define SIZE_MB(n) SIZE_KB((n) * 1024) #define SIZE_MB(n) SIZE_KB((n) * 1024)
#define SIZE_GB(n) SIZE_MB((n) * 1024) #define SIZE_GB(n) SIZE_MB((n) * 1024)
@ -15,6 +17,7 @@
#define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s)) #define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s))
#define MM_PER_INCH 25.4f #define MM_PER_INCH 25.4f
#define IS_DOUBLE_EQUAL(a, b) fabs((a) - (b)) < .000001
#define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align)) #define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align))
#define ALIGN_INT(v) ALIGN_TO(v, sizeof(int)) #define ALIGN_INT(v) ALIGN_TO(v, sizeof(int))
@ -26,6 +29,43 @@
return #e; return #e;
////////////////////////////////////////////////////////////////////////////
// console definitions
enum console_color
{
COLOR_CHAR_BLACK = 0x30,
COLOR_CHAR_RED,
COLOR_CHAR_GREEN,
COLOR_CHAR_YELLOW,
COLOR_CHAR_BLUE,
COLOR_CHAR_MAGENTA,
COLOR_CHAR_CYAN,
COLOR_CHAR_WHITE,
COLOR_BKG_NONE = 0x3f,
COLOR_BKG_BLACK = 0x40,
COLOR_BKG_RED,
COLOR_BKG_GREEN,
COLOR_BKG_YELLOW,
COLOR_BKG_BLUE,
COLOR_BKG_MAGENTA,
COLOR_BKG_CYAN,
COLOR_BKG_WHITE,
};
enum console_display_mode
{
MODE_DEFAULT = 0,
MODE_HILIGHT,
MODE_DIM,
MODE_UNDER_LINE = 4,
MODE_BLINK,
MODE_REVERSE = 7,
MODE_HIDDEN,
MODE_NON_BOLD = 22,
MODE_NON_BLINK = 25,
MODE_NON_REVERSE = 27,
};
#if !OS_WIN // migrate codes from windows to linux ... #if !OS_WIN // migrate codes from windows to linux ...
#include <unistd.h> #include <unistd.h>
#include <stdint.h> #include <stdint.h>

View File

@ -723,6 +723,18 @@ namespace utils
return len > 0 ? path : lnk_file; return len > 0 ? path : lnk_file;
#endif #endif
} }
std::string from_console(const char* tips, console_color clr)
{
std::string cmd("");
char in[2] = {0};
if(tips && tips[0])
printf_with_color(tips, clr);
while((in[0] = getchar()) != 0x0a)
cmd += in;
return std::move(cmd);
}
std::string get_ini_value(const char* seg, const char* key, const char* cfg_file) std::string get_ini_value(const char* seg, const char* key, const char* cfg_file)
{ {
char buf[512] = { 0 }; char buf[512] = { 0 };
@ -788,6 +800,29 @@ namespace utils
return err; return err;
} }
void printf_with_color(const char* msg, console_color text_clr, console_color bkg_clr, console_display_mode mode)
{
char buf[80] = {0};
// sprintf(buf, "\033[%xm %%s \033[0m", text_clr);
if(mode != console_display_mode::MODE_DEFAULT)
{
if(bkg_clr != console_color::COLOR_BKG_NONE)
sprintf(buf, "\033[%d;%x;%xm%%s\033[0m", mode, text_clr, bkg_clr);
else
sprintf(buf, "\033[%d;%xm%%s\033[0m", mode, text_clr);
}
else if(bkg_clr != console_color::COLOR_BKG_NONE)
{
sprintf(buf, "\033[%x;%xm%%s\033[0m", text_clr, bkg_clr);
}
else
{
sprintf(buf, "\033[%xm%%s\033[0m", text_clr);
}
printf(buf, msg);
}
bool is_match_pattern(const char* text, const char* pattern) bool is_match_pattern(const char* text, const char* pattern)
{ {

View File

@ -44,9 +44,11 @@ namespace utils
std::string get_module_full_path(const char* part_name = nullptr/*nullptr to get main-pe/first module's full path*/); std::string get_module_full_path(const char* part_name = nullptr/*nullptr to get main-pe/first module's full path*/);
std::string find_file(const char* root_dir, const char* part_name, bool recursive = false); std::string find_file(const char* root_dir, const char* part_name, bool recursive = false);
std::string target_file_from_link(const char* lnk_file); std::string target_file_from_link(const char* lnk_file);
std::string from_console(const char* tips = nullptr, console_color clr = console_color::COLOR_CHAR_GREEN);
std::string get_ini_value(const char* seg, const char* key, const char* cfg_file); // return "" if not found std::string get_ini_value(const char* seg, const char* key, const char* cfg_file); // return "" if not found
std::string load_mini_file(const char* file, int* err); // <= 1MB std::string load_mini_file(const char* file, int* err); // <= 1MB
int save_2_file(void* data, size_t len, const char* file, bool append = false/*append or new*/, size_t max_size = -1/*in append mode, truncate file if size is exceeded this value if was not -1*/); int save_2_file(void* data, size_t len, const char* file, bool append = false/*append or new*/, size_t max_size = -1/*in append mode, truncate file if size is exceeded this value if was not -1*/);
void printf_with_color(const char* msg, console_color text_clr, console_color bkg_clr = COLOR_BKG_NONE, console_display_mode mode = console_display_mode::MODE_DEFAULT);
bool is_match_pattern(const char* text, const char* pattern); bool is_match_pattern(const char* text, const char* pattern);
const char* to_lower(std::string& str); // return str.c_str() const char* to_lower(std::string& str); // return str.c_str()