66 #include <sys/signalfd.h>
69 #include <amxc/amxc.h>
70 #include <amxp/amxp_signal.h>
71 #include <amxp/amxp_slot.h>
72 #include <amxp/amxp_timer.h>
82 #include <amxc/amxc_macros.h>
88 UNUSED
const amxc_var_t*
const data,
91 printf(
"event recieved %s\n", sig_name);
99 amxc_var_t* event_data = NULL;
102 amxc_var_new(&event_data);
103 amxc_var_set_type(event_data, AMXC_VAR_ID_HTABLE);
104 amxc_var_add_key(cstring_t, event_data,
"param1",
"Text");
105 amxc_var_add_key(uint32_t, event_data,
"param2", 100);
113 assert_int_equal(
amxd_param_new(¶m,
"MyParam1", AMXC_VAR_ID_CSTRING), 0);
115 assert_int_equal(
amxd_param_new(¶m,
"MyParam2", AMXC_VAR_ID_BOOL), 0);
117 assert_int_equal(
amxd_param_new(¶m,
"MyParam3", AMXC_VAR_ID_UINT32), 0);
123 assert_int_equal(
amxd_param_new(¶m,
"MyParam1", AMXC_VAR_ID_CSTRING), 0);
125 assert_int_equal(
amxd_param_new(¶m,
"MyParam2", AMXC_VAR_ID_BOOL), 0);
127 assert_int_equal(
amxd_param_new(¶m,
"MyParam3", AMXC_VAR_ID_UINT32), 0);
135 struct signalfd_siginfo si;
137 res = read(
sfd, &si,
sizeof(si));
138 assert_false(res < 0);
139 assert_false(res !=
sizeof(si));
140 if(si.ssi_signo == SIGALRM) {
141 amxp_timers_calculate();
147 while(amxp_signal_read() == 0) {
157 sigaddset(&
mask, SIGALRM);
159 int rv = sigprocmask(SIG_BLOCK, &
mask, NULL);
160 assert_false(rv < 0);
163 assert_false(
sfd < 0);
177 amxp_timer_t* expire = NULL;
180 amxp_timer_new(&expire, NULL, NULL);
183 amxp_timer_start(expire, 5000);
198 while(amxp_signal_read() == 0) {
201 amxp_timer_start(expire, 5000);
214 amxp_timer_set_interval(expire, 1000);
215 amxp_timer_start(expire, 5000);
222 amxp_timer_delete(&expire);
228 amxp_timer_t* expire = NULL;
231 amxp_timer_new(&expire, NULL, NULL);
244 amxp_timer_set_interval(expire, 10000);
245 amxp_timer_start(expire, 1000);
250 amxp_timer_delete(&expire);
256 amxp_timer_t* expire = NULL;
259 amxp_timer_new(&expire, NULL, NULL);
262 amxp_timer_start(expire, 5000);
266 amxp_timer_start(expire, 5000);
273 amxp_timer_delete(&expire);
301 while(amxp_signal_read() == 0) {
312 amxc_var_t* event_data = NULL;
314 assert_non_null(
object);
317 assert_non_null(event_data);
319 assert_int_equal(amxc_var_type_of(event_data), AMXC_VAR_ID_NULL);
320 amxc_var_delete(&event_data);
323 assert_non_null(event_data);
324 assert_int_equal(amxc_var_type_of(event_data), AMXC_VAR_ID_HTABLE);
326 amxc_var_delete(&event_data);
330 amxc_var_t* event_data = NULL;
332 assert_non_null(
object);
335 assert_null(event_data);
338 assert_null(event_data);
341 assert_null(event_data);
344 assert_null(event_data);
348 amxc_var_t* event_data = NULL;
351 assert_non_null(
object);
353 while(amxp_signal_read() == 0) {
358 amxc_var_delete(&event_data);
360 while(amxp_signal_read() == 0) {
364 assert_int_equal(count, 1);
368 amxc_var_t* event_data = NULL;
370 assert_non_null(
object);
374 assert_non_null(event_data);
376 assert_int_equal(amxc_var_type_of(event_data), AMXC_VAR_ID_NULL);
377 amxc_var_delete(&event_data);
381 amxc_var_t* event_data = NULL;
383 assert_non_null(
object);
387 assert_null(event_data);
394 amxc_var_t* params = NULL;
406 while(amxp_signal_read() == 0) {
411 amxc_var_init(&data);
412 amxc_var_set_type(&data, AMXC_VAR_ID_HTABLE);
414 amxc_var_add_key(
bool, &data,
"set_read_only",
false);
415 params = amxc_var_add_key(amxc_htable_t, &data,
"oparameters", NULL);
416 amxc_var_add_key(cstring_t, params,
"MyParam1",
"Hello Universe");
417 amxc_var_add_key(
bool, params,
"MyParam2",
false);
426 while(amxp_signal_read() == 0) {
430 amxc_var_clean(&data);
Ambiorix Data Model API header file.
amxd_object_t * amxd_dm_findf(amxd_dm_t *const dm, const char *abs_path,...) __attribute__((format(printf
Ambiorix Data Model API header file.
Ambiorix Data Model API header file.
amxd_status_t amxd_param_new(amxd_param_t **param, const char *name, const uint32_t type)
Ambiorix Data Model API header file.
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.
void amxd_object_remove_event(amxd_object_t *const object, const char *event_name)
Removes an event definition to the object.
amxd_status_t amxd_object_add_event_ext(amxd_object_t *const object, const char *event_name, amxc_var_t *event_data)
Adds an event definition to the object.
amxd_status_t amxd_object_add_event(amxd_object_t *const object, const char *event_name)
Adds an event definition to the object.
amxc_var_t * amxd_object_new_event_data(const amxd_object_t *object, const char *event_name)
Allocates a variant that contains the predefined event data.
AMXD_INLINE void amxd_object_emit_signal(amxd_object_t *const object, const char *name, amxc_var_t *const data)
Emit an object signal/event.
amxd_status_t amxd_object_new_pi(amxd_object_t *object, uint32_t sec)
Creates and starts a periodic inform event timer.
amxd_status_t amxd_object_delete_pi(amxd_object_t *object)
Stops and deletes a periodic inform event timer.
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_add_param(amxd_object_t *const object, amxd_param_t *const param)
Adds a parameter definition to an 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.
void amxd_object_delete(amxd_object_t **object)
Invokes the destroy handler(s) of the object.
amxd_status_t amxd_trans_add_action(amxd_trans_t *const trans, const amxd_action_t reason, const amxc_var_t *data)
Adds an action to a transaction.
void amxd_trans_dump(const amxd_trans_t *const trans, const int fd, const bool reverse)
Dumps the transaction to a file descriptor.
void amxd_trans_clean(amxd_trans_t *const trans)
Cleans the transaction object.
amxd_status_t amxd_trans_apply(amxd_trans_t *const trans, amxd_dm_t *const dm)
Applies all previously added actions.
#define amxd_trans_set_value(type, trans, name, value)
Helper macro for setting a value.
amxd_status_t amxd_trans_add_inst(amxd_trans_t *const trans, const uint32_t index, const char *name)
Adds an instance add action to a transaction.
amxd_status_t amxd_trans_select_pathf(amxd_trans_t *const trans, const char *path,...) __attribute__((format(printf
Selects an object using a absolute or relative path.
amxd_status_t amxd_trans_init(amxd_trans_t *const trans)
Initializes a transaction object.
amxp_signal_mngr_t sigmngr
void test_can_send_event(UNUSED void **state)
void test_can_allocate_event_data(UNUSED void **state)
void test_can_remove_event_definition(UNUSED void **state)
void test_only_one_periodic_inform_per_object(UNUSED void **state)
void test_events_are_not_duplicated(UNUSED void **state)
void test_can_start_and_stop_periodic_inform(UNUSED void **state)
static void test_build_dm(void)
void test_allocate_event_data_fails_when_event_not_found(UNUSED void **state)
int test_object_event_setup(UNUSED void **state)
void test_timer_stops_when_object_is_destroyed(UNUSED void **state)
void test_event_changed_is_send(UNUSED void **state)
static void test_event_handler(UNUSED const char *const sig_name, UNUSED const amxc_var_t *const data, void *const priv)
int test_object_event_teardown(UNUSED void **state)
void test_can_change_event_definition(UNUSED void **state)
static int read_sig_alarm(void)