6#include "dawn/prog/counter.hxx"
7#include "test_common.hxx"
9#include "dawn/io/sdata.hxx"
10#include "dawn/io/virt.hxx"
17static uint32_t g_cfg_src[] = {CTR_SRC, 0};
18static uint32_t g_cfg_dst[] = {CTR_DST, 0};
21static uint32_t g_bin_counter[] = {
22 CProgCounter::objectId(0),
24 CProgCounter::cfgIdIOBind(2),
27 CProgCounter::cfgIdParams(),
34static void test_counter_increment()
46 TEST_ASSERT_EQUAL(OK, src.init());
47 TEST_ASSERT_EQUAL(OK, dst.init());
48 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
49 TEST_ASSERT_EQUAL(OK, prog.configure());
50 prog.setObjectMapItem(CTR_SRC, &src);
51 prog.setObjectMapItem(CTR_DST, &dst);
52 TEST_ASSERT_EQUAL(OK, prog.init());
53 TEST_ASSERT_EQUAL(OK, prog.start());
57 TEST_ASSERT_EQUAL(OK, src.setData(in));
58 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
59 TEST_ASSERT_EQUAL(1, out(0));
63 TEST_ASSERT_EQUAL(OK, src.setData(in));
65 TEST_ASSERT_EQUAL(OK, src.setData(in));
66 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
67 TEST_ASSERT_EQUAL(2, out(0));
71 TEST_ASSERT_EQUAL(OK, src.setData(in));
73 TEST_ASSERT_EQUAL(OK, src.setData(in));
74 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
75 TEST_ASSERT_EQUAL(3, out(0));
79 TEST_ASSERT_EQUAL(OK, src.setData(in));
81 TEST_ASSERT_EQUAL(OK, src.setData(in));
82 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
83 TEST_ASSERT_EQUAL(0, out(0));
85 TEST_ASSERT_EQUAL(OK, prog.stop());
88static void test_counter_no_edge_on_high()
100 TEST_ASSERT_EQUAL(OK, src.init());
101 TEST_ASSERT_EQUAL(OK, dst.init());
102 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
103 TEST_ASSERT_EQUAL(OK, prog.configure());
104 prog.setObjectMapItem(CTR_SRC, &src);
105 prog.setObjectMapItem(CTR_DST, &dst);
106 TEST_ASSERT_EQUAL(OK, prog.init());
107 TEST_ASSERT_EQUAL(OK, prog.start());
111 TEST_ASSERT_EQUAL(OK, src.setData(in));
113 TEST_ASSERT_EQUAL(OK, src.setData(in));
114 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
115 TEST_ASSERT_EQUAL(1, out(0));
117 TEST_ASSERT_EQUAL(OK, prog.stop());
120static void test_counter_reset()
132 TEST_ASSERT_EQUAL(OK, src.init());
133 TEST_ASSERT_EQUAL(OK, dst.init());
134 TEST_ASSERT_EQUAL(OK, src.initialize(1, 1,
true));
135 TEST_ASSERT_EQUAL(OK, prog.configure());
136 prog.setObjectMapItem(CTR_SRC, &src);
137 prog.setObjectMapItem(CTR_DST, &dst);
138 TEST_ASSERT_EQUAL(OK, prog.init());
139 TEST_ASSERT_EQUAL(OK, prog.start());
143 TEST_ASSERT_EQUAL(OK, src.setData(in));
145 TEST_ASSERT_EQUAL(OK, src.setData(in));
147 TEST_ASSERT_EQUAL(OK, src.setData(in));
156 TEST_ASSERT_EQUAL(OK, src.setData(in));
158 TEST_ASSERT_EQUAL(OK, src.setData(in));
159 TEST_ASSERT_EQUAL(OK, dst.getData(out, 1));
160 TEST_ASSERT_EQUAL(1, out(0));
162 TEST_ASSERT_EQUAL(OK, prog.stop());
167 int test_prog_counter()
170 DAWN_RUN_TEST(test_counter_increment);
171 DAWN_RUN_TEST(test_counter_no_edge_on_high);
172 DAWN_RUN_TEST(test_counter_reset);
Descriptor wrapper for individual object configuration.
Virtual I/O type for user-provided data and callbacks.
@ CMD_RESET
Reset object internal state.
Event counter with configurable wrap-around.
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).