64 #include <amxc/amxc.h>
65 #include <amxp/amxp.h>
78 const uint32_t attr) {
97 when_null(counted, exit);
115 amxc_var_init(&count);
116 when_str_empty(name, exit);
126 when_failed(
status, exit);
134 when_null(param, exit);
140 when_failed(
status, exit);
149 amxc_var_clean(&count);
157 when_null(
object, exit);
158 when_null((*
object), exit);
167 if(amxc_llist_is_empty(&(*object)->derived_objects)) {
189 when_null(
object, exit);
198 when_null((*
object), exit);
201 when_failed(retval, exit);
211 when_null(parent, exit);
212 when_null(child, exit);
213 when_true(parent == child, exit);
215 when_true_status(child->
it.llist == &parent->
objects,
218 when_not_null(child->
it.llist, exit);
230 when_failed(amxc_llist_append(&parent->
objects, &child->
it), exit);
240 const uint32_t flags) {
241 const char* name = NULL;
243 when_null(
object, exit);
246 name =
object->index_name;
252 if((name == NULL) && (object->
derived_from.llist != NULL)) {
266 return object == NULL ? 0 :
object->index;
274 when_null(
object, exit);
302 const uint32_t bitmask,
308 when_null(
object, exit);
335 uint32_t attributes = 0;
336 when_null(
object, exit);
352 when_null(
object, exit);
356 retval = (flags & (1 << attr)) != 0 ? true :
false;
371 when_null(param, exit);
392 when_null(
object, exit);
bool amxd_name_is_valid(const char *name)
Ambiorix Data Model API header file.
void PRIVATE amxd_dm_event(const char *signal, const amxd_object_t *const object, amxc_var_t *const data, bool trigger)
static amxd_param_t * amxd_create_counter_param(amxd_object_t *const container, amxd_object_t *const counted, const char *name)
static void amxd_object_set_attributes(amxd_object_t *const object, const uint32_t attr)
amxd_object_t * amxd_object_get_base(const amxd_object_t *const object)
static bool amxd_object_type_is_valid(const amxd_object_type_t type)
amxd_status_t amxd_object_set_counter(amxd_object_t *const object, const char *name)
static bool amxd_is_valid_counter(amxd_object_t *const counter, amxd_object_t *const counted)
Ambiorix Data Model API header file.
static uint32_t amxd_object_get_instance_count(const amxd_object_t *object)
amxd_param_t * amxd_object_get_param_counter_by_counted_object(const amxd_object_t *const object)
Gets a parameter definition associated with a counted object.
PRIVATE void amxd_object_clean(amxd_object_t *const object)
PRIVATE amxd_status_t amxd_object_init(amxd_object_t *const object, const amxd_object_type_t type, const char *name, amxc_var_t *templ_params, amxc_var_t *values)
amxd_status_t amxd_param_counter_update(amxd_param_t *counter)
bool amxd_param_is_attr_set(const amxd_param_t *const param, const amxd_pattr_id_t attr)
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
amxd_status_t amxd_param_set_value(amxd_param_t *const param, const amxc_var_t *const value)
amxd_status_t amxd_param_set_attr(amxd_param_t *param, const amxd_pattr_id_t attr, const bool enable)
amxd_status_t amxd_param_delete(amxd_param_t **param)
amxd_status_t amxd_param_add_action_cb(amxd_param_t *const param, const amxd_action_t reason, amxd_action_fn_t fn, void *priv)
void PRIVATE amxd_param_free(amxd_param_t **param)
amxd_status_t PRIVATE amxd_param_counter_destroy(amxd_object_t *const object, amxd_param_t *const param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, void *priv)
enum _amxd_status amxd_status_t
@ amxd_status_invalid_name
@ amxd_status_invalid_attr
@ amxd_status_invalid_type
@ 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.
enum _amxd_oattr_id amxd_oattr_id_t
The object attributes.
amxd_object_t * amxd_object_get_parent(const amxd_object_t *const object)
Get the parent object.
amxd_object_t * amxd_object_get_child(const amxd_object_t *object, const char *name)
Get a child of the object.
char * amxd_object_get_rel_path(const amxd_object_t *child, const amxd_object_t *parent, const uint32_t flags)
Get the relative 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_object(amxd_object_t *const parent, amxd_object_t *const child)
Adds an object in the data model tree.
amxd_param_t * amxd_object_get_param_def(const amxd_object_t *const object, const char *name)
Gets a parameter definition from an object.
amxd_status_t amxd_object_add_param(amxd_object_t *const object, amxd_param_t *const param)
Adds a parameter definition to an object.
uint32_t amxd_object_get_index(const amxd_object_t *const object)
Get the index of an instance object.
amxd_status_t amxd_object_set_attr(amxd_object_t *const object, const amxd_oattr_id_t attr, const bool enable)
Sets or unsets an object attribute.
amxd_status_t amxd_object_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
void amxd_object_free(amxd_object_t **object)
Data model object destructor function.
bool amxd_object_is_attr_set(const amxd_object_t *const object, const amxd_oattr_id_t attr)
Checks if an attribute is set.
const char * amxd_object_get_name(const amxd_object_t *const object, const uint32_t flags)
Get the name of the object (or index as a string for instance objects)
amxd_status_t amxd_object_set_attrs(amxd_object_t *const object, const uint32_t bitmask, bool enable)
Sets or unsets object attributes using a bitmap.
uint32_t amxd_object_get_attrs(const amxd_object_t *const object)
Gets the set attributes of an object.
amxc_llist_it_t derived_from
static amxd_status_t status