/alps/pcitool

To get this branch, use:
bzr branch http://suren.me/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to views/transform.c

  • Committer: Vasilii Chernov
  • Date: 2016-02-11 09:37:24 UTC
  • mto: This revision was merged to the branch mainline in revision 353.
  • Revision ID: vchernov@inr.ru-20160211093724-ipw54n5wxts1jt2i
Merge script and transform view. Add get register and properties info to python wrap.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
 
13
13
 
14
14
static int pcilib_transform_view_read(pcilib_t *ctx, pcilib_view_context_t *view_ctx, pcilib_register_value_t regval, pcilib_value_t *val) {
15
 
    int err;
16
 
 
17
15
    const pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
18
16
    pcilib_transform_view_description_t *v = (pcilib_transform_view_description_t*)(model_info->views[view_ctx->view]);
19
17
 
20
 
    err = pcilib_set_value_from_register_value(ctx, val, regval);
21
 
    if (err) return err;
 
18
        if(v->script)
 
19
        {
 
20
                return pcilib_script_read(ctx, v->script, val);
 
21
        }
 
22
        else
 
23
        {
 
24
                int err;
 
25
                
 
26
                err = pcilib_set_value_from_register_value(ctx, val, regval);
 
27
                if (err) return err;
22
28
 
23
 
    return  pcilib_py_eval_string(ctx, v->read_from_reg, val);
 
29
                return  pcilib_py_eval_string(ctx, v->read_from_reg, val);
 
30
        }
24
31
}
25
32
 
26
33
static int pcilib_transform_view_write(pcilib_t *ctx, pcilib_view_context_t *view_ctx, pcilib_register_value_t *regval, const pcilib_value_t *val) {
27
 
    int err = 0;
28
 
    pcilib_value_t val_copy = {0};
 
34
    
 
35
    
29
36
 
30
37
    const pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
31
38
    pcilib_transform_view_description_t *v = (pcilib_transform_view_description_t*)(model_info->views[view_ctx->view]);
32
39
 
33
 
    err = pcilib_copy_value(ctx, &val_copy, val);
34
 
    if (err) return err;
35
 
 
36
 
    err = pcilib_py_eval_string(ctx, v->write_to_reg, &val_copy);
37
 
    if (err) return err;
38
 
 
39
 
    *regval = pcilib_get_value_as_register_value(ctx, &val_copy, &err);
40
 
    return err;
 
40
 
 
41
        if(!v->script)
 
42
        {
 
43
                int err = 0;
 
44
                
 
45
                pcilib_value_t val_copy = {0};
 
46
                err = pcilib_copy_value(ctx, &val_copy, val);
 
47
                if (err) return err;
 
48
 
 
49
                err = pcilib_py_eval_string(ctx, v->write_to_reg, &val_copy);
 
50
                if (err) return err;
 
51
 
 
52
                *regval = pcilib_get_value_as_register_value(ctx, &val_copy, &err);
 
53
                return err;
 
54
        }
 
55
        else
 
56
                pcilib_script_write(ctx, v->script, val);
 
57
}
 
58
 
 
59
void pcilib_transform_view_free_description (pcilib_t *ctx, pcilib_view_description_t *view)
 
60
{
 
61
        pcilib_transform_view_description_t *v = (pcilib_transform_view_description_t*)(view);
 
62
        
 
63
        if(v->script)
 
64
                pcilib_free_py_script(v->script);
41
65
}
42
66
 
43
67
 
44
68
const pcilib_view_api_description_t pcilib_transform_view_api =
45
 
  { PCILIB_VERSION, sizeof(pcilib_transform_view_description_t), NULL, NULL, NULL, pcilib_transform_view_read,  pcilib_transform_view_write };
 
69
  { PCILIB_VERSION, sizeof(pcilib_transform_view_description_t), NULL, NULL, pcilib_transform_view_free_description, pcilib_transform_view_read,  pcilib_transform_view_write };