From 7c3dce618537276235ccdf4bec654120256599d0 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Fri, 28 Jun 2019 17:14:11 +0200 Subject: refactor to use a generic setting getter for all values --- camlibs/lumix/lumix.c | 94 +++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 60 deletions(-) diff --git a/camlibs/lumix/lumix.c b/camlibs/lumix/lumix.c index 9dee6db6f..ab8ac381a 100644 --- a/camlibs/lumix/lumix.c +++ b/camlibs/lumix/lumix.c @@ -459,21 +459,19 @@ Get_Clock(Camera *camera) { } static char* -Get_ISO(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=iso"); -} - -static char* -Get_ShutterSpeed(Camera *camera) { +generic_setting_getter(Camera *camera, char *type) { char *result, *s; xmlDocPtr docin; xmlNodePtr docroot, output; xmlAttr *attr; + char url[50]; - result = loadCmd(camera,"cam.cgi?mode=getsetting&type=shtrspeed"); + sprintf(url,"cam.cgi?mode=getsetting&type=%s", type); + result = loadCmd(camera, url); docin = xmlReadMemory (result, strlen(result), "http://gphoto.org/", "utf-8", 0); + /* - * ok + * ok */ if (!docin) return NULL; @@ -501,87 +499,63 @@ Get_ShutterSpeed(Camera *camera) { return NULL; } attr = output->properties; - if (strcmp((char*)attr->name, "shtrspeed")) { - GP_LOG_E ("attr name expected 'shtrspeed', got %s", output->name); + if (strcmp((char*)attr->name, type)) { + GP_LOG_E ("attr name expected '%s', got %s", type, output->name); return NULL; } s = (char*)xmlNodeGetContent (attr->children); - GP_LOG_D("focal content %s", s); + GP_LOG_D("%s content %s", type, s); xmlFreeDoc (docin); return strdup(s); } static char* -Get_Aperture(Camera *camera) { - char *result, *s; - xmlDocPtr docin; - xmlNodePtr docroot, output; - xmlAttr *attr; +Get_ISO(Camera *camera) { + /* + * ok + */ + return generic_setting_getter(camera,"iso"); +} +static char* +Get_ShutterSpeed(Camera *camera) { + /* + * ok + */ + return generic_setting_getter(camera, "shtrspeed"); +} + +static char* +Get_Aperture(Camera *camera) { /* * ok */ - result = loadCmd(camera,"cam.cgi?mode=getsetting&type=focal"); - docin = xmlReadMemory (result, strlen(result), "http://gphoto.org/", "utf-8", 0); - - if (!docin) return NULL; - docroot = xmlDocGetRootElement (docin); - if (!docroot) { - xmlFreeDoc (docin); - return NULL; - } - if (strcmp((char*)docroot->name,"camrply")) { - GP_LOG_E ("docroot name unexpected %s", docroot->name); - return NULL; - } - output = docroot->children; - if (strcmp((char*)output->name, "result")) { - GP_LOG_E ("node name expected 'result', got %s", output->name); - return NULL; - } - if (strcmp((char*)xmlNodeGetContent (output),"ok")) { - GP_LOG_E ("result was not 'ok', got %s", (char*)xmlNodeGetContent (output)); - return NULL; - } - output = xmlNextElementSibling (output); - if (strcmp((char*)output->name, "settingvalue")) { - GP_LOG_E ("node name expected 'settingvalue', got %s", output->name); - return NULL; - } - attr = output->properties; - if (strcmp((char*)attr->name, "focal")) { - GP_LOG_E ("attr name expected 'focal', got %s", output->name); - return NULL; - } - s = (char*)xmlNodeGetContent (attr->children); - GP_LOG_D("focal content %s", s); - xmlFreeDoc (docin); - return strdup(s); + return generic_setting_getter(camera, "focal"); } static char* Get_AFMode(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=afmode"); + return generic_setting_getter(camera,"afmode"); } static char* Get_FocusMode(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=focusmode"); + return generic_setting_getter(camera,"focusmode"); } static char* Get_MFAssist(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=mf_asst"); + return generic_setting_getter(camera,"mf_asst"); } static char* Get_MFAssist_Mag(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=mf_asst_mag"); + return generic_setting_getter(camera,"mf_asst_mag"); } static char* Get_ExTeleConv(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=ex_tele_conv"); + return generic_setting_getter(camera,"ex_tele_conv"); } static char* @@ -613,7 +587,7 @@ static void Set_ShutterSpeed(Camera *camera,const char* SpeedValue) { static char* Get_Quality(Camera *camera) { - return loadCmd(camera,"cam.cgi?mode=getsetting&type=quality"); + return generic_setting_getter(camera,"quality"); } static void @@ -1030,8 +1004,8 @@ Raw: } static struct shuttermap { - char *speed; char *cameraspeed; + char *speed; } shutterspeeds[] = { {"3072/256","4000"}, {"2987/256","3200"}, @@ -1092,8 +1066,8 @@ static struct shuttermap { }; static struct aperturemap { - char *aperture; char *cameraaperture; + char *aperture; } apertures[] = { {"392/256","1.7"}, {"427/256","1.8"}, -- cgit v1.2.1