95 amxc_var_t* result = GET_ARG(retval, path);
98 result = amxc_var_add_new_key(retval, path);
99 amxc_var_set_type(result, AMXC_VAR_ID_HTABLE);
100 result = amxc_var_add_key(amxc_htable_t, result,
"parameters", NULL);
102 result = GET_ARG(result,
"parameters");
113 result = amxc_var_add_key(amxc_htable_t, result, name, NULL);
114 amxc_var_add_key(uint32_t, result,
"error_code",
status);
115 amxc_var_add_key(
bool, result,
"required", required);
122 result = amxc_var_add_new_key(result, name);
123 amxc_var_copy(result, value);
124 amxc_var_cast(result, type);
134 amxc_var_t* obj_result = NULL;
169 const amxc_var_t*
const value) {
174 char* v = amxc_var_dyncast(cstring_t, value);
177 if((instance != NULL) && (instance != current)) {
189 const amxc_var_t* values,
194 amxc_var_for_each(value, values) {
195 const char* name = amxc_var_key(value);
197 if(amxc_var_type_of(value) == AMXC_VAR_ID_HTABLE) {
223 const amxc_var_t*
const args,
224 amxc_var_t*
const retval,
227 amxc_var_t* params = NULL;
229 bool set_read_only =
false;
231 when_null(
object, exit);
237 when_true_status(amxc_var_type_of(args) != AMXC_VAR_ID_HTABLE,
241 amxc_var_set_type(retval, AMXC_VAR_ID_HTABLE);
242 access = (
amxd_dm_access_t) amxc_var_dyncast(uint32_t, GET_ARG(args,
"access"));
243 set_read_only = GET_BOOL(args,
"set_read_only");
246 params = amxc_var_get_key(args,
"parameters", AMXC_VAR_FLAG_DEFAULT);
248 when_true_status(amxc_var_type_of(params) != AMXC_VAR_ID_HTABLE,
252 when_failed(
status, exit);
254 params = amxc_var_get_key(args,
"oparameters", AMXC_VAR_FLAG_DEFAULT);
256 when_true_status(amxc_var_type_of(params) != AMXC_VAR_ID_HTABLE,
271 amxc_var_t*
const values) {
276 amxc_var_init(&args);
277 when_null(
object, exit);
278 when_true(amxc_var_is_null(values) ||
279 amxc_var_type_of(values) != AMXC_VAR_ID_HTABLE,
282 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
283 amxc_var_set_key(&args,
"parameters", values, AMXC_VAR_FLAG_COPY);
285 amxc_var_add_key(
bool, &args,
"set_read_only",
true);
293 amxc_var_clean(&args);
Ambiorix Data Model Default actions header file.
static amxd_status_t amxd_can_set_parameter(const amxd_object_t *const object, const amxd_param_t *const param, bool set_read_only, amxd_dm_access_t access)
amxd_status_t PRIVATE amxd_action_set_values(amxd_object_t *const object, amxd_dm_access_t access, bool ro, const amxc_var_t *values, amxc_var_t *ret, bool required)
amxd_status_t amxd_action_object_write(amxd_object_t *const object, UNUSED amxd_param_t *const p, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, UNUSED void *priv)
static amxd_status_t amxd_action_set_value(amxd_object_t *object, amxd_dm_access_t access, const char *name, amxc_var_t *value, bool ro, bool required, amxc_var_t *ret)
static void amxd_set_action_add_error(amxc_var_t *result, const char *name, bool required, amxd_status_t status)
static amxc_var_t * amxd_set_action_get_result(const amxd_object_t *object, amxc_var_t *retval)
bool PRIVATE amxd_param_is_unique(amxd_object_t *const templ, amxd_object_t *const current, amxd_param_t *const param, const amxc_var_t *const value)
static void amxd_set_action_add_result(amxc_var_t *result, const char *name, uint32_t type, amxc_var_t *value)
Ambiorix Data Model API header file.
amxd_status_t amxd_dm_invoke_action(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval)
Ambiorix Data Model API header file.
bool amxd_action_verify_access(amxd_object_t *object, amxd_dm_access_t access)
bool amxd_param_is_attr_set(const amxd_param_t *const param, const amxd_pattr_id_t attr)
const char * amxd_param_get_name(const amxd_param_t *const param)
amxd_status_t amxd_param_set_value(amxd_param_t *const param, const amxc_var_t *const value)
static uint32_t amxd_param_get_type(const amxd_param_t *const param)
amxd_object_t * amxd_param_get_owner(const amxd_param_t *const param)
Ambiorix path API header file.
enum _amxd_action amxd_action_t
enum _amxd_status amxd_status_t
@ amxd_status_parameter_not_found
@ amxd_status_function_not_implemented
@ amxd_status_object_not_found
@ amxd_status_invalid_function_argument
@ amxd_status_unknown_error
#define AMXD_OBJECT_INDEXED
Name and path format flag - use index for instance objects.
enum _amxd_dm_access amxd_dm_access_t
Access level.
#define AMXD_OBJECT_TERMINATE
Path format flag - when set the object path is terminated with a dot.
amxd_object_t amxd_status_t amxd_status_t char * amxd_object_get_path(const amxd_object_t *object, const uint32_t flags)
Get the full path of the object.
amxd_object_t * amxd_object_findf(amxd_object_t *object, const char *rel_path,...) __attribute__((format(printf
Find an object in the data model tree, starting from an object.
amxd_object_t * amxd_object_get_instance(const amxd_object_t *object, const char *name, uint32_t index)
Get an instance of the template object.
amxd_status_t amxd_object_set_params(amxd_object_t *const object, amxc_var_t *const values)
Sets multiple parameter values in a data model object.
amxd_param_t * amxd_object_get_param_def(const amxd_object_t *const object, const char *name)
Gets a parameter definition from an object.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
static amxd_status_t status