]> Git Repo - esp-hosted.git/blob - host/stm32/driver/netif/netdev_if.h
hosted - network interface
[esp-hosted.git] / host / stm32 / driver / netif / netdev_if.h
1 // Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 /** prevent recursive inclusion **/
16 #ifndef __NETDEV_IF_H
17 #define __NETDEV_IF_H
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 /**
24  * @brief Network data buffer
25  */
26 struct pbuf {
27         /* Data buffer */
28         uint8_t *payload;
29         /* Length of data buffer */
30         uint16_t len;
31 };
32
33 /**
34  * @brief Network device instance
35  */
36 typedef struct netdev * netdev_handle_t;
37
38 /**
39  * @brief Network operations implemented by driver
40  */
41 struct netdev_ops {
42         /* Open device */
43         int (* netdev_open) (netdev_handle_t netdev);
44         /* Close device */
45         int (* netdev_close) (netdev_handle_t netdev);
46         /* Transmit packet */
47         int (* netdev_xmit) (netdev_handle_t netdev, struct pbuf *net_buf);
48 };
49
50 /**
51  * @brief Allocate network device instance for given interface name
52  * @param sizeof_priv - sizeof driver private instance
53  * @param name - Interface name
54  * @retval network device instance
55  */
56 netdev_handle_t netdev_alloc(uint32_t sizeof_priv, char *name);
57
58 /**
59  * @brief Free network device instance
60  * @param netdev - Network device instance
61  * @retval none
62  */
63 void netdev_free(netdev_handle_t netdev);
64
65 /**
66  * @brief Returns address of driver priv instance from network device instance
67  * @param netdev - Network device instance
68  * @retval - Driver priv instance
69  */
70 void * netdev_get_priv(netdev_handle_t netdev);
71
72 /**
73  *  @brief Register a network interface
74  *  @param netdev - Network device instance
75  *  @param netdev_ops - Network operations implemented by driver
76  *  @retval -   on success: 0
77  *              on failure: -1
78  */
79 int netdev_register(netdev_handle_t netdev, struct netdev_ops *ops);
80
81 /**
82  * @brief Unregister network interfcace
83  * @param netdev - Network device instance
84  * @retval -    on success: 0
85  *              on failure: -1
86  */
87 int netdev_unregister(netdev_handle_t netdev);
88
89 /**
90  * @brief Rx handler of network stack
91  * @param netdev - Network device instance
92  * @param pbuf - received data buffer
93  */
94 int netdev_rx(netdev_handle_t netdev, struct pbuf *net_buf);
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif
This page took 0.03134 seconds and 4 git commands to generate.