genesys: Return errors as exceptions from *save_power()

merge-requests/104/head
Povilas Kanapickas 2019-07-20 11:02:02 +03:00
rodzic d75aa89c9f
commit fd12b4052f
9 zmienionych plików z 32 dodań i 78 usunięć

Wyświetl plik

@ -3651,14 +3651,8 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
sanei_genesys_wait_for_home(dev); sanei_genesys_wait_for_home(dev);
} }
/* disable power saving*/ // disable power saving
status = dev->model->cmd_set->save_power (dev, SANE_FALSE); dev->model->cmd_set->save_power(dev, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
DBG(DBG_error, "%s: failed to disable power saving mode: %s\n", __func__,
sane_strstatus(status));
return status;
}
/* wait for lamp warmup : until a warmup for TRANSPARENCY is designed, skip /* wait for lamp warmup : until a warmup for TRANSPARENCY is designed, skip
* it when scanning from XPA. */ * it when scanning from XPA. */
@ -6217,7 +6211,6 @@ void
sane_close_impl(SANE_Handle handle) sane_close_impl(SANE_Handle handle)
{ {
DBG_HELPER(dbg); DBG_HELPER(dbg);
SANE_Status status = SANE_STATUS_GOOD;
/* remove handle from list of open handles: */ /* remove handle from list of open handles: */
auto it = s_scanners->end(); auto it = s_scanners->end();
@ -6251,13 +6244,8 @@ sane_close_impl(SANE_Handle handle)
} }
} }
/* enable power saving before leaving */ // enable power saving before leaving
status = s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE); s->dev->model->cmd_set->save_power(s->dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
DBG(DBG_error, "%s: failed to enable power saving mode: %s\n", __func__,
sane_strstatus(status));
}
// here is the place to store calibration cache // here is the place to store calibration cache
if (s->dev->force_calibration == 0) { if (s->dev->force_calibration == 0) {
@ -6864,20 +6852,19 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
s->dev->gamma_override_tables[GENESYS_BLUE][i] = table[i]; s->dev->gamma_override_tables[GENESYS_BLUE][i] = table[i];
} }
break; break;
case OPT_CALIBRATE: case OPT_CALIBRATE: {
status = s->dev->model->cmd_set->save_power (s->dev, SANE_FALSE); catch_all_exceptions(__func__, [&]()
if (status != SANE_STATUS_GOOD) {
{ s->dev->model->cmd_set->save_power(s->dev, SANE_FALSE);
DBG(DBG_error, "%s: failed to disable power saving mode: %s\n", __func__, TIE(genesys_scanner_calibration(s->dev, sensor));
sane_strstatus(status)); });
} catch_all_exceptions(__func__, [&]()
else {
status = genesys_scanner_calibration(s->dev, sensor); s->dev->model->cmd_set->save_power(s->dev, SANE_TRUE);
/* not critical if this fails*/ });
s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE); *myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
/* signals that sensors will have to be read again */ break;
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS; }
break;
case OPT_CLEAR_CALIBRATION: case OPT_CLEAR_CALIBRATION:
s->dev->calibration_cache.clear(); s->dev->calibration_cache.clear();
@ -7321,13 +7308,7 @@ void sane_cancel_impl(SANE_Handle handle)
/* enable power saving mode unless we are parking .... */ /* enable power saving mode unless we are parking .... */
if(s->dev->parking==SANE_FALSE) if(s->dev->parking==SANE_FALSE)
{ {
status = s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE); s->dev->model->cmd_set->save_power(s->dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
DBG(DBG_error, "%s: failed to enable power saving mode: %s\n", __func__,
sane_strstatus(status));
return;
}
} }
return; return;

Wyświetl plik

@ -1487,14 +1487,10 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
* @param dev device to use * @param dev device to use
* @param enable true to set inot powersaving * @param enable true to set inot powersaving
* */ * */
static SANE_Status static void gl124_save_power(Genesys_Device* dev, SANE_Bool enable)
gl124_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
(void) dev;
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
if (dev == NULL)
return SANE_STATUS_INVAL;
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -1519,9 +1519,7 @@ static void gl646_public_set_fe(Genesys_Device* dev, const Genesys_Sensor& senso
* @param enable SANE_TRUE to enable power saving, SANE_FALSE to leave it * @param enable SANE_TRUE to enable power saving, SANE_FALSE to leave it
* @return allways SANE_STATUS_GOOD * @return allways SANE_STATUS_GOOD
*/ */
static static void gl646_save_power(Genesys_Device* dev, SANE_Bool enable)
SANE_Status
gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
@ -1535,8 +1533,6 @@ gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
gl646_set_fe(dev, sensor, AFE_INIT, 0); gl646_set_fe(dev, sensor, AFE_INIT, 0);
} }
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -169,9 +169,7 @@ static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint
static void gl646_public_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set); static void gl646_public_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set);
static static void gl646_save_power(Genesys_Device* dev, SANE_Bool enable);
SANE_Status
gl646_save_power (Genesys_Device * dev, SANE_Bool enable);
static void gl646_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home); static void gl646_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home);

Wyświetl plik

@ -2305,8 +2305,8 @@ dummy \ scanned lines
dev->current_setup.max_shift = max_shift + stagger; dev->current_setup.max_shift = max_shift + stagger;
} }
/*for fast power saving methods only, like disabling certain amplifiers*/ // for fast power saving methods only, like disabling certain amplifiers
static SANE_Status gl841_save_power(Genesys_Device * dev, SANE_Bool enable) static void gl841_save_power(Genesys_Device* dev, SANE_Bool enable)
{ {
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
uint8_t val; uint8_t val;
@ -2401,8 +2401,6 @@ static SANE_Status gl841_save_power(Genesys_Device * dev, SANE_Bool enable)
} }
} }
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -1671,16 +1671,11 @@ gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
* @param dev device to use * @param dev device to use
* @param enable true to set inot powersaving * @param enable true to set inot powersaving
* */ * */
static SANE_Status static void gl843_save_power(Genesys_Device* dev, SANE_Bool enable)
gl843_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
uint8_t val; uint8_t val;
if (dev == NULL) {
return SANE_STATUS_INVAL;
}
// switch KV-SS080 lamp off // switch KV-SS080 lamp off
if (dev->model->gpo_type == GPO_KVSS080) { if (dev->model->gpo_type == GPO_KVSS080) {
sanei_genesys_read_register(dev, REG6C, &val); sanei_genesys_read_register(dev, REG6C, &val);
@ -1691,8 +1686,6 @@ gl843_save_power (Genesys_Device * dev, SANE_Bool enable)
} }
sanei_genesys_write_register(dev,REG6C,val); sanei_genesys_write_register(dev,REG6C,val);
} }
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -1339,15 +1339,11 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->current_setup.max_shift = max_shift + stagger; dev->current_setup.max_shift = max_shift + stagger;
} }
/*for fast power saving methods only, like disabling certain amplifiers*/ // for fast power saving methods only, like disabling certain amplifiers
static SANE_Status static void gl846_save_power(Genesys_Device* dev, SANE_Bool enable)
gl846_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
(void) dev;
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
if (dev == NULL)
return SANE_STATUS_INVAL;
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -1355,15 +1355,11 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->current_setup.max_shift = max_shift + stagger; dev->current_setup.max_shift = max_shift + stagger;
} }
/*for fast power saving methods only, like disabling certain amplifiers*/ // for fast power saving methods only, like disabling certain amplifiers
static SANE_Status static void gl847_save_power(Genesys_Device* dev, SANE_Bool enable)
gl847_save_power (Genesys_Device * dev, SANE_Bool enable)
{ {
DBG_HELPER_ARGS(dbg, "enable = %d", enable); DBG_HELPER_ARGS(dbg, "enable = %d", enable);
if (dev == NULL) (void) dev;
return SANE_STATUS_INVAL;
return SANE_STATUS_GOOD;
} }
static SANE_Status static SANE_Status

Wyświetl plik

@ -1067,7 +1067,7 @@ struct Genesys_Command_Set
void (*set_fe) (Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set); void (*set_fe) (Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set);
SANE_Status (*set_powersaving) (Genesys_Device * dev, int delay); SANE_Status (*set_powersaving) (Genesys_Device * dev, int delay);
SANE_Status (*save_power) (Genesys_Device * dev, SANE_Bool enable); void (*save_power) (Genesys_Device* dev, SANE_Bool enable);
void (*begin_scan) (Genesys_Device* dev, const Genesys_Sensor& sensor, void (*begin_scan) (Genesys_Device* dev, const Genesys_Sensor& sensor,
Genesys_Register_Set* regs, SANE_Bool start_motor); Genesys_Register_Set* regs, SANE_Bool start_motor);