diff --git a/include/neuron/adapter.h b/include/neuron/adapter.h index 7034f3b2..096ee626 100644 --- a/include/neuron/adapter.h +++ b/include/neuron/adapter.h @@ -100,7 +100,7 @@ typedef struct adapter_callbacks { struct { void (*update)(neu_adapter_t *adapter, const char *name, neu_dvalue_t value); - void (*write_response)(neu_adapter_t *adapter, uint32_t req_id, + void (*write_response)(neu_adapter_t *adapter, void *req, neu_error error); } driver; }; diff --git a/include/neuron/plugin.h b/include/neuron/plugin.h index e45ac57d..2571df1a 100644 --- a/include/neuron/plugin.h +++ b/include/neuron/plugin.h @@ -71,7 +71,7 @@ typedef struct neu_plugin_intf_funs { struct { int (*validate_tag)(neu_plugin_t *plugin, neu_datatag_t *tag); int (*group_timer)(neu_plugin_t *plugin, neu_plugin_group_t *group); - int (*write_tag)(neu_plugin_t *plugin, uint32_t req_id, + int (*write_tag)(neu_plugin_t *plugin, void *req, neu_datatag_t *tag, neu_value_u value); } driver; }; diff --git a/src/adapter/driver/driver.c b/src/adapter/driver/driver.c index a3b42617..6c204008 100644 --- a/src/adapter/driver/driver.c +++ b/src/adapter/driver/driver.c @@ -64,21 +64,21 @@ static void load_tags(neu_adapter_driver_t *driver, neu_taggrp_config_t *group, static void free_tags(UT_array *tags); static void update(neu_adapter_t *adapter, const char *name, neu_dvalue_t value); -static void write_response(neu_adapter_t *adapter, uint32_t req_id, - neu_error error); -static void write_response(neu_adapter_t *adapter, uint32_t req_id, - neu_error error) +static void write_response(neu_adapter_t *adapter, void *r, neu_error error); +static void write_response(neu_adapter_t *adapter, void *r, neu_error error) { + neu_request_t *req = (neu_request_t *) r; + neu_reqresp_write_resp_t data = { .grp_config = NULL, .data_val = neu_datatag_pack_create(1), }; neu_response_t resp = { - .req_id = req_id, + .req_id = req->req_id, .resp_type = NEU_REQRESP_WRITE_RESP, .buf = &data, .buf_len = sizeof(neu_reqresp_write_resp_t), - .recver_id = 0, + .recver_id = req->sender_id, }; neu_datatag_pack_add(data.data_val, 0, NEU_DTYPE_ERRORCODE, 0, @@ -245,7 +245,7 @@ void neu_adapter_driver_process_msg(neu_adapter_driver_t *driver, driver->adapter.cb_funs.response(&driver->adapter, &resp); } else { driver->adapter.plugin_info.module->intf_funs->driver.write_tag( - driver->adapter.plugin_info.plugin, req->req_id, tag, value); + driver->adapter.plugin_info.plugin, (void *) req, tag, value); } break;