Skip to main content

hisi_rf_core/
lib.rs

1//! Chip-neutral radio control and L2 data-plane contracts.
2//!
3//! This crate owns the portable controller, runner, configuration, event, and
4//! L2-device contracts. Applications normally depend on the chip-selecting
5//! `hisi-rf` facade instead of naming this implementation crate directly.
6//!
7//! [`init`] claims caller-provided static state and returns an exclusive
8//! [`RadioController`]. Splitting it yields a [`WifiController`], a
9//! [`WifiDevice`], and the mandatory [`RadioRunner`]. Only the runner calls the
10//! chip backend; control methods merely enqueue commands and await completion.
11
12#![no_std]
13
14#[cfg(test)]
15extern crate std;
16
17pub mod ble;
18#[doc(hidden)]
19pub mod control;
20mod diagnostics;
21#[cfg(feature = "incremental-backend-experiment")]
22mod incremental;
23pub mod sle;
24mod state;
25mod wifi;
26
27pub use diagnostics::{
28    DIAGNOSTIC_SCHEMA, DIAGNOSTIC_TRACE_CAPACITY, Diagnostic, DiagnosticCode, DiagnosticStage,
29    DiagnosticTrace, DiagnosticTraceEntry, DiagnosticTraceKind, RecoveryAction,
30};
31#[cfg(feature = "incremental-backend-experiment")]
32pub use incremental::{
33    CancelDirective, CancelOutcome, CommandArbiter, CommandArbiterAction, CommandArbiterError,
34    CommandSequence, FairWakeSelector, IncrementalBackendDriver, IncrementalCompletion,
35    IncrementalDriverError, IncrementalDriverEvent, IncrementalRadioParts, IncrementalRadioRunner,
36    IncrementalRadioRunnerError, IncrementalRequest, IncrementalRunnerDiagnostics,
37    IncrementalRunnerState, IncrementalWaitError, IncrementalWaitIntent, IncrementalWaitPlatform,
38    IncrementalWifiBackend, OperationId, OperationLifecycle, OperationStateError, OperationTracker,
39    PendingCommand, PollDisposition, RunnerStateError, RunnerStep, RunnerTransition, SubmitError,
40    WaitSet, WakeReason, WorkBudget, WorkReport,
41};
42pub use wifi::{
43    BackendError, BackendErrorClass, BackendTimeout, BlockingRunnerDiagnostics, ConnectionInfo,
44    EventDiagnostics, ManagementFrameProtection, OperationTimeout, Passphrase, PersonalSecurity,
45    RadioConfig, RadioController, RadioParts, RadioResources, RadioRunner, RadioState, SaePwe,
46    ScanConfig, ScanOutcome, ScanResult, Security, Ssid, StationConfig, WifiBackend, WifiConfig,
47    WifiController, WifiDevice, WifiEvent, WifiL2Capabilities, WifiParts, init,
48};
49
50/// Failure to establish or use the radio control plane.
51#[derive(Clone, Copy, Debug, Eq, PartialEq)]
52pub enum Error {
53    /// The supplied [`RadioState`] has already been claimed.
54    AlreadyInitialized,
55    /// The chip backend rejected an operation.
56    Backend(BackendError),
57    /// A backend completion did not match the outstanding command.
58    Protocol,
59}