LCOV - code coverage report
Current view: top level - zephyr/net - offloaded_netdev.h Coverage Total Hit
Test: new.info Lines: 100.0 % 6 6
Test Date: 2025-09-05 22:20:39

            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 2.0-1