libamxb  4.8.2
Bus Agnostic C API
amxb_ba_op_add.c File Reference
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <amxc/amxc.h>
#include <amxp/amxp.h>
#include <amxd/amxd_common.h>
#include <amxd/amxd_dm.h>
#include <amxd/amxd_path.h>
#include <amxd/amxd_object.h>
#include <amxb/amxb_be_intf.h>
#include <amxb/amxb.h>
#include "amxb_priv.h"

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

static int amxb_invoke_add (amxb_bus_ctx_t *const bus_ctx, const char *object, const char *rel_path, uint32_t index, const char *name, amxc_var_t *values, amxc_var_t *ret, int timeout)
 
int amxb_add (amxb_bus_ctx_t *const bus_ctx, const char *object, uint32_t index, const char *name, amxc_var_t *values, amxc_var_t *ret, int timeout)
 Adds an instance to a multi-instance object. More...
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 56 of file amxb_ba_op_add.c.

Function Documentation

◆ amxb_invoke_add()

static int amxb_invoke_add ( amxb_bus_ctx_t *const  bus_ctx,
const char *  object,
const char *  rel_path,
uint32_t  index,
const char *  name,
amxc_var_t *  values,
amxc_var_t *  ret,
int  timeout 
)
static

Definition at line 78 of file amxb_ba_op_add.c.

85  {
86  amxb_invoke_t* invoke_ctx = NULL;
87  amxc_var_t args;
88  amxc_var_t* params = NULL;
89  int retval = amxd_status_unknown_error;
90 
91  amxc_var_init(&args);
92  amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
93 
94  if((rel_path != NULL) && (*rel_path != 0)) {
95  amxc_var_add_key(cstring_t, &args, "rel_path", rel_path);
96  }
97 
98  amxc_var_add_key(uint32_t, &args, "index", index);
99  amxc_var_add_key(cstring_t, &args, "name", name);
100  params = amxc_var_add_key(amxc_htable_t, &args, "parameters", NULL);
101  amxc_var_move(params, values);
102  amxc_var_add_key(uint32_t, &args, "access", bus_ctx->access);
103 
104  retval = amxb_new_invoke(&invoke_ctx, bus_ctx, object, NULL, "_add");
105  when_failed(retval, exit);
106  retval = amxb_invoke(invoke_ctx, &args, ret, NULL, NULL, timeout);
107  when_failed(retval, exit);
108 
109 exit:
110  amxc_var_clean(&args);
111  amxb_free_invoke(&invoke_ctx);
112  return retval;
113 }
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.
uint32_t access
Definition: amxb_types.h:125
static amxb_bus_ctx_t * bus_ctx
Definition: test_amxb_e2e.c:84