diff options
-rw-r--r-- | pcilib/pcipywrap.c | 39 | ||||
-rw-r--r-- | pcilib/py.c | 10 | ||||
-rw-r--r-- | pcilib/xml.c | 47 | ||||
-rw-r--r-- | views/transform.c | 2 |
4 files changed, 34 insertions, 64 deletions
diff --git a/pcilib/pcipywrap.c b/pcilib/pcipywrap.c index db0e412..18874af 100644 --- a/pcilib/pcipywrap.c +++ b/pcilib/pcipywrap.c @@ -44,6 +44,7 @@ char* make_str(const char* msg, ...) va_start(vl, msg); char *buf = vmake_str(msg, vl); va_end(vl); + return buf; } /*! @@ -276,12 +277,12 @@ PyObject* set_property(const char *prop, PyObject* val) void add_pcilib_value_to_dict(PyObject* dict, pcilib_value_t* val, const char *name) { - PyObject *py_val = pcilib_convert_val_to_pyobject(__ctx, val); + PyObject *py_val = (PyObject*)pcilib_convert_val_to_pyobject(__ctx, val); if(py_val) PyDict_SetItem(dict, PyString_FromString(name), - val); + py_val); else PyDict_SetItem(dict, PyString_FromString("defvalue"), @@ -407,13 +408,22 @@ PyObject * pcilib_convert_register_info_to_pyobject(pcilib_register_info_t listI PyDict_SetItem(pylistItem, PyString_FromString("mode"), modes); - add_pcilib_value_to_dict(pylistItem, &listItem.defvalue, "defvalue"); + + pcilib_value_t defval = {0}; + pcilib_set_value_from_register_value(__ctx, &defval, listItem.defvalue); + add_pcilib_value_to_dict(pylistItem, &defval, "defvalue"); if(listItem.range) { + pcilib_value_t minval = {0}; + pcilib_set_value_from_register_value(__ctx, &minval, listItem.range->min); + + pcilib_value_t maxval = {0}; + pcilib_set_value_from_register_value(__ctx, &maxval, listItem.range->max); + PyObject* range = PyDict_New(); - add_pcilib_value_to_dict(range, &(listItem.range->min), "min"); - add_pcilib_value_to_dict(range, &(listItem.range->max), "max"); + add_pcilib_value_to_dict(range, &minval, "min"); + add_pcilib_value_to_dict(range, &maxval, "max"); PyDict_SetItem(pylistItem, PyString_FromString("range"), range); @@ -426,10 +436,19 @@ PyObject * pcilib_convert_register_info_to_pyobject(pcilib_register_info_t listI for (int j = 0; listItem.values[j].name; j++) { PyObject* valuesItem = PyDict_New(); - - add_pcilib_value_to_dict(valuesItem, &(listItem.values[j].value), "value"); - add_pcilib_value_to_dict(valuesItem, &(listItem.values[j].min), "min"); - add_pcilib_value_to_dict(valuesItem, &(listItem.values[j].max), "max"); + + pcilib_value_t val = {0}; + pcilib_set_value_from_register_value(__ctx, &val, listItem.values[j].value); + + pcilib_value_t min = {0}; + pcilib_set_value_from_register_value(__ctx, &min, listItem.values[j].min); + + pcilib_value_t max = {0}; + pcilib_set_value_from_register_value(__ctx, &max, listItem.values[j].max); + + add_pcilib_value_to_dict(valuesItem, &val, "value"); + add_pcilib_value_to_dict(valuesItem, &min, "min"); + add_pcilib_value_to_dict(valuesItem, &max, "max"); if(listItem.values[j].name) PyDict_SetItem(valuesItem, @@ -510,7 +529,7 @@ PyObject* get_property_info(const char* branch) PyObject* pyList = PyList_New(0); - for(int i = 0; i < list[i].path; i++) + for(int i = 0; list[i].path; i++) { //serialize item attributes PyObject* pylistItem = pcilib_convert_property_info_to_pyobject(list[i]); diff --git a/pcilib/py.c b/pcilib/py.c index acc18df..57a5f46 100644 --- a/pcilib/py.c +++ b/pcilib/py.c @@ -269,9 +269,7 @@ int pcilib_convert_pyobject_to_val(pcilib_t* ctx, void* pyObjVal, pcilib_value_t } int pcilib_init_py_script(pcilib_t *ctx, char* module_name, pcilib_script_t **module, pcilib_access_mode_t *mode) -{ - int err; - +{ //Initialize python script, if it has not initialized already. if(!module_name) { @@ -389,6 +387,8 @@ int pcilib_free_py_script(pcilib_script_t *module) module->py_script_module = NULL; } } + + return 0; } int pcilib_script_read(pcilib_t *ctx, pcilib_script_t *module, pcilib_value_t *val) @@ -415,9 +415,7 @@ int pcilib_script_read(pcilib_t *ctx, pcilib_script_t *module, pcilib_value_t *v } int pcilib_script_write(pcilib_t *ctx, pcilib_script_t *module, pcilib_value_t *val) -{ - int err; - +{ PyObject *input = pcilib_convert_val_to_pyobject(ctx, val); if(!input) { diff --git a/pcilib/xml.c b/pcilib/xml.c index f21480c..38bb917 100644 --- a/pcilib/xml.c +++ b/pcilib/xml.c @@ -554,53 +554,6 @@ static int pcilib_xml_parse_view(pcilib_t *ctx, xmlXPathContextPtr xpath, xmlDoc return 0; } -static int pcilib_xml_create_script_view(pcilib_t *ctx, xmlXPathContextPtr xpath, xmlDocPtr doc, xmlNodePtr node) { - int err; - xmlAttrPtr cur; - const char *value, *name; - pcilib_view_context_t *view_ctx; - - - pcilib_access_mode_t mode = 0; - pcilib_transform_view_description_t desc = {{0}}; - - desc.base.api = &pcilib_transform_view_api; - desc.base.type = PCILIB_TYPE_DOUBLE; - desc.base.mode = PCILIB_ACCESS_RW; - desc.script = NULL; - - err = pcilib_xml_parse_view(ctx, xpath, doc, node, (pcilib_view_description_t*)&desc); - if (err) return err; - - for (cur = node->properties; cur != NULL; cur = cur->next) { - if (!cur->children) continue; - if (!xmlNodeIsText(cur->children)) continue; - - name = (char*)cur->name; - value = (char*)cur->children->content; - if (!value) continue; - - if (!strcasecmp(name, "script")) - { - //write script name to struct - char* script_name = malloc(strlen(value)); - sprintf(script_name, "%s", value); - - err = pcilib_init_py_script(ctx, script_name, &(desc.script), &mode); - if(err) return err; - mode |= PCILIB_REGISTER_NO_CHK; - } - } - - desc.base.mode &= mode; - - err = pcilib_add_views_custom(ctx, 1, (pcilib_view_description_t*)&desc, &view_ctx); - if (err) return err; - - view_ctx->xml = node; - return 0; -} - static int pcilib_xml_create_transform_view(pcilib_t *ctx, xmlXPathContextPtr xpath, xmlDocPtr doc, xmlNodePtr node) { int err; xmlAttrPtr cur; diff --git a/views/transform.c b/views/transform.c index f47e4ef..986cfd7 100644 --- a/views/transform.c +++ b/views/transform.c @@ -53,7 +53,7 @@ static int pcilib_transform_view_write(pcilib_t *ctx, pcilib_view_context_t *vie return err; } else - pcilib_script_write(ctx, v->script, val); + return pcilib_script_write(ctx, v->script, (pcilib_value_t *)val); } void pcilib_transform_view_free_description (pcilib_t *ctx, pcilib_view_description_t *view) |