/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 event.c

  • Committer: Suren A. Chilingaryan
  • Date: 2011-07-09 03:33:18 UTC
  • Revision ID: csa@dside.dyndns.org-20110709033318-2k7vk5s5p5u7btem
Support dynamic registers, support register offsets and multiregisters (bitmasks), list NWL DMA registers

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
    pcilib_register_bank_t res;
24
24
    unsigned long addr;
25
25
    
26
 
    pcilib_model_t model = pcilib_get_model(ctx);
27
 
    pcilib_event_description_t *events = pcilib_model[model].events;
 
26
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
27
    pcilib_event_description_t *events = model_info->events;
28
28
    
29
29
    for (i = 0; events[i].name; i++) {
30
30
        if (!strcasecmp(events[i].name, event)) return (1<<i);
37
37
int pcilib_reset(pcilib_t *ctx) {
38
38
    pcilib_event_api_description_t *api;
39
39
    
40
 
    pcilib_model_t model = pcilib_get_model(ctx);
 
40
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
41
41
 
42
 
    api = pcilib_model[model].event_api;
 
42
    api = model_info->event_api;
43
43
    if (!api) {
44
44
        pcilib_error("Event API is not supported by the selected model");
45
45
        return PCILIB_ERROR_NOTSUPPORTED;
54
54
int pcilib_start(pcilib_t *ctx, pcilib_event_t event_mask, void *callback, void *user) {
55
55
    pcilib_event_api_description_t *api;
56
56
    
57
 
    pcilib_model_t model = pcilib_get_model(ctx);
 
57
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
58
58
 
59
 
    api = pcilib_model[model].event_api;
 
59
    api = model_info->event_api;
60
60
    if (!api) {
61
61
        pcilib_error("Event API is not supported by the selected model");
62
62
        return PCILIB_ERROR_NOTSUPPORTED;
71
71
int pcilib_stop(pcilib_t *ctx) {
72
72
    pcilib_event_api_description_t *api;
73
73
    
74
 
    pcilib_model_t model = pcilib_get_model(ctx);
 
74
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
75
75
 
76
 
    api = pcilib_model[model].event_api;
 
76
    api = model_info->event_api;
77
77
    if (!api) {
78
78
        pcilib_error("Event API is not supported by the selected model");
79
79
        return PCILIB_ERROR_NOTSUPPORTED;
88
88
pcilib_event_id_t pcilib_get_next_event(pcilib_t *ctx, pcilib_event_t event_mask, const struct timespec *timeout) {
89
89
    pcilib_event_api_description_t *api;
90
90
    
91
 
    pcilib_model_t model = pcilib_get_model(ctx);
 
91
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
92
92
 
93
 
    api = pcilib_model[model].event_api;
 
93
    api = model_info->event_api;
94
94
    if (!api) {
95
95
        pcilib_error("Event API is not supported by the selected model");
96
96
        return PCILIB_ERROR_NOTSUPPORTED;
106
106
int pcilib_trigger(pcilib_t *ctx, pcilib_event_t event, size_t trigger_size, void *trigger_data) {
107
107
    pcilib_event_api_description_t *api;
108
108
    
109
 
    pcilib_model_t model = pcilib_get_model(ctx);
 
109
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
110
110
 
111
 
    api = pcilib_model[model].event_api;
 
111
    api = model_info->event_api;
112
112
    if (!api) {
113
113
        pcilib_error("Event API is not supported by the selected model");
114
114
        return PCILIB_ERROR_NOTSUPPORTED;
123
123
 
124
124
 
125
125
void *pcilib_get_data_with_argument(pcilib_t *ctx, pcilib_event_id_t event_id, pcilib_event_data_type_t data_type, size_t arg_size, void *arg, size_t *size) {
126
 
    pcilib_event_api_description_t *api = pcilib_model[ctx->model].event_api;
 
126
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
127
 
 
128
    pcilib_event_api_description_t *api = model_info->event_api;
127
129
    if (!api) {
128
130
        pcilib_error("Event API is not supported by the selected model");
129
131
        return NULL;
136
138
}
137
139
 
138
140
void *pcilib_get_data(pcilib_t *ctx, pcilib_event_id_t event_id, pcilib_event_data_type_t data_type, size_t *size) {
139
 
    pcilib_event_api_description_t *api = pcilib_model[ctx->model].event_api;
 
141
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
142
 
 
143
    pcilib_event_api_description_t *api = model_info->event_api;
140
144
    if (!api) {
141
145
        pcilib_error("Event API is not supported by the selected model");
142
146
        return NULL;
149
153
}
150
154
 
151
155
int pcilib_return_data(pcilib_t *ctx, pcilib_event_id_t event_id) {
152
 
    pcilib_event_api_description_t *api = pcilib_model[ctx->model].event_api;
 
156
    pcilib_model_description_t *model_info = pcilib_get_model_description(ctx);
 
157
    
 
158
    pcilib_event_api_description_t *api = model_info->event_api;
153
159
    if (!api) {
154
160
        pcilib_error("Event API is not supported by the selected model");
155
161
        return PCILIB_ERROR_NOTSUPPORTED;