Skip to content

Commit 9c2a081

Browse files
henrikbrixandersenaescolar
authored andcommitted
tests: drivers: can: api: avoid duplicating common functions
Move common utility code to common.c to reduce duplication. Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
1 parent 5cbc042 commit 9c2a081

File tree

4 files changed

+85
-116
lines changed

4 files changed

+85
-116
lines changed

‎tests/drivers/can/api/src/canfd.c‎

Lines changed: 7 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -119,48 +119,6 @@ static void send_test_frame_nowait(const struct device *dev, const struct can_fr
119119
zassert_ok(err, "failed to send frame (err %d)", err);
120120
}
121121

122-
/**
123-
* @brief Add a CAN message queue with asserts.
124-
*
125-
* @param dev Pointer to the device structure for the driver instance.
126-
* @param filter CAN filter for the CAN message queue.
127-
*
128-
* @return CAN filter ID.
129-
*/
130-
static inline int add_rx_msgq(const struct device *dev, const struct can_filter *filter)
131-
{
132-
int filter_id;
133-
134-
filter_id = can_add_rx_filter_msgq(dev, &can_msgq, filter);
135-
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
136-
zassert_true(filter_id >= 0, "negative filter number");
137-
138-
return filter_id;
139-
}
140-
141-
/**
142-
* @brief Add a CAN filter with asserts.
143-
*
144-
* @param dev Pointer to the device structure for the driver instance.
145-
* @param filter CAN filter.
146-
* @param callback Receive callback function.
147-
*
148-
* @return CAN filter ID.
149-
*/
150-
static inline int add_rx_filter(const struct device *dev, const struct can_filter *filter,
151-
can_rx_callback_t callback)
152-
{
153-
int filter_id;
154-
155-
k_sem_reset(&rx_callback_sem);
156-
157-
filter_id = can_add_rx_filter(dev, callback, (void *)filter, filter);
158-
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
159-
zassert_true(filter_id >= 0, "negative filter number");
160-
161-
return filter_id;
162-
}
163-
164122
/**
165123
* @brief Perform a send/receive test with a set of CAN ID filters and CAN frames.
166124
*
@@ -177,7 +135,7 @@ static void send_receive(const struct can_filter *filter1, const struct can_filt
177135
int filter_id_2;
178136
int err;
179137

180-
filter_id_1 = add_rx_msgq(can_dev, filter1);
138+
filter_id_1 = can_common_add_rx_msgq(can_dev, filter1);
181139
send_test_frame(can_dev, frame1);
182140

183141
err = k_msgq_get(&can_msgq, &frame_buffer, TEST_RECEIVE_TIMEOUT);
@@ -189,15 +147,15 @@ static void send_receive(const struct can_filter *filter1, const struct can_filt
189147
k_sem_reset(&tx_callback_sem);
190148

191149
if ((frame1->flags & CAN_FRAME_FDF) != 0) {
192-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_std_callback_fd_1);
150+
filter_id_1 = can_common_add_rx_filter(can_dev, filter1, rx_std_callback_fd_1);
193151
} else {
194-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_std_callback_1);
152+
filter_id_1 = can_common_add_rx_filter(can_dev, filter1, rx_std_callback_1);
195153
}
196154

197155
if ((frame2->flags & CAN_FRAME_FDF) != 0) {
198-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_std_callback_fd_2);
156+
filter_id_2 = can_common_add_rx_filter(can_dev, filter2, rx_std_callback_fd_2);
199157
} else {
200-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_std_callback_2);
158+
filter_id_2 = can_common_add_rx_filter(can_dev, filter2, rx_std_callback_2);
201159
}
202160

203161
send_test_frame_nowait(can_dev, frame1, tx_std_callback_1);
@@ -323,8 +281,8 @@ static void check_filters_preserved_between_modes(can_mode_t first, can_mode_t s
323281
zassert_ok(err, "failed to start CAN controller (err %d)", err);
324282

325283
/* Add classic CAN and CAN FD filter */
326-
filter_id_1 = add_rx_msgq(can_dev, &test_std_filter_1);
327-
filter_id_2 = add_rx_msgq(can_dev, &test_std_filter_2);
284+
filter_id_1 = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
285+
filter_id_2 = can_common_add_rx_msgq(can_dev, &test_std_filter_2);
328286

329287
/* Verify classic filter in first mode */
330288
send_test_frame(can_dev, &test_std_frame_1);

‎tests/drivers/can/api/src/classic.c‎

Lines changed: 31 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -247,48 +247,6 @@ static void send_test_frame_nowait(const struct device *dev, const struct can_fr
247247
zassert_ok(err, "failed to send frame (err %d)", err);
248248
}
249249

250-
/**
251-
* @brief Add a CAN message queue with asserts.
252-
*
253-
* @param dev Pointer to the device structure for the driver instance.
254-
* @param filter CAN filter for the CAN message queue.
255-
*
256-
* @return CAN filter ID.
257-
*/
258-
static inline int add_rx_msgq(const struct device *dev, const struct can_filter *filter)
259-
{
260-
int filter_id;
261-
262-
filter_id = can_add_rx_filter_msgq(dev, &can_msgq, filter);
263-
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
264-
zassert_true(filter_id >= 0, "negative filter number");
265-
266-
return filter_id;
267-
}
268-
269-
/**
270-
* @brief Add a CAN filter with asserts.
271-
*
272-
* @param dev Pointer to the device structure for the driver instance.
273-
* @param filter CAN filter.
274-
* @param callback Receive callback function.
275-
*
276-
* @return CAN filter ID.
277-
*/
278-
static inline int add_rx_filter(const struct device *dev, const struct can_filter *filter,
279-
can_rx_callback_t callback)
280-
{
281-
int filter_id;
282-
283-
k_sem_reset(&rx_callback_sem);
284-
285-
filter_id = can_add_rx_filter(dev, callback, (void *)filter, filter);
286-
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
287-
zassert_true(filter_id >= 0, "negative filter number");
288-
289-
return filter_id;
290-
}
291-
292250
/**
293251
* @brief Perform a send/receive test with a set of CAN ID filters and CAN frames.
294252
*
@@ -306,7 +264,7 @@ static void send_receive(const struct can_filter *filter1, const struct can_filt
306264
int filter_id_2;
307265
int err;
308266

309-
filter_id_1 = add_rx_msgq(can_dev, filter1);
267+
filter_id_1 = can_common_add_rx_msgq(can_dev, filter1);
310268
zassert_not_equal(filter_id_1, -ENOSPC, "no filters available");
311269
zassert_true(filter_id_1 >= 0, "negative filter number");
312270
send_test_frame(can_dev, frame1);
@@ -331,25 +289,29 @@ static void send_receive(const struct can_filter *filter1, const struct can_filt
331289

332290
if ((frame1->flags & CAN_FRAME_IDE) != 0) {
333291
if (filter1->mask == CAN_EXT_ID_MASK) {
334-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_ext_callback_1);
335-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_ext_callback_2);
292+
filter_id_1 = can_common_add_rx_filter(can_dev, filter1, rx_ext_callback_1);
293+
filter_id_2 = can_common_add_rx_filter(can_dev, filter2, rx_ext_callback_2);
336294
send_test_frame_nowait(can_dev, frame1, tx_ext_callback_1);
337295
send_test_frame_nowait(can_dev, frame2, tx_ext_callback_2);
338296
} else {
339-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_ext_mask_callback_1);
340-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_ext_mask_callback_2);
297+
filter_id_1 =
298+
can_common_add_rx_filter(can_dev, filter1, rx_ext_mask_callback_1);
299+
filter_id_2 =
300+
can_common_add_rx_filter(can_dev, filter2, rx_ext_mask_callback_2);
341301
send_test_frame_nowait(can_dev, frame1, tx_ext_callback_1);
342302
send_test_frame_nowait(can_dev, frame2, tx_ext_callback_2);
343303
}
344304
} else {
345305
if (filter1->mask == CAN_STD_ID_MASK) {
346-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_std_callback_1);
347-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_std_callback_2);
306+
filter_id_1 = can_common_add_rx_filter(can_dev, filter1, rx_std_callback_1);
307+
filter_id_2 = can_common_add_rx_filter(can_dev, filter2, rx_std_callback_2);
348308
send_test_frame_nowait(can_dev, frame1, tx_std_callback_1);
349309
send_test_frame_nowait(can_dev, frame2, tx_std_callback_2);
350310
} else {
351-
filter_id_1 = add_rx_filter(can_dev, filter1, rx_std_mask_callback_1);
352-
filter_id_2 = add_rx_filter(can_dev, filter2, rx_std_mask_callback_2);
311+
filter_id_1 =
312+
can_common_add_rx_filter(can_dev, filter1, rx_std_mask_callback_1);
313+
filter_id_2 =
314+
can_common_add_rx_filter(can_dev, filter2, rx_std_mask_callback_2);
353315
send_test_frame_nowait(can_dev, frame1, tx_std_callback_1);
354316
send_test_frame_nowait(can_dev, frame2, tx_std_callback_2);
355317
}
@@ -613,22 +575,24 @@ ZTEST(can_classic, test_add_filter)
613575
{
614576
int filter_id;
615577

616-
filter_id = add_rx_filter(can_dev, &test_std_filter_1, rx_std_callback_1);
578+
filter_id = can_common_add_rx_filter(can_dev, &test_std_filter_1, rx_std_callback_1);
617579
can_remove_rx_filter(can_dev, filter_id);
618580

619-
filter_id = add_rx_filter(can_dev, &test_ext_filter_1, rx_ext_callback_1);
581+
filter_id = can_common_add_rx_filter(can_dev, &test_ext_filter_1, rx_ext_callback_1);
620582
can_remove_rx_filter(can_dev, filter_id);
621583

622-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
584+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
623585
can_remove_rx_filter(can_dev, filter_id);
624586

625-
filter_id = add_rx_msgq(can_dev, &test_ext_filter_1);
587+
filter_id = can_common_add_rx_msgq(can_dev, &test_ext_filter_1);
626588
can_remove_rx_filter(can_dev, filter_id);
627589

628-
filter_id = add_rx_filter(can_dev, &test_std_masked_filter_1, rx_std_mask_callback_1);
590+
filter_id = can_common_add_rx_filter(can_dev, &test_std_masked_filter_1,
591+
rx_std_mask_callback_1);
629592
can_remove_rx_filter(can_dev, filter_id);
630593

631-
filter_id = add_rx_filter(can_dev, &test_ext_masked_filter_1, rx_ext_mask_callback_1);
594+
filter_id = can_common_add_rx_filter(can_dev, &test_ext_masked_filter_1,
595+
rx_ext_mask_callback_1);
632596
can_remove_rx_filter(can_dev, filter_id);
633597
}
634598

@@ -739,7 +703,7 @@ static void add_remove_max_filters(bool ide)
739703

740704
for (i = 0; i < max; i++) {
741705
filter.id++;
742-
filter_ids[i] = add_rx_msgq(can_dev, &filter);
706+
filter_ids[i] = can_common_add_rx_msgq(can_dev, &filter);
743707
}
744708

745709
filter.id++;
@@ -776,7 +740,7 @@ ZTEST_USER(can_classic, test_receive_timeout)
776740
int filter_id;
777741
int err;
778742

779-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
743+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
780744

781745
err = k_msgq_get(&can_msgq, &frame, TEST_RECEIVE_TIMEOUT);
782746
zassert_equal(err, -EAGAIN, "received a frame without sending one");
@@ -898,7 +862,7 @@ ZTEST(can_classic, test_send_receive_std_id_no_data)
898862
int filter_id;
899863
int err;
900864

901-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
865+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
902866
err = can_send(can_dev, &frame, TEST_SEND_TIMEOUT, NULL, NULL);
903867
zassert_ok(err, "failed to send frame without data (err %d)", err);
904868

@@ -948,7 +912,7 @@ ZTEST_USER(can_classic, test_send_receive_msgq)
948912
int err;
949913
int i;
950914

951-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
915+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
952916

953917
k_msgq_get_attrs(&can_msgq, &attrs);
954918
nframes = attrs.max_msgs;
@@ -1007,7 +971,7 @@ ZTEST_USER(can_classic, test_reject_std_id_rtr)
1007971

1008972
Z_TEST_SKIP_IFDEF(CONFIG_CAN_ACCEPT_RTR);
1009973

1010-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
974+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
1011975

1012976
err = can_send(can_dev, &test_std_rtr_frame_1, TEST_SEND_TIMEOUT, NULL, NULL);
1013977
if (err == -ENOTSUP) {
@@ -1034,7 +998,7 @@ ZTEST_USER(can_classic, test_reject_ext_id_rtr)
1034998

1035999
Z_TEST_SKIP_IFDEF(CONFIG_CAN_ACCEPT_RTR);
10361000

1037-
filter_id = add_rx_msgq(can_dev, &test_ext_filter_1);
1001+
filter_id = can_common_add_rx_msgq(can_dev, &test_ext_filter_1);
10381002

10391003
err = can_send(can_dev, &test_ext_rtr_frame_1, TEST_SEND_TIMEOUT, NULL, NULL);
10401004
if (err == -ENOTSUP) {
@@ -1059,7 +1023,7 @@ ZTEST(can_classic, test_send_receive_wrong_id)
10591023
int filter_id;
10601024
int err;
10611025

1062-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
1026+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
10631027

10641028
send_test_frame(can_dev, &test_std_frame_2);
10651029

@@ -1183,7 +1147,7 @@ ZTEST_USER(can_classic, test_filters_preserved_through_mode_change)
11831147
int filter_id;
11841148
int err;
11851149

1186-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
1150+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
11871151
send_test_frame(can_dev, &test_std_frame_1);
11881152

11891153
err = k_msgq_get(&can_msgq, &frame, TEST_RECEIVE_TIMEOUT);
@@ -1227,7 +1191,7 @@ ZTEST_USER(can_classic, test_filters_preserved_through_bitrate_change)
12271191
int filter_id;
12281192
int err;
12291193

1230-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
1194+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
12311195
send_test_frame(can_dev, &test_std_frame_1);
12321196

12331197
err = k_msgq_get(&can_msgq, &frame, TEST_RECEIVE_TIMEOUT);
@@ -1274,7 +1238,7 @@ ZTEST_USER(can_classic, test_filters_added_while_stopped)
12741238
err = can_stop(can_dev);
12751239
zassert_ok(err, "failed to stop CAN controller (err %d)", err);
12761240

1277-
filter_id = add_rx_msgq(can_dev, &test_std_filter_1);
1241+
filter_id = can_common_add_rx_msgq(can_dev, &test_std_filter_1);
12781242

12791243
err = can_start(can_dev);
12801244
zassert_ok(err, "failed to start CAN controller (err %d)", err);

‎tests/drivers/can/api/src/common.c‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,31 @@ void assert_frame_equal(const struct can_frame *frame1, const struct can_frame *
220220
}
221221
}
222222

223+
int can_common_add_rx_msgq(const struct device *dev, const struct can_filter *filter)
224+
{
225+
int filter_id;
226+
227+
filter_id = can_add_rx_filter_msgq(dev, &can_msgq, filter);
228+
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
229+
zassert_true(filter_id >= 0, "negative filter number");
230+
231+
return filter_id;
232+
}
233+
234+
int can_common_add_rx_filter(const struct device *dev, const struct can_filter *filter,
235+
can_rx_callback_t callback)
236+
{
237+
int filter_id;
238+
239+
k_sem_reset(&rx_callback_sem);
240+
241+
filter_id = can_add_rx_filter(dev, callback, (void *)filter, filter);
242+
zassert_not_equal(filter_id, -ENOSPC, "no filters available");
243+
zassert_true(filter_id >= 0, "negative filter number");
244+
245+
return filter_id;
246+
}
247+
223248
void can_common_test_setup(can_mode_t initial_mode)
224249
{
225250
int err;

‎tests/drivers/can/api/src/common.h‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,28 @@ void assert_frame_equal(const struct can_frame *frame1,
164164
const struct can_frame *frame2,
165165
uint32_t id_mask);
166166

167+
/**
168+
* @brief Add a CAN message queue with asserts.
169+
*
170+
* @param dev Pointer to the device structure for the driver instance.
171+
* @param filter CAN filter for the CAN message queue.
172+
*
173+
* @return CAN filter ID.
174+
*/
175+
int can_common_add_rx_msgq(const struct device *dev, const struct can_filter *filter);
176+
177+
/**
178+
* @brief Add a CAN filter with asserts.
179+
*
180+
* @param dev Pointer to the device structure for the driver instance.
181+
* @param filter CAN filter.
182+
* @param callback Receive callback function.
183+
*
184+
* @return CAN filter ID.
185+
*/
186+
int can_common_add_rx_filter(const struct device *dev, const struct can_filter *filter,
187+
can_rx_callback_t callback);
188+
167189
/**
168190
* @brief Common setup function for the CAN controller device under test.
169191
*

0 commit comments

Comments
 (0)