Line data Source code
1 1 : /*
2 : * Copyright (c) 2018 Intel Corporation.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /** @file
8 : * @brief Dummy layer 2
9 : *
10 : * This is not to be included by the application.
11 : */
12 :
13 : #ifndef ZEPHYR_INCLUDE_NET_DUMMY_H_
14 : #define ZEPHYR_INCLUDE_NET_DUMMY_H_
15 :
16 : #include <zephyr/net/net_if.h>
17 : #include <zephyr/net/net_pkt.h>
18 :
19 : #ifdef __cplusplus
20 : extern "C" {
21 : #endif
22 :
23 : /**
24 : * @brief Dummy L2/driver support functions
25 : * @defgroup dummy Dummy L2/driver Support Functions
26 : * @since 1.14
27 : * @version 0.8.0
28 : * @ingroup networking
29 : * @{
30 : */
31 :
32 : /** Dummy L2 API operations. */
33 1 : struct dummy_api {
34 : /**
35 : * The net_if_api must be placed in first position in this
36 : * struct so that we are compatible with network interface API.
37 : */
38 1 : struct net_if_api iface_api;
39 :
40 : /** Send a network packet */
41 1 : int (*send)(const struct device *dev, struct net_pkt *pkt);
42 :
43 : /**
44 : * Receive a network packet (only limited use for this, for example
45 : * receiving capturing packets and post processing them).
46 : */
47 : enum net_verdict (*recv)(struct net_if *iface, struct net_pkt *pkt);
48 :
49 : /** Start the device. Called when the bound network interface is brought up. */
50 1 : int (*start)(const struct device *dev);
51 :
52 : /** Stop the device. Called when the bound network interface is taken down. */
53 1 : int (*stop)(const struct device *dev);
54 : };
55 :
56 : /* Make sure that the network interface API is properly setup inside
57 : * dummy API struct (it is the first one).
58 : */
59 : BUILD_ASSERT(offsetof(struct dummy_api, iface_api) == 0);
60 :
61 : #ifdef __cplusplus
62 : }
63 : #endif
64 :
65 : /**
66 : * @}
67 : */
68 :
69 : #endif /* ZEPHYR_INCLUDE_NET_DUMMY_H_ */
|