metadata kds_s2000w_handler_get_parameters(int image_number)
{
metadata mdata;
+ json_object* metadataResp = NULL;
json_object* metadata = NULL;
json_object* mdata_value = NULL;
- int width = 0;
int channels = 1;
resp = kds_s2000w_client_response_init();
kds_s2000w_client_status_session(state->sessionid, resp);
}
mdata.valid = 1;
- metadata = json_tokener_parse(resp->data);
+ metadataResp = json_tokener_parse(resp->data);
+ metadata = json_object_object_get(metadataResp, "Metadata");
mdata_value = json_object_object_get(metadata, "BitDepth");
mdata.depth = json_object_get_int(mdata_value);
mdata_value = NULL;
mdata.lines = json_object_get_int(mdata_value);
mdata_value = NULL;
- json_object_put(metadata);
+ json_object_put(metadataResp);
metadata = NULL;
metadata = json_object_object_get(config, "ColorMode");
const char* color_value = json_object_get_string(metadata);
channels = 3;
if (mdata.depth == 1)
- mdata.bytes_per_line = channels * ((width + 7) / 8);
+ mdata.bytes_per_line = channels * ((mdata.pixels_per_line + 7) / 8);
else
- mdata.bytes_per_line = channels * width * mdata.depth / 8;
+ mdata.bytes_per_line = channels * mdata.pixels_per_line * mdata.depth / 8;
metadata = NULL;
kds_s2000w_client_response_free(resp);
sleep(1);
}
+ if (!mdata.valid)
+ return SANE_STATUS_UNSUPPORTED;
+
params->format = mdata.format;
params->last_frame = mdata.is_last;
params->bytes_per_line = mdata.bytes_per_line;
params->lines = mdata.lines;
params->depth = mdata.depth;
- return SANE_STATUS_UNSUPPORTED;
+ return SANE_STATUS_GOOD;
}
SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle)