获取配置接口增加配置ID返回值

This commit is contained in:
gb 2023-01-10 14:21:39 +08:00
parent 8df03506e1
commit 2d46b7dd65
6 changed files with 20 additions and 12 deletions

View File

@ -600,15 +600,22 @@ void hg_scanner::init_setting_func_map(void)
setting_map_[SANE_STD_OPT_NAME_SEARCH_HOLE_RANGE_B] = &hg_scanner::setting_isremove_low_hole_threshold;
setting_map_[SANE_STD_OPT_NAME_FOLD_TYPE] = &hg_scanner::setting_fold_type;
}
std::string hg_scanner::setting_name_from(const char* n_or_id)
std::string hg_scanner::setting_name_from(const char* n_or_id, int* id)
{
if (IS_PTR_NUMBER(n_or_id))
{
if (id)
*id = (int)n_or_id;
if ((unsigned long)n_or_id < jsn_children_.size())
return jsn_children_[(unsigned long)n_or_id];
else
return "";
}
else if (id)
{
*id = std::distance(jsn_children_.begin(), std::find(jsn_children_.begin(), jsn_children_.end(), n_or_id));
}
return n_or_id;
}
@ -2898,12 +2905,12 @@ int hg_scanner::set_setting(const char* name, void* data, int len)
return ret;
}
int hg_scanner::get_setting(const char* name, char* json_txt_buf, int* len)
int hg_scanner::get_setting(const char* name, char* json_txt_buf, int* len, int* id)
{
if (!len)
return SCANNER_ERR_INVALID_PARAMETER;
std::string real_n(setting_name_from(name));
std::string real_n(setting_name_from(name, id));
if (name == nullptr)
{
*len = setting_jsn_.size();

View File

@ -50,7 +50,6 @@
#define HGVERSION_LIBNANE "libCtsVersion.so"
#endif
#else
#define OEM_HUAGAO
#ifdef WIN32
#define HGVERSION_LIBNANE "HGVersion.dll"
#else
@ -131,7 +130,7 @@ class hg_scanner
void dump_image_real(hg_imgproc::HIMGPRC himg, const char* desc);
void init_setting_func_map(void);
std::string setting_name_from(const char* n_or_id);
std::string setting_name_from(const char* n_or_id, int* id = nullptr);
void get_range(const char* name, std::vector<std::string>& range, std::string& def_val, bool& is_range/*range or list*/);
bool check_range(const char* name, bool& val);
bool check_range(const char* name, int& val);
@ -417,7 +416,7 @@ public:
int get_vid(void);
int close(bool force);
int set_setting(const char* name, void* data, int len);
int get_setting(const char* name, char* json_txt_buf, int* len);
int get_setting(const char* name, char* json_txt_buf, int* len, int* id);
int hgpaper_to_devspaper(Paper_Map papermap[], int len, int& paper, bool* exact, TwSS* type);
int image_configuration(SCANCONF &ic);
std::string name(void);

View File

@ -691,13 +691,13 @@ scanner_err hg_scanner_mgr::hg_scanner_close(scanner_handle h, bool force)
return SCANNER_ERR_OK;
}
scanner_err hg_scanner_mgr::hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len)
scanner_err hg_scanner_mgr::hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len, SANE_Int* id)
{
if (!len)
return SCANNER_ERR_INVALID_PARAMETER;
int l = *len,
err = SCAN_PTR(h)->get_setting(name, data, &l);
err = SCAN_PTR(h)->get_setting(name, data, &l, id);
*len = l;

View File

@ -110,7 +110,7 @@ public:
scanner_err hg_scanner_enum(ScannerInfo* scanner_list, long* count, bool local_only);
scanner_err hg_scanner_open(scanner_handle* h, const char* name, bool shared, const char* user, const char* pwd, const char* check, char* rsc);
scanner_err hg_scanner_close(scanner_handle h, bool force);
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len);
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len, SANE_Int* id);
scanner_err hg_scanner_set_parameter(scanner_handle h, const char* name, void* data, long len);
scanner_err hg_scanner_start(scanner_handle h, void* async_event, int num);
scanner_err hg_scanner_stop(scanner_handle h);

View File

@ -122,9 +122,9 @@ extern "C"
return hg_scanner_mgr::instance()->hg_scanner_close(h, force);
}
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len)
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* data, long* len, SANE_Int* id)
{
return hg_scanner_mgr::instance()->hg_scanner_get_parameter(h, name, data, len);
return hg_scanner_mgr::instance()->hg_scanner_get_parameter(h, name, data, len, id);
}
scanner_err hg_scanner_set_parameter(scanner_handle h, const char* name, void* data, long len)

View File

@ -328,10 +328,12 @@ extern "C"{
// 如果“param_no==0”则返回最大可配置的参数号
// 该参数必须非空如果为NULL则会返回 EPARAMETERINVAL 的错误
//
// id - to receive the option ID if 'name' is the name of the option
//
// Return: 错误代码E_OK or E_INSUFFICIENTMEM or E_PARAMETERINVAL or E_DEVICENOTFOUND or E_OUTOFRANGE
//
// NOTE: 'data'空间由用户分配,如果空间太小(包含传入NULL)会在len中返回所需要的最小空间字节数并返回 EINSUFFICIENTMEM
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* json_data, long* len);
scanner_err hg_scanner_get_parameter(scanner_handle h, const char* name, char* json_data, long* len, SANE_Int* id = nullptr);
// Function: 设置设备的配置参数
//