Versions Compared

Key

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

Status
subtletrue
colourBlue
titleWork In-Progress

HAL Interface for Reference Platforms(Raspberry Pi 4 & Banana Pi 4 Reference Platform)

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 platformthe reference platforms.

Hal Version : 3

Directory Structure

...

WifiHal Diagram:
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

...

3. Broadband & Modem HALs

...


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_client_mgt.h - Wifi client management specific APIs.
  • wifi_hal_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

...

Ethernet & VLAN HALs:

  • - Wifi measurement and Telemetry specific APIs.

  • wifi

...

vlan_eth_hal.h

...

  • _hal_

...

  • deprecated.h

...

Bluetooth HAL:

  • bt_hal.h

...

Voice HAL (If applicable):

  • voice_hal.h
  • - APIs to be deprecated.
  • wifi_hal_emu.h - Includes API for Emulator


Wifi Hal wifi_hal.h:
It 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.


Source code: https://github.com/rdkcentral/rdkb-halif-wifi