78 amxc_var_init(&def_val);
79 amxc_var_set(
bool, &def_val,
true);
82 when_failed(retval, exit);
88 when_failed(retval, exit);
91 when_failed(retval, exit);
94 when_failed(retval, exit);
97 when_failed(retval, exit);
100 when_failed(retval, exit);
101 amxc_var_set(
bool, &def_val,
false);
104 when_failed(retval, exit);
108 when_failed(retval, exit);
109 amxc_var_set(cstring_t, &def_val,
"");
113 when_failed(retval, exit);
121 amxc_var_clean(&def_val);
130 amxc_var_init(&def_val);
131 amxc_var_set(cstring_t, &def_val,
".");
134 when_failed(retval, exit);
141 amxc_var_set_type(&def_val, AMXC_VAR_ID_LIST);
142 when_failed(retval, exit);
146 when_failed(retval, exit);
147 amxc_var_set(uint32_t, &def_val, 0);
150 when_failed(retval, exit);
154 when_failed(retval, exit);
158 when_failed(retval, exit);
166 amxc_var_clean(&def_val);
175 amxc_var_init(&def_val);
176 amxc_var_set(cstring_t, &def_val,
".");
179 when_failed(retval, exit);
186 when_failed(retval, exit);
187 amxc_var_set(uint32_t, &def_val, 0);
190 when_failed(retval, exit);
194 when_failed(retval, exit);
202 amxc_var_clean(&def_val);
211 amxc_var_init(&def_val);
212 amxc_var_set(
bool, &def_val,
true);
218 when_failed(retval, exit);
224 when_failed(retval, exit);
225 amxc_var_set(
bool, &def_val,
false);
228 when_failed(retval, exit);
231 when_failed(retval, exit);
234 when_failed(retval, exit);
235 amxc_var_set(cstring_t, &def_val,
"");
239 when_failed(retval, exit);
243 when_failed(retval, exit);
251 amxc_var_clean(&def_val);
260 amxc_var_init(&def_val);
263 when_failed(retval, exit);
267 amxc_var_set_type(&def_val, AMXC_VAR_ID_HTABLE);
271 when_failed(retval, exit);
275 when_failed(retval, exit);
279 when_failed(retval, exit);
280 amxc_var_set(cstring_t, &def_val,
"");
284 when_failed(retval, exit);
285 amxc_var_set(
bool, &def_val,
false);
288 when_failed(retval, exit);
296 amxc_var_clean(&def_val);
305 amxc_var_init(&def_val);
308 when_failed(retval, exit);
315 when_failed(retval, exit);
318 when_failed(retval, exit);
321 when_failed(retval, exit);
325 when_failed(retval, exit);
326 amxc_var_set(cstring_t, &def_val,
"");
330 when_failed(retval, exit);
338 amxc_var_clean(&def_val);
347 amxc_var_init(&def_val);
350 when_failed(retval, exit);
356 when_failed(retval, exit);
359 when_failed(retval, exit);
363 when_failed(retval, exit);
364 amxc_var_set(cstring_t, &def_val,
"");
368 when_failed(retval, exit);
376 amxc_var_clean(&def_val);
385 amxc_var_init(&def_val);
386 amxc_var_set(
bool, &def_val,
false);
389 when_failed(retval, exit);
395 when_failed(retval, exit);
398 when_failed(retval, exit);
401 when_failed(retval, exit);
404 when_failed(retval, exit);
407 when_failed(retval, exit);
411 when_failed(retval, exit);
412 amxc_var_set(cstring_t, &def_val,
"");
416 when_failed(retval, exit);
417 amxc_var_set(
bool, &def_val,
false);
420 when_failed(retval, exit);
428 amxc_var_clean(&def_val);
437 amxc_var_init(&def_val);
438 amxc_var_set(
bool, &def_val,
false);
441 when_failed(retval, exit);
449 when_failed(retval, exit);
450 amxc_var_set_type(&def_val, AMXC_VAR_ID_HTABLE);
455 when_failed(retval, exit);
456 amxc_var_set(cstring_t, &def_val,
"");
460 when_failed(retval, exit);
468 amxc_var_clean(&def_val);
474 amxc_llist_it_init(&object->
it);
477 object->attr.read_only = 0;
478 object->attr.priv = 0;
479 object->attr.prot = 0;
480 object->attr.persistent = 0;
481 object->attr.locked = 0;
484 object->last_index = 0;
487 object->index_name = NULL;
489 amxc_llist_init(&object->
objects);
493 amxc_var_init(&object->
events);
494 amxc_var_set_type(&object->
events, AMXC_VAR_ID_HTABLE);
496 amxc_llist_init(&object->
cb_fns);
513 when_failed(retval, exit);
517 when_failed(retval, exit);
521 when_failed(retval, exit);
525 when_failed(retval, exit);
529 when_failed(retval, exit);
533 when_failed(retval, exit);
537 when_failed(retval, exit);
541 when_failed(retval, exit);
552 amxc_var_t*
const data,
557 char* index_path = NULL;
558 amxc_var_t signal_data;
565 amxc_var_init(&signal_data);
567 amxc_var_set_type(&signal_data, AMXC_VAR_ID_HTABLE);
568 amxc_var_add_key(cstring_t, &signal_data,
"object", path);
569 amxc_var_add_key(cstring_t, &signal_data,
"path", index_path);
570 amxc_var_add_key(cstring_t, &signal_data,
"eobject", epath);
571 if(amxc_var_type_of(data) == AMXC_VAR_ID_HTABLE) {
572 const amxc_htable_t* table_data = amxc_var_constcast(amxc_htable_t, data);
573 amxc_htable_it_t* hit = amxc_htable_get_first(table_data);
575 amxc_var_t* part = amxc_var_from_htable_it(hit);
576 const char* key = amxc_htable_it_get_key(hit);
577 if(GET_ARG(&signal_data, key) == NULL) {
578 amxc_var_set_key(&signal_data, key, part, AMXC_VAR_FLAG_DEFAULT);
580 amxc_var_delete(&part);
582 hit = amxc_htable_get_first(table_data);
585 amxc_var_set_key(&signal_data,
"data", data, AMXC_VAR_FLAG_COPY);
588 amxp_sigmngr_trigger_signal(&
dm->
sigmngr, signal, &signal_data);
590 amxp_sigmngr_emit_signal(&
dm->
sigmngr, signal, &signal_data);
593 amxc_var_clean(&signal_data);
618 amxc_var_t* f = NULL;
620 if((*flags) == NULL) {
622 amxc_var_set_type((*flags), AMXC_VAR_ID_HTABLE);
624 f = GET_ARG((*flags), flag);
626 amxc_var_add_key(
bool, (*flags), flag,
true);
628 amxc_var_set(
bool, f,
true);
635 amxc_var_t* f = NULL;
636 const amxc_htable_t* ht_flags = NULL;
638 when_null((*flags), exit);
640 ht_flags = amxc_var_constcast(amxc_htable_t, *flags);
641 f = GET_ARG((*flags), flag);
644 if(amxc_htable_is_empty(ht_flags)) {
645 amxc_var_delete(flags);
654 const amxc_htable_t* ht_flags = NULL;
656 when_null(flags, exit);
658 ht_flags = amxc_var_constcast(amxc_htable_t, flags);
659 retval = amxc_htable_contains(ht_flags, flag);
Ambiorix Data Model Default actions header file.
Ambiorix Data Model API header file.
amxd_status_t amxd_object_func_exec(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_get_instances(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_get(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_list(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_add(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_del(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_set(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_get_supported(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
amxd_status_t amxd_object_func_describe(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
static amxd_status_t amxd_object_add_list_func(amxd_object_t *object)
static amxd_object_t base_template
static CONSTRUCTOR void amxd_base_objects_init(void)
static amxd_status_t amxd_object_add_exec_func(amxd_object_t *object)
static amxd_status_t amxd_object_add_describe_func(amxd_object_t *object)
static amxd_status_t amxd_object_add_add_func(amxd_object_t *object)
static amxc_llist_t base_objects
void PRIVATE amxd_object_init_base(amxd_object_t *const object, const amxd_object_type_t type)
void PRIVATE amxd_dm_event(const char *signal, const amxd_object_t *const object, amxc_var_t *const data, bool trigger)
void amxd_init_base(void)
void PRIVATE amxd_dm_set_derived_from(amxd_object_t *const object)
static amxd_status_t amxd_object_add_get_func(amxd_object_t *object)
static amxd_status_t amxd_object_add_get_supported_func(amxd_object_t *object)
bool PRIVATE amxd_common_has_flag(const amxc_var_t *const flags, const char *flag)
static amxd_status_t amxd_object_add_get_instances_func(amxd_object_t *object)
amxd_status_t PRIVATE amxd_dm_base_add_funcs(amxd_object_t *object)
void PRIVATE amxd_common_set_flag(amxc_var_t **flags, const char *flag)
void PRIVATE amxd_common_unset_flag(amxc_var_t **flags, const char *flag)
static amxd_status_t amxd_object_add_set_func(amxd_object_t *object)
static amxd_object_t base_singleton
bool PRIVATE amxd_object_is_base(const amxd_object_t *const object)
static DESTRUCTOR void amxd_base_objects_cleanup(void)
static amxd_status_t amxd_object_add_del_func(amxd_object_t *object)
Ambiorix Data Model API header file.
PRIVATE void amxd_object_free_func_it(amxc_llist_it_t *it)
enum _amxd_status amxd_status_t
@ amxd_status_unknown_error
#define AMXD_OBJECT_INDEXED
Name and path format flag - use index for instance objects.
enum _amxd_object_type amxd_object_type_t
The different object types.
#define AMXD_OBJECT_NAMED
Name and path format flag - default behavior, use name for instance objects.
#define AMXD_OBJECT_EXTENDED
Path format flag - set name or index of instrance objects between '[' and ']'.
#define AMXD_OBJECT_TERMINATE
Path format flag - when set the object path is terminated with a dot.
@ amxd_dm_access_protected
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_dm_t * amxd_object_get_dm(const amxd_object_t *const object)
Get the data model.
amxd_status_t amxd_object_add_function(amxd_object_t *const object, amxd_function_t *const func)
Adds an RPC method definition to the object definition.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
amxd_status_t amxd_function_set_attr(amxd_function_t *func, const amxd_fattr_id_t attr, const bool enable)
Sets or unsets a method attribute.
void amxd_function_delete(amxd_function_t **func)
Data model RPC method destructor function.
amxd_status_t amxd_function_arg_set_attr(amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr, const bool enable)
Sets or unsets a method argument attribute.
amxd_status_t amxd_function_new(amxd_function_t **func, const char *name, const uint32_t ret_type, amxd_object_fn_t impl)
Data model RPC method constructor function.
amxd_status_t amxd_function_new_arg(amxd_function_t *func, const char *name, const uint32_t type, amxc_var_t *default_value)
Adds an argument definition to a RPC method definition.
amxp_signal_mngr_t sigmngr
amxc_llist_t derived_objects
amxc_llist_it_t derived_from