6#include "dawn/prog/toggle.hxx"
7#include "test_common.hxx"
9#include "dawn/io/sdata.hxx"
10#include "dawn/io/virt.hxx"
17static uint32_t g_cfg_src[] = {TOGGLE_SRC, 0};
18static uint32_t g_cfg_dst[] = {TOGGLE_DST, 0};
20static uint32_t g_bin_toggle[] = {
21 CProgToggle::objectId(0),
23 CProgToggle::cfgIdIOBind(2),
26 CProgToggle::cfgIdValues(),
31static void test_toggle_rising_edge()
43 TEST_ASSERT_EQUAL(OK, src.init());
44 TEST_ASSERT_EQUAL(OK, dst.init());
45 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
47 TEST_ASSERT_EQUAL(OK, prog.configure());
48 prog.setObjectMapItem(TOGGLE_SRC, &src);
49 prog.setObjectMapItem(TOGGLE_DST, &dst);
50 TEST_ASSERT_EQUAL(OK, prog.init());
51 TEST_ASSERT_EQUAL(OK, prog.start());
55 TEST_ASSERT_EQUAL(OK, src.setData(in));
56 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
57 TEST_ASSERT_EQUAL(1, out(0));
61 TEST_ASSERT_EQUAL(OK, src.setData(in));
62 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
63 TEST_ASSERT_EQUAL(1, out(0));
67 TEST_ASSERT_EQUAL(OK, src.setData(in));
68 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
69 TEST_ASSERT_EQUAL(0, out(0));
73 TEST_ASSERT_EQUAL(OK, src.setData(in));
74 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
75 TEST_ASSERT_EQUAL(0, out(0));
78 TEST_ASSERT_EQUAL(OK, src.setData(in));
80 TEST_ASSERT_EQUAL(OK, src.setData(in));
81 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
82 TEST_ASSERT_EQUAL(1, out(0));
84 TEST_ASSERT_EQUAL(OK, prog.stop());
87static void test_toggle_reset()
99 TEST_ASSERT_EQUAL(OK, src.init());
100 TEST_ASSERT_EQUAL(OK, dst.init());
101 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
102 TEST_ASSERT_EQUAL(OK, prog.configure());
103 prog.setObjectMapItem(TOGGLE_SRC, &src);
104 prog.setObjectMapItem(TOGGLE_DST, &dst);
105 TEST_ASSERT_EQUAL(OK, prog.init());
106 TEST_ASSERT_EQUAL(OK, prog.start());
110 TEST_ASSERT_EQUAL(OK, src.setData(in));
111 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
112 TEST_ASSERT_EQUAL(1, out(0));
116 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
122 TEST_ASSERT_EQUAL(OK, src.setData(in));
124 TEST_ASSERT_EQUAL(OK, src.setData(in));
125 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
126 TEST_ASSERT_EQUAL(1, out(0));
128 TEST_ASSERT_EQUAL(OK, prog.stop());
133 int test_prog_toggle()
136 DAWN_RUN_TEST(test_toggle_rising_edge);
137 DAWN_RUN_TEST(test_toggle_reset);
Descriptor wrapper for individual object configuration.
Virtual I/O type for user-provided data and callbacks.
@ CMD_RESET
Reset object internal state.
Toggle/latch: flips output between two configured values on each rising edge of the input.
Out-of-tree user-extension hooks for Dawn.
@ DTYPE_UINT32
Unsigned 32-bit integer (0 to 4294967295).
Static (compile-time) I/O data buffer (no timestamp).