This NIC implements an 802.11 network interface card. It can be configured via the mgmtType parameter to act as an AP or a STA, or for ad-hoc mode.
Potential mgmType values: Ieee80211MgmtSTASimplified, Ieee80211MgmtSTA Ieee80211MgmtAP, Ieee80211MgmtAPSimplified, Ieee80211MgmtAdhoc.
A classifier is needed if you want to use QoS.
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Name | Type | Description |
---|---|---|
Client | compound module | (no description) |
Node | compound module | (no description) |
SinkClient | compound module | (no description) |
SinkClient | compound module | (no description) |
SinkNode | compound module | (no description) |
ThroughputClient | compound module | (no description) |
ThroughputClient | compound module | (no description) |
ThroughputClient | compound module | (no description) |
ThroughputClient | compound module | (no description) |
ThroughputServer | compound module | (no description) |
ThroughputServer | compound module | (no description) |
WirelessAPWithSink | compound module | (no description) |
WirelessAPWithSink | compound module |
Well, this models a 802.11 Access Point with a Sink. |
Name | Type | Default value | Description |
---|---|---|---|
interfaceTableModule | string | ||
energySourceModule | string | "" | |
classifierType | string | "" |
needed for EDCA, as the classifier assigns User Priority (UP) to packets; UP determines Access Category via TID |
mgmtType | string | "Ieee80211MgmtSTA" |
name of the management module type (implements IIeee80211Mgmt) |
radioType | string | "Ieee80211ScalarRadio" | |
macType | string | "Ieee80211CompatibleMac" |
choose from Ieee80211Mac and Ieee80211CompatibleMac, See also: IIeee80211Mac |
opMode | string | "g(mixed)" | |
bitrate | double | -1bps | |
_agentNeeded | bool | (mgmtType == "Ieee80211MgmtSTA") |
internal par. do not use, shows if optional agent module is needed |
Name | Value | Description |
---|---|---|
nic | ||
display | i=block/ifcard |
Name | Direction | Size | Description |
---|---|---|---|
upperLayerIn | input |
to upper layers |
|
upperLayerOut | output |
from upper layers |
|
radioIn | input |
to receive radio frames |
Name | Type | Default value | Description |
---|---|---|---|
agent.interfaceTableModule | string |
The path to the InterfaceTable module |
|
agent.activeScan | bool | true |
selects between active and passive scanning |
agent.channelsToScan | string | "" |
list of channel numbers to scan (space delimited); empty means all channels |
agent.probeDelay | double | 100ms |
delay before sending a probe request during active scanning |
agent.minChannelTime | double | 150ms |
min interval to spend on a channel during active scanning |
agent.maxChannelTime | double | 300ms |
channel time for passive scanning, and max channel time for active scanning |
agent.authenticationTimeout | double | 5s |
timeout for the authentication procedure |
agent.associationTimeout | double | 5s |
timeout for the association procedure |
agent.startingTime | double | -1s |
agent starting time. |
agent.default_ssid | string | "SSID" |
default ssid |
// // This NIC implements an 802.11 network interface card. // It can be configured via the mgmtType parameter to act // as an AP or a STA, or for ad-hoc mode. // // Potential mgmType values: Ieee80211MgmtSTASimplified, Ieee80211MgmtSTA // Ieee80211MgmtAP, Ieee80211MgmtAPSimplified, Ieee80211MgmtAdhoc. // // A classifier is needed if you want to use QoS. // module Ieee80211Nic like IWirelessNic { parameters: string interfaceTableModule; string energySourceModule = default(""); string classifierType = default(""); // needed for EDCA, as the classifier assigns User Priority (UP) to packets; UP determines Access Category via TID string mgmtType = default("Ieee80211MgmtSTA"); // name of the management module type (implements IIeee80211Mgmt) string radioType = default("Ieee80211ScalarRadio"); string macType = default("Ieee80211CompatibleMac"); // choose from Ieee80211Mac and Ieee80211CompatibleMac, @see IIeee80211Mac string opMode @enum("a","b","g(erp)","g(mixed)","n","p") = default("g(mixed)"); double bitrate @unit("bps") = default(-1bps); bool _agentNeeded = (mgmtType == "Ieee80211MgmtSTA"); // internal par. do not use, shows if optional agent module is needed **.opMode = opMode; **.bitrate = bitrate; *.interfaceTableModule = default(absPath(interfaceTableModule)); *.energySourceModule = default(absPath(energySourceModule)); @nic; @display("i=block/ifcard"); gates: input upperLayerIn; // to upper layers output upperLayerOut; // from upper layers input radioIn @labels(IRadioFrame); // to receive radio frames submodules: classifier: <classifierType> like IIeee8021dQoSClassifier if classifierType != "" { parameters: @display("p=200,100"); } agent: Ieee80211AgentSTA if _agentNeeded { parameters: @display("p=200,200"); } mgmt: <mgmtType> like IIeee80211Mgmt { parameters: macModule = "^.mac"; @display("p=100,100"); } mac: <macType> like IIeee80211Mac { parameters: @display("p=100,200"); } radio: <radioType> like IRadio { parameters: @display("p=100,300"); } connections: radioIn --> { @display("m=s"); } --> radio.radioIn; radio.upperLayerIn <-- mac.lowerLayerOut; radio.upperLayerOut --> mac.lowerLayerIn; mac.upperLayerOut --> mgmt.macIn; mac.upperLayerIn <-- mgmt.macOut; mgmt.agentOut --> agent.mgmtIn if _agentNeeded; mgmt.agentIn <-- agent.mgmtOut if _agentNeeded; mgmt.upperLayerOut --> { @display("m=n"); } --> upperLayerOut; mgmt.upperLayerIn <-- { @display("m=n"); } <-- upperLayerIn if classifierType == ""; mgmt.upperLayerIn <-- { @display("m=n"); } <-- classifier.out if classifierType != ""; classifier.in <-- { @display("m=n"); } <-- upperLayerIn if classifierType != ""; }