LCOV - code coverage report
Current view: top level - zephyr/net - offloaded_netdev.h Hit Total Coverage
Test: new.info Lines: 6 6 100.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           1 : /** @file
       2             :  * @brief Offloaded network device iface API
       3             :  *
       4             :  * This is not to be included by the application.
       5             :  */
       6             : 
       7             : /*
       8             :  * Copyright (c) 2022 Nordic Semiconductor ASA
       9             :  *
      10             :  * SPDX-License-Identifier: Apache-2.0
      11             :  */
      12             : 
      13             : #ifndef ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_
      14             : #define ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_
      15             : 
      16             : #include <zephyr/kernel.h>
      17             : #include <zephyr/types.h>
      18             : #include <stdbool.h>
      19             : #include <zephyr/net/net_if.h>
      20             : 
      21             : #ifdef __cplusplus
      22             : extern "C" {
      23             : #endif
      24             : 
      25             : /**
      26             :  * @brief Offloaded Net Devices
      27             :  * @defgroup offloaded_netdev Offloaded Net Devices
      28             :  * @since 3.4
      29             :  * @version 0.8.0
      30             :  * @ingroup networking
      31             :  * @{
      32             :  */
      33             : 
      34             : /** Types of offloaded netdev L2 */
      35           1 : enum offloaded_net_if_types {
      36             :         /** Unknown, device hasn't register a type */
      37             :         L2_OFFLOADED_NET_IF_TYPE_UNKNOWN,
      38             : 
      39             :         /** Ethernet devices */
      40             :         L2_OFFLOADED_NET_IF_TYPE_ETHERNET,
      41             : 
      42             :         /** Modem */
      43             :         L2_OFFLOADED_NET_IF_TYPE_MODEM,
      44             : 
      45             :         /** IEEE 802.11 Wi-Fi */
      46             :         L2_OFFLOADED_NET_IF_TYPE_WIFI,
      47             : };
      48             : 
      49             : /**
      50             :  * @brief Extended net_if_api for offloaded ifaces/network devices, allowing handling of
      51             :  *        admin up/down state changes
      52             :  */
      53           1 : struct offloaded_if_api {
      54             :         /**
      55             :          * The net_if_api must be placed in first position in this
      56             :          * struct so that we are compatible with network interface API.
      57             :          */
      58           1 :         struct net_if_api iface_api;
      59             : 
      60             :         /** Enable or disable the device (in response to admin state change) */
      61           1 :         int (*enable)(const struct net_if *iface, bool state);
      62             : 
      63             :         /** Types of offloaded net device */
      64             :         enum offloaded_net_if_types (*get_type)(void);
      65             : };
      66             : 
      67             : /* Ensure offloaded_if_api is compatible with net_if_api */
      68             : BUILD_ASSERT(offsetof(struct offloaded_if_api, iface_api) == 0);
      69             : 
      70             : /**
      71             :  * @brief Check if the offloaded network interface supports Wi-Fi.
      72             :  *
      73             :  * @param iface Pointer to network interface
      74             :  *
      75             :  * @return True if interface supports Wi-Fi, False otherwise.
      76             :  */
      77           1 : static inline bool net_off_is_wifi_offloaded(struct net_if *iface)
      78             : {
      79             :         const struct offloaded_if_api *api = (const struct offloaded_if_api *)
      80             :                 net_if_get_device(iface)->api;
      81             : 
      82             :         return api->get_type && api->get_type() == L2_OFFLOADED_NET_IF_TYPE_WIFI;
      83             : }
      84             : 
      85             : /**
      86             :  * @}
      87             :  */
      88             : 
      89             : #ifdef __cplusplus
      90             : }
      91             : #endif
      92             : 
      93             : #endif /* ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_ */

Generated by: LCOV version 1.14