# siliconlabs/wfx-fullmac-driver architecture

> Architecture diagram of the GitHub repository siliconlabs/wfx-fullmac-driver, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/siliconlabs/wfx-fullmac-driver
- Repository: https://github.com/siliconlabs/wfx-fullmac-driver

## Overview

WFx FMAC is a portable host-side driver for Silicon Labs Wi-Fi transceivers. The principal workflow is a host application invoking driver APIs, which exchange control and data with the transceiver over SPI or SDIO; the transceiver provides full-MAC Wi-Fi and WPA2 personal authentication, including roaming. The repository also contains firmware message/register definitions and an optional secure-link implementation. Source excerpts are partial, so links not established by the README or indexed references are omitted rather than inferred.

Main entry points: [`wfx_fmac_driver/sl_wfx.c`](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_wfx.c) (FMAC driver), [`wfx_fmac_driver/bus/sl_wfx_bus.c`](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus.c) (Bus layer), [`wfx_fmac_driver/firmware/sl_wfx_api.h`](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_api.h) (Firmware API index), [`wfx_fmac_driver/firmware/sl_wfx_cmd_api.h`](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_cmd_api.h) (Wi-Fi commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Driver runtime"]
  node_driver["FMAC driver<br/>[sl_wfx.c]"]
  node_hosthooks["Platform hooks<br/>[sl_wfx_host_api.h]"]
  node_status["Status codes<br/>[sl_status.h]"]
end

subgraph group_transport["Bus transports"]
  node_buscore["Bus layer<br/>[sl_wfx_bus.c]"]
  node_spi["SPI transport<br/>[sl_wfx_bus_spi.c]"]
  node_sdio["SDIO transport<br/>[sl_wfx_bus_sdio.c]"]
end

subgraph group_protocol["Firmware protocol"]
  node_commandapi["Wi-Fi commands<br/>[sl_wfx_cmd_api.h]"]
  node_generalapi["General messages"]
  node_registers["Device registers<br/>[sl_wfx_registers.h]"]
  node_firmwareimage["WF200 firmware image<br/>[sl_wfx_wf200_C0.h]"]
  node_apiindex["Firmware API index<br/>[sl_wfx_api.h]"]
end

subgraph group_security["Secure link"]
  node_securelink["Secure-link protocol"]
  node_secureconfig["Secure-link configuration"]
end

node_host(("Host application"))
node_transceiver["WFx transceiver"]

node_host -->|"invokes"| node_driver
node_driver -->|"communicates with"| node_transceiver
node_driver -.->|"references"| node_securelink
node_buscore -.->|"transport option"| node_spi
node_buscore -.->|"transport option"| node_sdio
node_transceiver -->|"implements commands"| node_commandapi
node_transceiver -->|"implements messages"| node_generalapi
node_apiindex -->|"includes"| node_generalapi
node_apiindex -->|"includes"| node_commandapi

click node_driver "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_wfx.c"
click node_hosthooks "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_wfx_host_api.h"
click node_buscore "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus.c"
click node_spi "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus_spi.c"
click node_sdio "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus_sdio.c"
click node_commandapi "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_cmd_api.h"
click node_generalapi "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_general_api.h"
click node_registers "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_registers.h"
click node_firmwareimage "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_wf200_C0.h"
click node_securelink "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/secure_link/sl_wfx_secure_link.c"
click node_secureconfig "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/secure_link/sl_wfx_secure_link_configuration.h"
click node_apiindex "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_api.h"
click node_status "https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_status.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_driver,node_hosthooks,node_status toneBlue
class node_buscore,node_spi,node_sdio toneAmber
class node_commandapi,node_generalapi,node_registers,node_firmwareimage,node_apiindex toneMint
class node_securelink,node_secureconfig toneRose
class node_host,node_transceiver toneIndigo
```

## Components

### Driver runtime

- [FMAC driver](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_wfx.c): `wfx_fmac_driver/sl_wfx.c`
- [Platform hooks](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_wfx_host_api.h): `wfx_fmac_driver/sl_wfx_host_api.h`
- [Status codes](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/sl_status.h): `wfx_fmac_driver/sl_status.h`

### Bus transports

- [Bus layer](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus.c): `wfx_fmac_driver/bus/sl_wfx_bus.c`
- [SPI transport](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus_spi.c): `wfx_fmac_driver/bus/sl_wfx_bus_spi.c`
- [SDIO transport](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/bus/sl_wfx_bus_sdio.c): `wfx_fmac_driver/bus/sl_wfx_bus_sdio.c`

### Firmware protocol

- [Wi-Fi commands](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_cmd_api.h): `wfx_fmac_driver/firmware/sl_wfx_cmd_api.h`
- [General messages](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_general_api.h): `wfx_fmac_driver/firmware/sl_wfx_general_api.h`
- [Device registers](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_registers.h): `wfx_fmac_driver/firmware/sl_wfx_registers.h`
- [WF200 firmware image](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_wf200_C0.h): `wfx_fmac_driver/firmware/sl_wfx_wf200_C0.h`
- [Firmware API index](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/firmware/sl_wfx_api.h): `wfx_fmac_driver/firmware/sl_wfx_api.h`

### Secure link

- [Secure-link protocol](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/secure_link/sl_wfx_secure_link.c): `wfx_fmac_driver/secure_link/sl_wfx_secure_link.c`
- [Secure-link configuration](https://github.com/siliconlabs/wfx-fullmac-driver/blob/master/wfx_fmac_driver/secure_link/sl_wfx_secure_link_configuration.h): `wfx_fmac_driver/secure_link/sl_wfx_secure_link_configuration.h`

### Other components

- **Host application**
- **WFx transceiver**

## Connections

- Host application → FMAC driver: invokes (evidence: `README.md`)
- FMAC driver → WFx transceiver: communicates with (evidence: `README.md`)
- FMAC driver → Secure-link protocol: references (evidence: `wfx_fmac_driver/sl_wfx.c`)
- Bus layer → SPI transport: transport option (evidence: `README.md`)
- Bus layer → SDIO transport: transport option (evidence: `README.md`)
- WFx transceiver → Wi-Fi commands: implements commands (evidence: `wfx_fmac_driver/firmware/sl_wfx_cmd_api.h`)
- WFx transceiver → General messages: implements messages (evidence: `wfx_fmac_driver/firmware/sl_wfx_general_api.h`)
- Firmware API index → General messages: includes (evidence: `wfx_fmac_driver/firmware/sl_wfx_api.h`)
- Firmware API index → Wi-Fi commands: includes (evidence: `wfx_fmac_driver/firmware/sl_wfx_api.h`)
