55 #include <amxc/amxc.h>
56 #include <amxp/amxp_signal.h>
72 amxc_llist_t* cb_fns = ¶m->
cb_fns;
76 when_null(
object, exit);
77 when_null(param, exit);
79 amxc_llist_for_each(it, cb_fns) {
81 if(
cb_fn->reason != action) {
87 when_false(amxc_htable_is_empty(amxc_var_constcast(amxc_htable_t, actions)), exit);
92 super = (
object->derived_from.llist == NULL) ?
100 if(super_param != NULL) {
114 static const char* attr_name[] = {
115 "template",
"instance",
"private",
"read-only",
"persistent",
116 "volatile",
"counter",
"key",
"unique",
"protected",
"mutable"
118 amxc_var_t* subvar = NULL;
119 amxc_var_set_type(description, AMXC_VAR_ID_HTABLE);
121 amxc_var_add_key(cstring_t, description,
"name", name);
122 amxc_var_add_key(uint32_t, description,
"type_id", type_id);
123 amxc_var_add_key(cstring_t, description,
"type_name", amxc_var_get_type_name_from_id(type_id));
124 amxc_var_add_new_key(description,
"value");
125 subvar = amxc_var_add_key(amxc_htable_t, description,
"attributes", NULL);
127 amxc_var_add_key(
bool, subvar, attr_name[i],
IS_BIT_SET(attrs, i));
129 subvar = amxc_var_add_key(amxc_llist_t, description,
"flags", NULL);
131 const amxc_htable_t* ht_flags = amxc_var_constcast(amxc_htable_t, flags);
132 amxc_htable_iterate(it, ht_flags) {
133 amxc_var_t* flag = amxc_var_from_htable_it(it);
134 if(amxc_var_dyncast(
bool, flag)) {
135 amxc_var_add(cstring_t, subvar, amxc_htable_it_get_key(it));
144 const amxc_var_t*
const args,
145 amxc_var_t*
const retval,
148 amxc_var_t* value = NULL;
149 amxc_var_t* constraints = NULL;
151 when_null(param, exit);
152 when_null(retval, exit);
164 constraints = amxc_var_add_key(amxc_htable_t, retval,
"validate", NULL);
166 if(amxc_htable_is_empty(amxc_var_constcast(amxc_htable_t, constraints))) {
167 amxc_var_delete((&constraints));
170 if((GET_ARG(args,
"no-param-value") == NULL) || !GET_BOOL(args,
"no-param-value")) {
171 value = amxc_var_get_key(retval,
"value", AMXC_VAR_FLAG_DEFAULT);
182 amxc_var_t*
const value) {
186 when_null(param, exit);
187 when_null(value, exit);
Ambiorix Data Model Default actions header file.
amxd_status_t amxd_param_describe(amxd_param_t *const param, amxc_var_t *const value)
void amxd_param_build_description(amxc_var_t *description, const char *name, uint32_t type_id, uint32_t attrs, amxc_var_t *flags)
static void amxd_param_describe_actions(amxd_object_t *object, amxd_param_t *param, amxc_var_t *actions, amxd_action_t action)
amxd_status_t amxd_action_param_describe(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, UNUSED void *priv)
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.
const char * amxd_param_get_name(const amxd_param_t *const param)
static uint32_t amxd_param_get_type(const 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)
enum _amxd_action amxd_action_t
enum _amxd_status amxd_status_t
@ amxd_status_function_not_implemented
@ amxd_status_unknown_error
amxd_object_t * amxd_object_get_parent(const amxd_object_t *const object)
Get the parent 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.
amxc_llist_it_t derived_from
static int cb_fn(amxd_object_t *start_object, amxd_object_t *matching_object, UNUSED void *priv)
static amxd_status_t status