blob: 0f359726b20e8e8412c57988014e4f12da258e87 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.wlan.tap;
using fuchsia.wlan.device;
struct WlantapPhyConfig {
fuchsia.wlan.device.PhyInfo phy_info;
string name;
};
// See wlan_rx_info_t
struct WlanRxInfo {
uint32 rx_flags;
uint32 valid_fields;
uint16 phy;
uint32 data_rate;
fuchsia.wlan.device.Channel chan;
uint8 mcs;
int8 rssi_dbm;
int16 rcpi_dbmh;
int16 snr_dbh;
};
// See wlan_tx_info_t
struct WlanTxInfo {
uint32 tx_flags;
uint32 valid_fields;
uint16 phy;
uint8 cbw;
uint32 data_rate;
uint8 mcs;
};
struct WlanTxPacket {
vector<uint8> data;
WlanTxInfo info;
};
// See wlan_bss_config_t
struct WlanBssConfig {
array<uint8>:6 bssid;
uint8 bss_type;
bool remote;
};
// See wlan_key_config_t
struct WlanKeyConfig {
uint8 protection;
array<uint8>:3 cipher_oui;
uint8 cipher_type;
uint8 key_type;
array<uint8>:6 peer_addr;
uint8 key_idx;
vector<uint8>:32 key;
};
interface WlantapPhy {
// wlanmac_ifc_t callbacks
1: Rx(uint16 wlanmac_id, vector<uint8> data, WlanRxInfo info);
2: Status(uint16 wlanmac_id, uint32 st);
// wlanmac_protocol_ops_t
3: -> Tx(TxArgs args);
4: -> SetChannel(SetChannelArgs args);
5: -> ConfigureBss(ConfigureBssArgs args);
// TODO: ConfigureBeacon
7: -> SetKey(SetKeyArgs args);
8: -> WlanmacStart(WlanmacStartArgs args);
};
struct TxArgs {
uint16 wlanmac_id;
WlanTxPacket packet;
};
struct SetChannelArgs {
uint16 wlanmac_id;
fuchsia.wlan.device.Channel chan;
};
struct ConfigureBssArgs {
uint16 wlanmac_id;
WlanBssConfig config;
};
struct SetKeyArgs {
uint16 wlanmac_id;
WlanKeyConfig config;
};
struct WlanmacStartArgs {
uint16 wlanmac_id;
};