Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Hardware Abstraction Layer (HAL) in is to abstract the RDK -B project provides an interface for hardware-dependent operationsWi-Fi requirements at a general level to allow platform independent control. This document explores the available HAL components in the halinterfacerdkb-haif-wifi directory and identifies those relevant to the Raspberry Pi 4 reference platform.

Hal Version : 3

Directory Structure

...

WifiHal Diagram:

Source code: https://github.com/rdkcentral/rdkb-halif-wifi
Reference: https://github.com/rdkcentral/rdkb-halif-wifi/blob/develop/docs/pages/images/WifiHALDiagram.PNG

Image Added

Components are listed below:

  • hostapd (host access point daemon) is a user space daemon software enabling a network interface card to act as an access point and authentication server.
  • nl80211/cfg80211 - nl80211 is the interface between user space software (iw etc.) and the kernel (cfg80211 and mac80211 kernel modules, and specific drivers)

The directory contains various HAL implementations, categorized as follows:

1. Network and Ethernet HALs

  • vlan_eth_hal.h - VLAN Ethernet HAL

  • vlan_hal_emu.h - VLAN HAL Emulator

  • xdsl_hal.h - xDSL HAL (Not relevant to RPi4)

  • xtm_hal.h - Transmit Multiplexer HAL (Not relevant to RPi4)

2. Wireless (WiFi) HALs

...

wifi_hal.h - Core WiFi HAL (Relevant to RPi4)

rdkb-halif-wifi/
├── build_ut.sh
├── CHANGELOG.md
├── configure.ac
├── CONTRIBUTING.md
├── COPYING -> LICENSE
├── LICENSE
├── NOTICE
├── README.md -> ./docs/pages/halSpec.md
├── docs/
│   ├── pages/
│   ├── generate_docs.sh
├── include/
│   ├── wifi_hal.h
│   ├── wifi_hal_ap.h
│   ├── wifi_hal_client_mgt.h
│   ├── wifi_hal_deprecated.h
│   ├── wifi_hal_emu.h

...


│   ├── wifi_hal_extender.h

...


│   ├── wifi_hal_

...

generic.h

...


│   ├── wifi_hal_radio.h

...


│   ├── wifi_hal_sta.h

...


│   ├── wifi_hal_telemetry.h

...


...


2. Wireless (WiFi) HALs

...

  • wifi_hal.h -

...

  • Core WiFi HAL (Relevant to RPi4)

...

  • wifi_hal_

...

  • ap.h -

...

4. Voice and Bluetooth HALs

  • voice_hal.h - Voice Processing HAL

  • bt_hal.h - Bluetooth HAL (Relevant to RPi4 if Bluetooth is needed)

5. TR-069 and Device Management HALs

  • Tr69_Tlv.h - TR-069 TLV Management

HALs Relevant to Raspberry Pi 4

For Raspberry Pi 4, the most relevant HALs include:

WiFi HALs:

  • Includes API to create, configure and read configuration, factory-reset and reset of the VAP.

  • wifi_hal_

...

wifi_hal_sta.h

...

  • client_mgt.h - Wifi client management specific APIs.
  • wifi_hal_

...

Ethernet & VLAN HALs:

  • vlan_eth_hal.h

  • vlan_hal_emu.h

...

Bluetooth HAL:

  • bt_hal.h

...

Voice HAL (If applicable):

  • voice_hal.h
  • extender.h - Includes API's used by Plume Mesh.

  • wifi_hal_generic.h

...

  • -

...

  • Wifi generic API and types definition used across multiples modules. Includes below API's.

  • wifi_hal_radio.h

...

  • -

...

  • Includes API to configure and read configuration, factory-reset and reset of the radio.

  • wifi_hal_

...

  • sta.h - Includes API to create, configure and read configuration the STA VAP.

  • wifi_hal_telemetry.h - Wifi measurement and Telemetry specific APIs.

  • wifi_hal_

...

  • deprecated.h -

...

  • APIs to be deprecated.
  • wifi_hal_

...

  • emu.h - Includes API for Emulator


's used by Plume Mesh.
wifi_hal_deprecated.h - APIs to be deprecated. Not add new function or structure!Wifi Hal serves as the central interface for interacting with different WiFi components like the radio, access point (AP), station (STA), client management, telemetry, and extenders. The APIs defined in wifi_hal.h are meant to be used across multiple modules of the WiFi stack. For example, the wifi_hal_generic.h file may include basic functionality needed by all other modules, while the wifi_hal_radio.h, wifi_hal_ap.h, and other headers provide specific functionality for each part of the WiFi subsystem.All the header files are mentioned and explained in the below doxygen link and halinterface source link are listed below:
https://wiki.rdkcentral.com/doxygen/rdkb/dir_12ae9f146c1bfe45e1d6b2b716eb01b4.html
https://code.rdkcentral.com/r/admin/repos/rdkb/components/opensource/ccsp/halinterface,general