62 #include <amxc/amxc.h>
63 #include <amxp/amxp_signal.h>
64 #include <amxp/amxp_slot.h>
81 return (amxc_var_get_type(type) != NULL &&
82 type < AMXC_VAR_ID_CUSTOM_BASE &&
83 type != AMXC_VAR_ID_LIST &&
84 type != AMXC_VAR_ID_HTABLE &&
85 type != AMXC_VAR_ID_FD &&
86 type != AMXC_VAR_ID_ANY);
94 amxc_llist_it_init(¶m->
it);
95 amxc_llist_init(¶m->
cb_fns);
109 amxc_var_init(¶m->
value);
110 param->
name = strdup(name);
111 when_null(param->
name, exit);
112 amxc_var_set_type(¶m->
value, type);
120 amxc_llist_it_take(¶m->
it);
122 amxc_var_delete(¶m->
flags);
124 amxc_var_clean(¶m->
value);
132 const uint32_t attr) {
146 !amxc_llist_is_empty(&owner->
instances)) ||
161 const uint32_t attr) {
165 when_null(owner, exit);
177 const uint32_t attr) {
179 bool was_counter = param->
attr.
counter == 1 ? true :
false;
180 bool is_counter =
false;
183 when_failed(
status, exit);
185 when_failed(
status, exit);
199 is_counter = param->
attr.
counter == 1 ? true :
false;
200 if(was_counter && !is_counter) {
213 const char* template_path = NULL;
214 amxc_var_t old_values;
220 template_path = (
const char*)
counter->priv;
222 when_null(counted, exit);
223 amxc_var_init(&old_values);
224 amxc_var_set_type(&old_values, AMXC_VAR_ID_HTABLE);
225 amxc_var_add_key(uint32_t,
228 GET_UINT32(&
counter->value, NULL));
231 amxc_var_clean(&old_values);
241 const uint32_t type) {
244 when_null(param, exit);
254 when_null((*param), exit);
259 if((retval != 0) && (param != NULL)) {
267 when_null(param, exit);
268 when_null((*param), exit);
271 amxc_llist_it_take(&(*param)->it);
283 when_null(dest, exit);
284 when_null(source, exit);
287 when_null((*dest), exit);
291 amxc_var_type_of(&source->
value)),
293 (*dest)->attr = source->
attr;
294 amxc_var_copy(&(*dest)->value, &source->
value);
295 if(source->
flags != NULL) {
296 amxc_var_new(&(*dest)->flags);
297 amxc_var_copy((*dest)->flags, source->
flags);
303 if((retval !=
amxd_status_ok) && (dest != NULL) && (*dest != NULL)) {
313 when_null(param, exit);
314 when_null(param->
it.llist, exit);
316 object = amxc_container_of(param->
it.llist,
amxd_object_t, parameters);
323 return param == NULL ? NULL : param->
name;
331 when_null(param, exit);
339 flags |= (1 << attr);
341 flags &= ~(1 << attr);
351 const uint32_t bitmask,
360 when_null(param, exit);
378 uint32_t attributes = 0;
379 when_null(param, exit);
401 when_null(param, exit);
405 retval = (flags & (1 << attr)) != 0 ? true :
false;
412 when_null(param, exit);
413 when_null(flag, exit);
414 when_true(*flag == 0, exit);
423 when_null(param, exit);
424 when_null(flag, exit);
425 when_true(*flag == 0, exit);
435 when_null(param, exit);
436 when_null(flag, exit);
437 when_true(*flag == 0, exit);
bool amxd_name_is_valid(const char *name)
Ambiorix Data Model API header file.
bool PRIVATE amxd_common_has_flag(const amxc_var_t *const flags, const char *flag)
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)
Ambiorix Data Model API header file.
Ambiorix Data Model API header file.
static uint32_t amxd_object_get_instance_count(const amxd_object_t *object)
amxd_status_t amxd_param_copy(amxd_param_t **dest, const amxd_param_t *const source)
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_set_attrs(amxd_param_t *param, const uint32_t bitmask, bool enable)
const char * amxd_param_get_name(const amxd_param_t *const param)
void amxd_param_unset_flag(amxd_param_t *param, const char *flag)
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
static amxd_status_t amxd_param_init(amxd_param_t *const param, const char *name, uint32_t type)
static bool amxd_param_type_is_valid(const uint32_t type)
amxd_status_t amxd_param_set_attr(amxd_param_t *param, const amxd_pattr_id_t attr, const bool enable)
void amxd_param_free(amxd_param_t **param)
bool amxd_param_has_flag(const amxd_param_t *const param, const char *flag)
void amxd_param_set_flag(amxd_param_t *param, const char *flag)
static amxd_status_t amxd_param_check_templ_attr(amxd_param_t *const param, const uint32_t attr)
static amxd_status_t amxd_param_set_attributes(amxd_param_t *const param, const uint32_t attr)
static int amxd_param_clean(amxd_param_t *const param)
uint32_t amxd_param_get_attrs(const amxd_param_t *const param)
amxd_object_t * amxd_param_get_owner(const amxd_param_t *const param)
static void amxd_param_free_cb_it(amxc_llist_it_t *it)
static amxd_status_t amxd_param_check_key_attr(amxd_param_t *const param, const uint32_t attr)
enum _amxd_pattr_id amxd_pattr_id_t
enum _amxd_status amxd_status_t
@ amxd_status_invalid_name
@ amxd_status_invalid_attr
@ amxd_status_invalid_type
@ amxd_status_unknown_error
void amxd_object_send_changed(amxd_object_t *object, amxc_var_t *params, bool trigger)
Send an object changed event.
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.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
static amxd_status_t status