This commit is contained in:
13038267101 2023-02-21 09:07:37 +08:00
commit 2baf6ecbdf
3 changed files with 33 additions and 13 deletions

View File

@ -1383,7 +1383,7 @@ int hg_scanner::setting_color_mode(void* data)
if(ret == SCANNER_ERR_NOT_EXACT)
strcpy((char*)data, str.c_str());
return ret;
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
}
int hg_scanner::setting_multi_out(void* data)
{
@ -1400,7 +1400,7 @@ int hg_scanner::setting_multi_out(void* data)
//}
//on_color_mode_changed(val);
return SCANNER_ERR_OK;
return SCANNER_ERR_RELOAD_OPT_PARAM; // SCANNER_ERR_OK;
}
int hg_scanner::setting_multi_out_type(void* data)
{
@ -1421,7 +1421,7 @@ int hg_scanner::setting_multi_out_type(void* data)
color = COLOR_MODE_24_BITS;
on_color_mode_changed(color);*/
return ret;
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
}
int hg_scanner::setting_rid_color(void* data)
{
@ -1539,7 +1539,7 @@ int hg_scanner::setting_paper(void* data)
if(old != image_prc_param_.bits.paper)
reset_custom_area_range(image_prc_param_.bits.paper);
return ret;
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
}
int hg_scanner::setting_paper_check(void* data)
{
@ -1629,7 +1629,7 @@ int hg_scanner::setting_resolution(void* data)
VLOG_MINI_3(LOG_LEVEL_DEBUG_INFO, "Change resolution from %d to %d = %s\n", old, *((int*)data), hg_scanner_err_name(ret));
//*((int*)data) = resolution_;
return ret;
return SCANNER_ERR_RELOAD_OPT_PARAM; // ret;
}
int hg_scanner::setting_exchagnge(void* data)
{
@ -2929,7 +2929,8 @@ int hg_scanner::set_setting(const char* name, void* data, int len)
ret = set_setting_value(real_n.c_str(), data, len);
}
if (ret == SCANNER_ERR_OK || ret == SCANNER_ERR_NOT_EXACT || ret == SCANNER_ERR_CONFIGURATION_CHANGED)
if (ret == SCANNER_ERR_OK || ret == SCANNER_ERR_NOT_EXACT || ret == SCANNER_ERR_CONFIGURATION_CHANGED
|| ret == SCANNER_ERR_RELOAD_IMAGE_PARAM || ret == SCANNER_ERR_RELOAD_OPT_PARAM)
{
std::string type(""), name(get_setting_item_string(real_n.c_str(), "title"));

View File

@ -211,6 +211,8 @@ extern "C"
RETURN_IF(err, SCANNER_ERR_IO_PENDING);
RETURN_IF(err, SCANNER_ERR_NOT_EXACT);
RETURN_IF(err, SCANNER_ERR_CONFIGURATION_CHANGED);
RETURN_IF(err, SCANNER_ERR_RELOAD_IMAGE_PARAM);
RETURN_IF(err, SCANNER_ERR_RELOAD_OPT_PARAM);
RETURN_IF(err, SCANNER_ERR_NOT_OPEN);
RETURN_IF(err, SCANNER_ERR_NOT_START);
RETURN_IF(err, SCANNER_ERR_NOT_ANY_MORE);
@ -279,6 +281,8 @@ extern "C"
RETURN_DESC_IF(err, SCANNER_ERR_IO_PENDING);
RETURN_DESC_IF(err, SCANNER_ERR_NOT_EXACT);
RETURN_DESC_IF(err, SCANNER_ERR_CONFIGURATION_CHANGED);
RETURN_DESC_IF(err, SCANNER_ERR_RELOAD_IMAGE_PARAM);
RETURN_DESC_IF(err, SCANNER_ERR_RELOAD_OPT_PARAM);
RETURN_DESC_IF(err, SCANNER_ERR_NOT_OPEN);
RETURN_DESC_IF(err, SCANNER_ERR_NOT_START);
RETURN_DESC_IF(err, SCANNER_ERR_NOT_ANY_MORE);

View File

@ -51,6 +51,8 @@ namespace local_utility
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_IO_PENDING, SANE_STATUS_GOOD);
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_EXACT, SANE_STATUS_GOOD);
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_CONFIGURATION_CHANGED, SANE_STATUS_GOOD);
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_RELOAD_IMAGE_PARAM, SANE_STATUS_GOOD);
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_RELOAD_OPT_PARAM, SANE_STATUS_GOOD);
//RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_OPEN, SANE_STATUS_NO_DOCS);
//RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NOT_START, SANE_STATUS_NO_DOCS);
RETURN_MATCH_ERROR(hgerr, SCANNER_ERR_NO_DATA, SANE_STATUS_EOF);
@ -77,6 +79,8 @@ namespace local_utility
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_IO_PENDING);
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_NOT_EXACT);
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_CONFIGURATION_CHANGED);
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_RELOAD_IMAGE_PARAM);
RETURN_MATCH_ERROR(statu, SANE_STATUS_GOOD, SCANNER_ERR_RELOAD_OPT_PARAM);
//RETURN_MATCH_ERROR(statu, SANE_STATUS_NO_DOCS, SCANNER_ERR_NOT_OPEN);
//RETURN_MATCH_ERROR(statu, SANE_STATUS_NO_DOCS, SCANNER_ERR_NOT_START);
RETURN_MATCH_ERROR(statu, SANE_STATUS_EOF, SCANNER_ERR_NO_DATA);
@ -171,7 +175,7 @@ namespace local_utility
return str > bgn;
}
// æšä¸<EFBFBD>支æŒ<EFBFBD>ç§å­¦è®¡æ•°æ³?1.2e+10
// 暂不支持科学计数<EFBFBD>?1.2e+10
bool get_number(const char*& str, double& val)
{
const char* bgn = str;
@ -583,7 +587,7 @@ SANE_Option_Descriptor* hg_sane_middleware::string_option_to_SANE_descriptor(con
sod->unit = SANE_UNIT_NONE;
sod->size = values.size();
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
| SANE_CAP_AUTOMATIC; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
| SANE_CAP_AUTOMATIC; // 硬件可设置默认<EFBFBD>?
if (values.size())
{
sod->constraint_type = SANE_CONSTRAINT_STRING_LIST;
@ -704,7 +708,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
sod->unit = SANE_UNIT_NONE;
sod->size = sizeof(SANE_Word);
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
if (values.size())
{
@ -754,7 +758,7 @@ SANE_Option_Descriptor* hg_sane_middleware::number_option_to_SANE_descriptor(con
sod->unit = SANE_UNIT_NONE;
sod->size = sizeof(SANE_Word);
sod->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT // 软件可设置选项
/*| SANE_CAP_AUTOMATIC*/; // 硬件å<EFBFBD>¯è®¾ç½®é»˜è®¤å€?
/*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认<EFBFBD>?
if (values.size())
{
@ -1015,7 +1019,7 @@ SANE_Option_Descriptor* hg_sane_middleware::from_json(scanner_handle h, const st
//if (jsn->get_value("enable", enabled) && !enabled)
// ret->cap |= SANE_CAP_INACTIVE;
// å…³è<EFBFBD>”é¡?
// 关联<EFBFBD>?
json* depend = NULL;
SLAVEOP so;
if (jsn->get_value("depend_or", depend))
@ -1371,7 +1375,7 @@ SANE_Status hg_sane_middleware::get_devices(const SANE_Device*** device_list, SA
if (hgerr == SCANNER_ERR_INSUFFICIENT_MEMORY)
{
count += 4; // 为两次hg_scanner_enumé—´éš™å<EFBFBD>¯èƒ½æ°å¢žçš„设备预留空é—?
count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空<EFBFBD>?
dev = (ScannerInfo*)local_utility::acquire_memory(sizeof(ScannerInfo) * count, "hg_sane_middleware::get_devices");
hgerr = hg_scanner_enum(dev, &count, local_only);
if (hgerr != SCANNER_ERR_OK)
@ -1674,6 +1678,17 @@ SANE_Status hg_sane_middleware::set_option(SANE_Handle h, const void* option, SA
on_SCANNER_ERR_CONFIGURATION_CHANGED(dev);
err = (scanner_err)SANE_INFO_RELOAD_OPTIONS;
}
else if(err == SCANNER_ERR_RELOAD_IMAGE_PARAM)
{
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "the setting '%s' affects image parameter, APP should re-get ...\n", desc->title);
err = (scanner_err)SANE_INFO_RELOAD_PARAMS;
}
else if(err == SCANNER_ERR_RELOAD_OPT_PARAM)
{
VLOG_MINI_1(LOG_LEVEL_DEBUG_INFO, "the setting '%s' affects image parameter and options, APP should re-get image info and reload options...\n", desc->title);
on_SCANNER_ERR_CONFIGURATION_CHANGED(dev);
err = (scanner_err)(SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS);
}
else if (err == SCANNER_ERR_ACCESS_DENIED)
{
status = SANE_STATUS_ACCESS_DENIED;
@ -1749,7 +1764,7 @@ bool hg_sane_middleware::is_ready(void)
}
/// <summary>
/// å…³è<EFBFBD>”项处ç<EFBFBD>?
/// 关联项处<EFBFBD>?
bool hg_sane_middleware::compare_val_equal(const char* cur_val, const char* limit_l, const char* limit_r)
{
return strcmp(cur_val, limit_l) == 0;