65 #include <amxc/amxc.h>
66 #include <amxp/amxp.h>
68 #include <amxd/amxd_common.h>
69 #include <amxd/amxd_dm.h>
70 #include <amxd/amxd_path.h>
71 #include <amxd/amxd_object.h>
90 int retval = amxd_status_unknown_error;
93 when_true(amxc_var_type_of(values) != AMXC_VAR_ID_HTABLE &&
94 !amxc_var_is_null(values), exit);
95 when_true(amxc_var_type_of(ovalues) != AMXC_VAR_ID_HTABLE &&
96 !amxc_var_is_null(ovalues), exit);
98 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
99 if((rel_path != NULL) && (*rel_path != 0)) {
100 amxc_var_add_key(cstring_t, &args,
"rel_path", rel_path);
102 amxc_var_add_key(uint32_t, &args,
"access",
bus_ctx->
access);
104 params = amxc_var_add_key(amxc_htable_t, &args,
"parameters", NULL);
105 amxc_var_move(params, values);
107 if(ovalues != NULL) {
108 params = amxc_var_add_key(amxc_htable_t, &args,
"oparameters", NULL);
109 amxc_var_move(params, ovalues);
113 amxc_var_add_key(
bool, &args,
"allow_partial",
true);
117 when_failed(retval, exit);
118 retval =
amxb_invoke(invoke_ctx, &args, ret, NULL, NULL, timeout);
119 when_failed(retval, exit);
123 amxc_var_clean(&args);
134 int retval = amxd_status_unknown_error;
136 bool lobject =
false;
139 const char* rel_path = NULL;
141 amxd_path_init(&path, NULL);
145 amxd_path_setf(&path,
true,
"%s",
object);
147 while(amxd_path_get_type(&path) == amxd_path_reference) {
149 when_failed(retval, exit);
152 fixed = amxd_path_get_fixed_part(&path,
true);
153 rel_path = amxd_path_get(&path, AMXD_OBJECT_TERMINATE);
160 values, ovalues, ret, timeout);
168 amxd_path_clean(&path);
Ambiorix bus agnostic API header file.
int amxb_set_impl(amxb_bus_ctx_t *const bus_ctx, const char *object, uint32_t flags, amxc_var_t *values, amxc_var_t *ovalues, amxc_var_t *ret, int timeout)
static int amxb_invoke_set(amxb_bus_ctx_t *const bus_ctx, const char *object, const char *rel_path, uint32_t flags, amxc_var_t *values, amxc_var_t *ovalues, amxc_var_t *ret, int timeout)
Ambiorix Bus Backend Interface.
#define AMXB_FLAG_PARTIAL
#define amxb_is_valid_be_func(ft, member, ptr)
int PRIVATE amxb_follow_reference(amxb_bus_ctx_t *const bus_ctx, amxd_path_t *reference, int timeout)
bool PRIVATE amxb_is_local_object(amxb_bus_ctx_t *ctx, const char *obj_path)
int amxb_new_invoke(amxb_invoke_t **invoke_ctx, amxb_bus_ctx_t *const ctx, const char *object, const char *interface, const char *method)
Prepares a remote function invocation.
void amxb_free_invoke(amxb_invoke_t **invoke_ctx)
Deletes a function invoke context, and frees allocated memory.
int amxb_invoke(amxb_invoke_t *invoke_ctx, amxc_var_t *args, amxc_var_t *ret, amxb_be_cb_fn_t fn, void *priv, int timeout)
Invokes a remote function, as defined by the function invoke context.
int amxb_set(amxb_bus_ctx_t *const bus_ctx, const char *object, amxc_var_t *values, amxc_var_t *ret, int timeout)
Sets parameter values of one single object or of multiple instance objects.
The back-end interface structure.
const amxb_be_funcs_t * bus_fn
static amxb_bus_ctx_t * bus_ctx