64 #include <amxc/amxc.h>
65 #include <amxp/amxp_signal.h>
66 #include <amxp/amxp_slot.h>
74 #include <amxc/amxc_macros.h>
84 assert_ptr_not_equal(
object, NULL);
85 assert_ptr_not_equal(func, NULL);
86 assert_ptr_not_equal(args, NULL);
87 assert_ptr_not_equal(ret, NULL);
88 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
99 assert_ptr_not_equal(
object, NULL);
100 assert_ptr_not_equal(func, NULL);
101 assert_ptr_not_equal(args, NULL);
102 assert_ptr_not_equal(ret, NULL);
103 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
114 assert_ptr_not_equal(
object, NULL);
115 assert_ptr_not_equal(func, NULL);
116 assert_ptr_not_equal(args, NULL);
117 assert_ptr_not_equal(ret, NULL);
118 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
136 assert_ptr_not_equal(
object, NULL);
137 assert_ptr_not_equal(func, NULL);
138 assert_ptr_not_equal(args, NULL);
139 assert_ptr_not_equal(ret, NULL);
140 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
146 assert_non_null(priv);
147 assert_ptr_equal(priv, &
dm);
151 assert_non_null(priv);
152 assert_ptr_equal(priv, &
dm);
159 assert_ptr_not_equal(
object, NULL);
160 assert_ptr_not_equal(func, NULL);
161 assert_ptr_not_equal(args, NULL);
162 assert_ptr_not_equal(ret, NULL);
163 assert_int_equal(amxc_var_type_of(args), AMXC_VAR_ID_HTABLE);
231 assert_ptr_not_equal(function_inst, NULL);
233 assert_ptr_equal(function_inst,
function);
237 assert_ptr_not_equal(function_inst, NULL);
239 assert_ptr_not_equal(function_inst,
function);
284 assert_ptr_not_equal(
function, NULL);
288 assert_ptr_not_equal(
function, NULL);
292 assert_ptr_not_equal(instance_object, NULL);
297 assert_ptr_not_equal(
function, NULL);
302 assert_ptr_not_equal(
function, NULL);
327 assert_ptr_not_equal(
function, NULL);
331 assert_ptr_equal(
function, NULL);
333 assert_ptr_equal(
function, NULL);
335 assert_ptr_equal(
function, NULL);
337 assert_ptr_equal(
function, NULL);
339 assert_ptr_equal(
function, NULL);
349 amxc_var_t functions;
350 const amxc_llist_t* func_list = NULL;
353 amxc_var_init(&functions);
381 assert_ptr_not_equal(
function, NULL);
387 assert_int_equal(amxc_var_type_of(&functions), AMXC_VAR_ID_LIST);
388 func_list = amxc_var_constcast(amxc_llist_t, &functions);
391 assert_int_equal(amxc_var_type_of(&functions), AMXC_VAR_ID_LIST);
392 func_list = amxc_var_constcast(amxc_llist_t, &functions);
394 amxc_var_clean(&functions);
397 amxc_var_dump(&functions, STDOUT_FILENO);
398 func_list = amxc_var_constcast(amxc_llist_t, &functions);
401 func_list = amxc_var_constcast(amxc_llist_t, &functions);
403 amxc_var_clean(&functions);
420 amxc_var_init(&args);
421 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
436 assert_int_equal(
amxd_function_new(&
function,
"inst_func2", AMXC_VAR_ID_CSTRING, NULL), 0);
445 assert_int_equal(
count1, 1);
447 assert_int_equal(
count1, 2);
449 assert_int_equal(
count1, 2);
451 assert_int_equal(
count1, 2);
453 assert_int_equal(
count1, 2);
456 assert_int_equal(
count1, 3);
458 assert_int_equal(
count1, 3);
460 assert_int_equal(
count1, 3);
461 assert_int_equal(
count2, 1);
468 amxc_var_set_type(&args, AMXC_VAR_ID_LIST);
471 amxc_var_clean(&args);
472 amxc_var_clean(&ret);
479 uint64_t local_call_id = 0;
484 amxc_var_init(&args);
485 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
497 while(amxp_signal_read() == 0) {
501 local_call_id = amxc_var_constcast(uint64_t, &ret);
502 assert_int_equal(local_call_id,
call_id);
504 while(amxp_signal_read() == 0) {
508 while(amxp_signal_read() == 0) {
511 while(amxp_signal_read() == 0) {
514 amxc_var_clean(&ret);
516 local_call_id = amxc_var_constcast(uint64_t, &ret);
517 assert_int_equal(local_call_id,
call_id);
519 while(amxp_signal_read() == 0) {
522 amxc_var_clean(&ret);
524 local_call_id = amxc_var_constcast(uint64_t, &ret);
525 assert_int_equal(local_call_id,
call_id);
527 while(amxp_signal_read() == 0) {
530 amxc_var_clean(&ret);
532 local_call_id = amxc_var_constcast(uint64_t, &ret);
533 amxc_var_set(
bool, &ret,
true);
536 while(amxp_signal_read() == 0) {
539 amxc_var_clean(&ret);
541 local_call_id = amxc_var_constcast(uint64_t, &ret);
542 assert_int_equal(local_call_id,
call_id);
543 amxc_var_clean(&ret);
545 local_call_id = amxc_var_constcast(uint64_t, &ret);
546 assert_int_equal(local_call_id,
call_id);
548 amxc_var_clean(&ret);
551 amxc_var_clean(&args);
552 amxc_var_clean(&ret);
559 uint64_t local_call_id = 0;
564 amxc_var_init(&args);
565 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
576 local_call_id = amxc_var_constcast(uint64_t, &ret);
577 assert_int_equal(local_call_id,
call_id);
580 while(amxp_signal_read() == 0) {
585 while(amxp_signal_read() == 0) {
589 local_call_id = amxc_var_constcast(uint64_t, &ret);
590 assert_int_equal(local_call_id,
call_id);
592 while(amxp_signal_read() == 0) {
596 local_call_id = amxc_var_constcast(uint64_t, &ret);
598 while(amxp_signal_read() == 0) {
602 local_call_id = amxc_var_constcast(uint64_t, &ret);
603 amxc_var_set(
bool, &ret,
true);
606 while(amxp_signal_read() == 0) {
610 local_call_id = amxc_var_constcast(uint64_t, &ret);
612 local_call_id = amxc_var_constcast(uint64_t, &ret);
613 assert_int_equal(local_call_id,
call_id);
615 amxc_var_clean(&args);
616 amxc_var_clean(&ret);
623 uint64_t local_call_id = 0;
628 amxc_var_init(&args);
629 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
639 while(amxp_signal_read() == 0) {
643 local_call_id = amxc_var_constcast(uint64_t, &ret);
644 assert_int_equal(local_call_id,
call_id);
647 while(amxp_signal_read() == 0) {
651 while(amxp_signal_read() == 0) {
654 while(amxp_signal_read() == 0) {
658 local_call_id = amxc_var_constcast(uint64_t, &ret);
659 assert_int_equal(local_call_id,
call_id);
661 while(amxp_signal_read() == 0) {
665 local_call_id = amxc_var_constcast(uint64_t, &ret);
666 assert_int_equal(local_call_id,
call_id);
669 while(amxp_signal_read() == 0) {
673 local_call_id = amxc_var_constcast(uint64_t, &ret);
674 amxc_var_set(
bool, &ret,
true);
679 while(amxp_signal_read() == 0) {
683 local_call_id = amxc_var_constcast(uint64_t, &ret);
684 assert_int_equal(local_call_id,
call_id);
687 local_call_id = amxc_var_constcast(uint64_t, &ret);
688 assert_int_equal(local_call_id,
call_id);
691 amxc_var_clean(&args);
692 amxc_var_clean(&ret);
706 amxc_var_init(&args);
707 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
722 assert_int_equal(
amxd_function_new(&
function,
"inst_func2", AMXC_VAR_ID_CSTRING, NULL), 0);
739 amxc_var_clean(&args);
740 amxc_var_clean(&ret);
Ambiorix Data Model API header file.
Ambiorix Data Model RPC methods API header file.
Ambiorix Data Model API header file.
enum _amxd_status amxd_status_t
@ amxd_dm_access_protected
amxd_object_t * amxd_dm_get_root(amxd_dm_t *const dm)
Fetches the root object of the data model.
amxd_status_t amxd_dm_add_root_object(amxd_dm_t *const dm, amxd_object_t *const object)
Adds an object to the root of the data model.
amxd_status_t amxd_dm_init(amxd_dm_t *dm)
Initializes a data model structure.
void amxd_dm_clean(amxd_dm_t *dm)
Cleans a data model structure.
amxd_object_t * amxd_object_get_parent(const amxd_object_t *const object)
Get the parent object.
amxd_object_t * amxd_object_get(const amxd_object_t *object, const char *name)
Get an instance or child of an object.
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_status_t amxd_object_change_function(amxd_object_t *const object, const char *name, amxd_object_fn_t impl)
Changes the implementation of an object's RPC method.
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.
amxd_function_t * amxd_object_get_function(const amxd_object_t *const object, const char *name)
Get the definition of a RPC method from an object.
uint32_t amxd_object_get_function_count(amxd_object_t *const object, amxd_dm_access_t access)
Retruns the number of RPC methods available in an object.
amxd_status_t amxd_object_list_functions(amxd_object_t *const object, amxc_var_t *const list, amxd_dm_access_t access)
Builds a linked list variant containing all function names available in the object.
amxd_status_t amxd_object_invoke_function(amxd_object_t *const object, const char *func_name, amxc_var_t *const args, amxc_var_t *const ret)
Calls an object RPC method.
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_instance(amxd_object_t **object, amxd_object_t *templ, const char *name, uint32_t index, amxc_var_t *values)
Data model object constructor function.
amxd_status_t amxd_object_new(amxd_object_t **object, const amxd_object_type_t type, const char *name)
Data model object constructor function.
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.
void amxd_function_deferred_remove(uint64_t call_id)
Removes a deferred RPC context.
amxd_object_t * amxd_function_get_owner(const amxd_function_t *const func)
Get the object pointer of the object containing the function definition.
amxd_status_t amxd_function_defer(const amxd_function_t *const func, uint64_t *call_id, amxc_var_t *const ret, amxd_deferred_cancel_t cancel_fn, void *priv)
Creates a deferred RPC context.
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_deferred_done(uint64_t call_id, amxd_status_t status, amxc_var_t *out_args, amxc_var_t *ret)
Finishes a deferred method and removes the deferred function context.
amxd_status_t amxd_function_set_deferred_cb(uint64_t call_id, amxp_deferred_fn_t cb, void *priv)
Sets a callback function to get the result of the deferred call.
void * amxd_function_deferred_get_priv(uint64_t call_id)
Gets the callee private data of an deferred function.
amxc_llist_t derived_objects
amxc_llist_it_t derived_from
#define TEMPLATE_DEFAULT_FUNCS
#define INSTANCE_DEFAULT_FUNCS
#define SINGELTON_DEFAULT_FUNCS
void test_amxd_object_deferred_function_no_callbacks(UNUSED void **state)
static void test_deferred_cancel(UNUSED uint64_t id, void *const priv)
void test_amxd_object_add_function(UNUSED void **state)
void test_amxd_object_get_function(UNUSED void **state)
void test_amxd_object_count_functions(UNUSED void **state)
static amxd_status_t test_deferred_func_invalid(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
void test_amxd_object_add_function_invalid_arg(UNUSED void **state)
void test_amxd_object_deferred_function_done_callback(UNUSED void **state)
void test_amxd_object_get_functions(UNUSED void **state)
static void test_deferred_done(UNUSED const amxc_var_t *const data, void *const priv)
static amxd_status_t test_deferred_func(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
void test_amxd_object_invoke_function(UNUSED void **state)
static amxd_status_t test_func2(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
static amxd_status_t test_func(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
static amxd_status_t test_deferred_func_cancel(amxd_object_t *object, amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
void test_amxd_object_change_function_invalid_args(UNUSED void **state)
void test_amxd_object_get_function_invalid_args(UNUSED void **state)
void test_amxd_object_change_function(UNUSED void **state)
void test_amxd_object_deferred_function_cancel_callback(UNUSED void **state)