diff --git a/hgdriver/hgdev/hg_scanner.cpp b/hgdriver/hgdev/hg_scanner.cpp index 7eedcac..26f624e 100644 --- a/hgdriver/hgdev/hg_scanner.cpp +++ b/hgdriver/hgdev/hg_scanner.cpp @@ -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")); diff --git a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp index ef42705..46d733c 100644 --- a/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp +++ b/hgdriver/wrapper/huagaoxxx_warraper_ex.cpp @@ -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); diff --git a/hgsane/sane_hg_mdw.cpp b/hgsane/sane_hg_mdw.cpp index b953de1..a582dd1 100644 --- a/hgsane/sane_hg_mdw.cpp +++ b/hgsane/sane_hg_mdw.cpp @@ -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; } - // 暂不支持科学计数?1.2e+10 + // 暂不支持科学计数�?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; // 硬件可设置默认? + | SANE_CAP_AUTOMATIC; // 硬件可设置默认�? 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*/; // 硬件可设置默认? + /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认�? 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*/; // 硬件可设置默认? + /*| SANE_CAP_AUTOMATIC*/; // 硬件可设置默认�? 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; - // 关联? + // 关联�? 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间隙可能新增的设备预留空? + count += 4; // 为两次hg_scanner_enum间隙可能新增的设备预留空�? 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) } /// -/// 关联项处? +/// 关联项处�? 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;