The following chart summarizes the OIDs used to get or set the general operational characteristics of wireless WAN miniports and/or their NICs.
Currently, there are no defined statistics OIDs for the wireless WAN medium.
Q |
S |
Indication |
Name |
M | |||
M |
M |
M | |
M | |||
M |
M |
M | |
M | |||
M | |||
M |
M |
M | |
M |
M | ||
M |
M |
M | |
M |
M |
M | |
M | |||
M |
M |
M | |
M |
M |
M | |
M |
M | ||
M |
M | ||
M | |||
M |
M |
M | |
M |
M |
M | |
M |
M | ||
M |
M | ||
M | |||
M | |||
M |
M | ||
M |
M |
The following describes each of the preceding OIDs and their respective associated structures more fully.
References for the set of network-type-dependent OID_WW_XXX follow those for the OID_WW_GEN_XXX.
Unless otherwise specified, the requesting protocol must allocate all buffer space necessary to complete OID requests. Underlying NDIS drivers need only copy the data into the supplied buffers.
To account for differences in hardware architectures and structure packing, structure members must be aligned on an 8-byte (NDIS-defined type NDIS_PHYSICAL_ADDRESS) boundary and the sizeof operator in “C” (or an analogous function) must be used to calculate the lengths of structure elements.
Some network devices support external interfaces to configure the device. Therefore, it is possible for some objects to change dynamically, which is outside the control of the underlying miniport.
Many of these OIDs have associated structures with members of type NDIS_VAR_DATA_DESC, defined as follows:
typedef struct _NDIS_VAR_DATA_DESC { USHORT Length; // number of bytes of data in buffer USHORT MaximumLength; // total size of buffer in bytes LONG Offset; // offset in bytes, relative to struct } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
This structure defines a type used to describe buffer space relative to the base virtual address of the NDIS_VAR_DATA_DESC structure itself. In other words, a pointer to a buffer is not explicitly provided by this type; only the offset within the buffer space is provided. Because this descriptor does not use an actual pointer, a user-mode application can allocate a buffer together with its descriptor of this type and provide an offset within this buffer relative to the base virtual address of the descriptor. This allows structures containing these descriptors to be passed between user mode and kernel mode without address mapping. An Offset outside the range sizeof(NDIS_VAR_DATA_DESC)) is invalid.
Queries that return information of type NDIS_VAR_DATA_DESC should zero terminate buffers (that is, set the Offset member of this structure to NULL) and return zero as the buffer size if the requested information is unavailable. For example, if the revision number of the software/firmware in the device is unknown, a wireless WAN miniport should return zero for the Length and NULL for the Offset at SWVersionNum for an OID_WW_GEN_DEVICE_INFO query.
The definition of each OID_WW_GEN_XXX that follows describes the data type at InformationBuffer in the NDIS_REQUEST structure passed in to the MiniportQueryInformation or MiniportSetInformation function.
For this OID, a miniport returns an array of types supported by the driver and its NIC that has any proper subset of the following system-defined values:
NdisWWMobitex
NdisWWPinpoint
NdisWWCDPD
NdisWWArdis
NdisWWDataTAC
NdisWWMetricom
NdisWWGSM
NdisWWCDMA
NdisWWTDMA
NdisWWAMPS
NdisWWInmarsat
NdisWWpACT
NdisWWGeneric
Any miniport that cannot claim full compliance with any particular type from the preceding list should return NdisWWGeneric for this query. Otherwise, the miniport should return a list of the particular type(s) for which it can provide fully compliant support.
Sets and indications are irrelevant for this OID.
As a query, this OID requests MiniportQueryInformation to return the current NDIS_WW_NETWORK_TYPE used by the NIC driver. See OID_WW_GEN_NETWORK_TYPES_SUPPORTED for possible values.
If the underlying miniport can support more than one type of network, a bound protocol should make this OID request to set the network type immediately following its successful call to NdisOpenAdapter and prior to calling NdisRequest with OID_WW_GEN_HEADER_FORMAT_IN_USE. Such a protocol should query the current operating network type prior to setting it. If the device is operating in the correct mode, then no further action is required other than registering for the OID_WW_GEN_INDICATION_REQUEST on return from the OID_WW_GEN_NETWORK_TYPE_IN_USE request.
When a miniport has completed a set operation requested by this OID, the network type has been set for all bound protocols.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the network type changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
For this OID, a miniport returns an array of header formats the NIC driver can support as one or more of the following system-defined values:
NdisWWDIXEthernetFrames
NdisWWMPAKFrames
NdisWWRDLAPFrames
NdisWWMDC4800Frames
DIX Ethernet is the default header format. Every wireless WAN miniport driver must support this format. Any miniport can support additional formats. However, a miniport is likely to support at most one other format that is native to its NIC.
Sets and indications are irrelevant for this OID.
As a query, this OID requests MiniportQueryInformation to return the current NDIS_WW_HEADER_FORMAT it is using. See OID_WW_GEN_HEADER_FORMATS_SUPPORTED for possible values.
As a set, this OID requests MiniportSetInformation to use a particular header format that it returned in response to a preceding OID_WW_GEN_HEADER_FORMATS_SUPPORTED request. If no bound protocol requests a set, the miniport uses DIX-Ethernet framing by default.
If the underlying miniport can support more than one type of header, a bound protocol should make this OID request immediately following its successful call to NdisRequest with OID_WW_GEN_NETWORK_TYPE_IN_USE. A successful set request changes the header format in use for all bound protocols.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the header format changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests MiniportSetInformation to place the specified indication request on the driver’s event queue.
This OID allows bound protocols to register themselves to be notified of changes associated with particular wireless OIDs. Such a protocol passes an NDIS_WW_INDICATION_REQUEST structure to NdisRequest that specifies an OID_WW_GEN_XXX code and, for some OID codes, a trigger value. On return from such an OID_WW_GEN_INDICATION_REQUEST, the current value of the specified OID code will be in the InitialValue member, unless otherwise stated in the definition for the OID_WW_GEN_XXX specified in the Oid member.
The NDIS_WW_INDICATION_REQUEST structure is defined as follows:
typedef struct _NDIS_WW_INDICATION_REQUEST { NDIS_OID Oid; // IN UINT uIndicationFlag // IN UINT uApplicationToken // IN OUT HANDLE hIndicationHandle; // IN OUT INT iPollingInterval; // IN OUT NDIS_VAR_DATA_DESC InitialValue; // IN OUT NDIS_VAR_DATA_DESC OIDIndicationValue // OUT // only valid // after indication NDIS_VAR_DATA_DESC TriggerValue // IN } NDIS_WW_INDICATION_REQUEST
The members of this structure contain the following information:
All other bits in uIndicationFlag are reserved for future use.
If this member is set to -1, the miniport should use its own default settings
to poll the device. Before returning, the miniport must set this member to the
polling interval, in milliseconds, it will use for this indication. This
allows the application to determine if the driver is sampling the OID too
often, to possibly cancel its original request, and to make another request
that the driver poll the NIC at a more appropriate interval.
A protocol can reference the miniport-allocated buffer only during the status
indication of the event. The allocating driver can deallocate this buffer and
release all resources necessary to trigger the event on return from its call
to NdisMIndicateStatus with this event.
The miniport must fill in the InitialValue and iPollingInterval members of the given structure with the state of the driver’s current information. When the given OID has reached the trigger value, the miniport fills in the OIDIndicationValue member of this structure. The initiator of this request cannot access anything in the NDIS_WW_INDICATION_REQUEST structure it allocated until ownership is returned to the protocol, either when this request is returned to its ProtocolRequestComplete function or because the returned status from NdisRequest is something other than NDIS_STATUS_PENDING.
After event notifications for a particular OID have been enabled by this request, a wireless WAN miniport should fill in the appropriate information and call NdisMIndicateStatus with NDIS_STATUS_WW_INDICATION to notify NDIS, which forwards such a notification to interested protocols, according to the following guidelines:
The miniport should post the event when a status change occurs, as described for that OID_WW_GEN_XXX.
After a requested event is posted, the calling application must submit another indication request to receive another NDIS_STATUS_WW_INDICATION event. Due to the asynchronous nature of calls to NdisRequest, a protocol writer should be aware that the requested event could be posted prior to the return of a call to NdisRequest with OID_WW_GEN_INDICATION_REQUEST. The uApplicationToken member can be used to facilitate demultiplexing of each such event.
Any attempt to cancel an OID_WW_GEN_INDICATION_REQUEST that has already occurred can be ignored by the underlying driver.
Many OID_WW_GEN_INDICATION_REQUESTs can be outstanding for a particular OID. Making several calls to NdisRequest with this OID can establish several trigger points. When one of several OID_WW_GEN_INDICATION_REQUESTs causes an event notification, only that trigger is canceled, but all other OID_WW_GEN_INDICATION_REQUESTs remain enabled.
NDIS delivers a miniport’s event indications to every protocol that is bound to that underlying driver serially. Consequently, NIC drivers must copy the contents of the indication request. A NIC driver must fill in the hIndicationHandle value prior to scheduling the request on its internal event queue and returning from the call to MiniportSetInformation. This ensures that bound protocol(s) can detect their own respective event notifications when they occur. Consequently, a miniport should set a value in hIndicationHandle that is unique each time it processes this request, such as a monotonically increasing 32-bit value (transaction ID), to ensure that collisions do not occur. The value for this member can be reset to zero every time the miniport initializes.
When a miniport indicates an event for this OID, it must pass a pointer to its copy of the indication request as the Status parameter when it calls NdisMIndicateStatus. Bound protocol drivers that receive the indication must copy the indicated information into their own internal buffer space, assuming any particular protocol determines that the hIndicationHandle value indicates an event of interest to that protocol.
As a general rule, every protocol should check the hIndicationHandle value when an event notification is made and return control as soon as each protocol’s ProtocolStatus function determines the indicated event is not of interest. Otherwise, the effect of notifying all bound protocols of miniport-indicated events is a degradation in performance for the miniport and for all bound protocols.
Event data is guaranteed to be valid only until a ProtocolStatus function returns control. On return from NdisMIndicateStatus, the indicating miniport can release all context for the specified event.
Queries and indications are irrelevant for this OID.
This OID requests the miniport to return initialization-time information about itself and its NIC.
This request uses a WW_DEVICE_INFO structure, defined as follows:
typedef struct _WW_DEVICE_INFO{ NDIS_VAR_DATA_DESC Manufacturer; // WCHAR buffer NDIS_VAR_DATA_DESC ModelNum; // WCHAR buffer NDIS_VAR_DATA_DESC SWVersionNum; // WCHAR buffer NDIS_VAR_DATA_DESC SerialNum; // WCHAR buffer } WW_DEVICE_INFO;
The members of this structure contain the following information:
Sets and indications are irrelevant for this OID.
As a query, this OID requests the miniport to return information about the NIC’s current power mode.
As a set, this OID requests the miniport to put its NIC into the requested power mode.
In either case, this request uses one of the following values:
Value |
Meaning |
0 |
Normal mode |
1 |
Power-saving mode |
-1 |
Mode unknown |
MiniportSetInformation should return NDIS_STATUS_INVALID_DATA if the given value at InformationBuffer is -1.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the NIC’s power mode changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests the miniport to return information about the NIC’s current lock state as one of the following values:
Value |
Meaning |
0 |
Unlocked |
1 |
Locked |
-1 |
Lock status unknown |
A device cannot not be locked or unlocked with this OID request.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the NIC’s lock status changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
As a query, this OID requests the miniport to return the NIC’s current transmitter status.
As a set, this OID requests the miniport to put its NIC’s transmitter into the requested state.
In either case, this request uses one of the following values:
Value |
Meaning |
0 |
Transmitter enabled |
1 |
Transmitter disabled |
-1 |
Transmitter state unknown |
A typical use of this OID would be to temporarily disable the NIC’s transmitter before entering a construction blasting zone. MiniportSetInformation should return NDIS_STATUS_INVALID_DATA if the value at InformationBuffer for this request is -1.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the NIC’s transmitter state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
As a query, this OID requests the miniport to return the ID of the network with which its NIC is currently configured to communicate.
As a set, this OID requests the miniport to reconfigure its NIC to communicate with the network designated by the given ID.
This request uses a WW_NETWORK_ID structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously. The buffer contains a network-ordered sequence of binary byte values.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the network its NIC communicates with changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests the miniport to return its NIC’s network address in its native format, whatever the header format the driver is currently using.
This request uses a WW_PERMANENT_ADDRESS structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously.The buffer contains a network-ordered sequence of binary byte values.
Sets and indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the address in use by the NIC in the format specified. At initialization, the miniport sets the current address to the value returned for OID_WW_GEN_PERMANENT_ADDRESS.
As a set, this OID requests the miniport to change the current address.
The format of the current address depends on the header format, which must be one of the supported header formats listed with OID_WW_GEN_HEADER_FORMATS_SUPPORTED.
This request uses a WW_CURRENT_ADDRESS structure, defined as follows:
typedef struct _WW_CURRENT_ADDRESS { NDIS_WW_HEADER_FORMAT Format; NDIS_VAR_DATA_DESC Address; } WW_CURRENT_ADDRESS;
The members of this structure contain the following information:
If an incoming set request supplies anything other than an NdisWW..Frames
value or if it supplies any value that the underlying driver does not support,
MiniportSetInformation returns NDIS_STATUS_NOT_SUPPORTED.
If an incoming set request supplies an invalid address specification, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA.
The current address is identical for all protocols bound to the same NIC miniport. A requested change affects all bound protocols.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the current address is changed. If the current address is unknown, the miniport should set the InitialValue for the indication to NULL. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
As a query, this OID requests the miniport to return its current suspension state.
As a set, this OID requests the miniport to change its current suspension state.
In either case, this request uses one of the following values:
Value |
Meaning |
0 |
Driver operational |
1 |
Driver suspended |
When a miniport suspends itself, it should release any hardware resources, such as the serial port, it uses in its operational state. This operation can be initiated in the control panel when an end user wants to reassign the hardware resource for other uses, such as sending AT commands to a serial device on the same serial port that the NDIS driver was using.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the driver’s suspension state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests the miniport to return the ID of the base station or adhoc device last contacted by the NIC.
This request uses a WW_BASESTATION_ID structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously.The buffer contains a network-ordered sequence of binary byte values.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the basestation ID value changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the ID of the channel currently in use.
This request uses a WW_CHANNEL_ID structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously.The buffer contains a network-ordered sequence of binary byte values.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the channel ID value changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the type(s) of encryption supported by the driver and/or the NIC, as one of the following:
As additional NDIS_WW_ENCRYPTION_TYPE values are defined, the miniport should return an array of values indicating the types of encryption supported.
Sets and indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the type of encryption currently in use. See OID_WW_GEN_ENCRYPTION_SUPPORTED for possible values.
As a set, this OID requests the miniport to change the type of encryption in use. The miniport should return NDIS_STATUS_INVALID_DATA if NdisWWUnknownEncryption is specified.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the encryption type changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
As a query, this OID requests the miniport to return FALSE if the currently selected encryption type is disabled.
As a set, this OID requests the miniport to enable or disable encryption. TRUE directs the miniport to enable encryption.
In either case, the miniport should return NDIS_STATUS_NOT_SUPPORTED if it or its NIC does not support encryption.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the encryption state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests the miniport to return information about the quality of the link between its NIC and the network as follows:
Value(s) |
Meaning |
0 |
The wireless NIC is not in contact with the network. |
1-100 |
The driver can communicate with the base station at the given quality for the link, expressed as a normalized value. 100 designates the highest possible quality for the link. If a NIC indicates only whether it is in or out of network contact, its driver should return zero for out of contact and 100 for in contact. |
-1 |
Channel quality is unknown. |
Any bound protocol that simply monitors the in/out state of network contact by an underlying wireless WAN NIC should either call NdisRequest with OID_GEN_MEDIA_CONNECT_STATUS or wait for an NDIS_STATUS_MEDIA_[DIS]CONNECT indication by the miniport.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) according to the TriggerValue that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the current registration state of its NIC on the network as follows:
Value |
Meaning |
0 |
Registration was denied. |
1 |
Registration is pending on the network. |
2 |
Registered on the network. If a particular network does not provide registration information, a miniport should always return this value in response to this OID request. A NIC on such a network is considered to be always in the registered state. |
-1 |
Registration status is unknown. |
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the registration state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the radio link speed in bps. The return value is of type UINT.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return its current estimate of the minimum latency, in milliseconds, for sending a net packet of the maximum size permitted by the network from one end point to the other on the wireless network. The return value is of type UINT.
A miniport can return a constant value for this query. However, a NIC driver that refines its latency estimates dynamically provides useful information to bound protocols that “autotune” themselves.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return the current charge of the battery as follows:
Value |
Meaning |
0-100 |
The charge of the battery as a percentage, where 100 means it is fully charged. |
-1 |
The charge state is unknown. |
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) according to the TriggerValue that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return information about any external power source connected to the NIC as follows:
Value |
Meaning |
0 |
No external power source is connected. |
1 |
External power is connected. |
-1 |
Unknown. |
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the external power connection state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This describes the system-defined OIDs for the following types of wireless networks:
The following chart shows the single Metricom-specific wireless OID.
Q |
S |
Indication |
Name |
M |
M |
OID_WW_MET_FUNCTION |
As a query, this OID requests the miniport return the response to the last latched AT command.
As a set, this OID requests the miniport latch a single AT command to be executed. Such a command always begins with the prefix “AT” or “at.”
This request is generic for executing AT commands through NDIS driver(s). See the Metricom modem reference manual for information about the AT commands and S registers specific to this device. The data described by this structure is always a NUL-terminated ASCII string.
This request uses a WW_MET_FUNCTION structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously.
Although a driver must accept all supported commands, the driver writer determines when each AT command is executed in a manner that avoids conflicts with the NIC’s normal operations.
Indications are irrelevant for this OID.
The following chart summarizes DataTAC-specific wireless OIDs.
Q |
S |
Indication |
Name |
M | |||
M | |||
M | |||
M |
M |
This OID requests the miniport to return a Boolean indicating whether network-level compression is being supported.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return the current configuration of the device.
This OID uses the WW_TAC_SETCONFIG structure, defined as follows:
typedef struct _WW_TAC_SETCONFIG { NDIS_VAR_DATA_DESC RCV_MODE; NDIS_VAR_DATA_DESC TX_CONTROL; NDIS_VAR_DATA_DESC RX_CONTROL; NDIS_VAR_DATA_DESC FLOW_CONTROL; NDIS_VAR_DATA_DESC RESET_CNF; NDIS_VAR_DATA_DESC READ_CNF; } WW_TAC_SETCONFIG;
The members of this structure contain the following information:
Each of these members is of type NDIS_VAR_DATA_DESC, described previously.
Support for this OID depends on the RF modem’s support for the controlling the transmitter, receiver, and flow control.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return configuration and status information about the device.
This OID uses the WW_TAC_GETSTATUS structure, defined as follows:
typedef struct _WW_TAC_GETSTATUS{ BOOLEAN Action; NDIS_VAR_DATA_DESC Command; NDIS_VAR_DATA_DESC Option; NDIS_VAR_DATA_DESC Response; } WW_TAC_GETSTATUS;
The members of this stucture contain the following information:
Several of these members are of type NDIS_VAR_DATA_DESC, described previously.
Protocols or applications might use this OID to request configuration and status information from the RF modem.
Sets and indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the current user header.
As a set, this OID requests the miniport to set the user header.
This request uses a WW_TAC_USERHEADER structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously. At most, the information supplied in this buffer can be 64 bytes in length.The buffer contains a network-ordered sequence of binary byte values.
Indications are irrelevant for this OID.
The following chart summarizes Ardis-specific wireless OIDs.
Q |
S |
Indication |
Name |
M | |||
M | |||
M |
This OID requests the miniport to return information about the SNDCP support it provides.
This OID uses a WW_ARD_SNDCP structure, defined as follows:
typedef struct _WW_ARD_SNDCP{ NDIS_VAR_DATA_DESC Version; INT BlockSize; INT Window; } WW_ARD_SNDCP;
The members of this structure contain the following information:
The Version member is of type NDIS_VAR_DATA_DESC, which was defined previously. The value is a NUL-terminated ASCII string.
The Subnetwork Dependent Convergence Protocol (SNDCP) is ARDIS-defined.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return the current status of the RF channel as a Boolean value, derived from the RF network.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return information about the datagram service on the network.
This request uses a WW_ARD_DATAGRAM structure, defined as follows:
typedef struct _WW_ARD_DATAGRAM{ BOOLEAN LoadLevel; INT SessionTime; NDIS_VAR_DATA_DESC HostAddr; NDIS_VAR_DATA_DESC THostAddr; } WW_ARD_DATAGRAM;
The members of this structure contain the following information:
The HostAddr and THostAddr members are of type NDIS_VAR_DATA_DESC, which was defined previously. The value of each is a network-ordered byte string.
Sets and indications are irrelevant for this OID.
The following chart summarizes CDPD-specific wireless OIDs.
Q |
S |
Indication |
Name |
M |
M | ||
M |
M | ||
M |
M | ||
M |
M | ||
M | |||
M |
M | ||
M |
M | ||
M |
M | ||
M |
M | ||
M |
M | ||
M |
M |
M | |
M |
M | ||
M |
M |
M | |
M |
M | ||
M | |||
M |
M |
This OID requests the miniport either to return or to set up an array of ten Service Provider Network Identifiers and the current operating mode with respect to this array. It allows the device to be configured to ignore SPNI during channel acquisition, to not acquire a channel if the SPNI of the channel is not in the current list, or to prefer a channel that has an SPNI in the list.
This request uses a WW_CDPD_SPNI structure, defined as follows:
typedef struct _WW_CDPD_SPNI { UINT SPNI[10]; INT OperatingMode } WW_CDPD_SPNI;
The members of this structure contain the following information:
Value |
Meaning |
0 |
Ignore SPNI. |
1 |
SPNI from list is required. |
2 |
SPNI from list is preferred. |
3 |
SPNI from list is excluded. |
To ensure that the list of SPNI values is maintained, bound protocols should issue a query with this OID before they issue a set request.
Indications are irrelevant for this OID.
This OID requests the miniport either to return or to set up a set of ten Wide Area Network Identifiers and the current operating mode with respect this array. It allows the device to be configured to ignore WASI during channel acquisition, to not acquire a channel if the WASI of the channel is not in the current list, or to prefer a channel that has a WASI in the list.
This request uses a WW_CDPD_WASI structure, defined as follows:
typedef struct _WW_CDPD_WASI { UINT WASI[10]; INT OperatingMode } WW_CDPD_WASI;
The members of this structure contain the following information:
Value |
Meaning |
0 |
Ignore WASI. |
1 |
WASI from list is required. |
2 |
WASI from list is preferred. |
3 |
WASI from list is excluded. |
To ensure that the list of WASI values is maintained, bound protocols should issue a query with this OID before they issue a set request.
Indications are irrelevant for this OID.
This OID requests the miniport to return the current area color code of the acquired channel. An area color code is an integer of type INT that identifies the Mobile Data Intermediate System to which the user’s base station is connected.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the area color state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the current transmit power charge as a normalized percentage of type UINT.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) according to the TriggerValue that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the unique identifier of the device associated with the subscriber to a network service.
This request uses a WW_CDPD_EID structure, defined as equivalent to the NDIS_VAR_DATA_DESC structure, which was defined previously.The buffer contains a network-ordered sequence of binary byte values.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return the current header compression scheme in use or to set the initial value to be used in negotiating the header compression scheme.
In either case, one of the following designates the header compression scheme:
Value |
Meaning |
0 |
No header compression. |
1 |
Always compress headers. |
2 |
Compress headers if the Mobile Data Intermediate System sends a compressed header. |
-1 |
Unknown. If this value is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA. |
Indications are irrelevant for this OID.
This OID requests the miniport to return the current data compression scheme in use or to set the initial compression scheme to be used in a negotiation.
In either case, one of the following designates the data compression scheme:
Value |
Meaning |
0 |
Data compression disabled. |
1 |
Data compression enabled. |
-1 |
Unknown. If this value is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA. |
Indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the current channel and remaining time from a previously issued set request. MiniportQueryInformation should return NDIS_STATUS_INVALID_DATA if a set request has not yet been issued.
As a set, this OID requests the miniport to set the given channel number and time, in seconds, that the subscriber unit should lock onto.
This OID can be used specifically for testing and analyzing channel characteristics. It is not intended to be used during normal operation of the subscriber unit. The subscriber unit should attempt normal registration on the given channel.
In either case, this request uses a WW_CDPD_CHANNEL_SELECT structure, defined as follows:
typedef struct _WW_CDPD_CHANNEL_SELECT { UINT ChannelID; UINT fixedDuration; } WW_CDPD_CHANNEL_SELECT;
The members of this structure contain the following information:
Indications are irrelevant for this OID.
This OID requests the miniport to return the current state of the subscriber unit’s radio channel activity as one of the following:
CDPDChannelNotAvail
CDPDChannelScanning
CDPDChannelInitAcquired
CDPDChannelAcquired
CDPDChannelSleeping
CDPDChannelWaking
CDPDChannelCSDialing
CDPDChannelCSRedial
CDPDChannelCSAnswering
CDPDChannelCSConnected
CDPDChannelCSSuspended
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the channel state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the current list of NEI addresses or to set up to ten IP or CLNP addresses used for station, multicast, or broadcast operation.
In either case, this request uses a WW_CDPD_NEI structure, defined as follows:
typedef struct _WW_CDPD_NEI { UINT uNeiIndex; WW_CDPD_NEI_FORMAT NeiFormat; WW_CDPD_NEI_TYPE NeiType; UINT NeiGmid; NDIS_VAR_DATA_DESC NeiAddress; } WW_CDPD_NEI;
The members of this structure contain the following information:
CDPDNeiIPv4
CDPDNeiCLNP
CDPDNeiIPv6
CDPDNeiIndividual
CDPDNeiMulticast
CDPDNeiBroadcast
The NeiAddress member is of type NDIS_VAR_DATA_DESC, which was defined previously.The buffer contains a network-ordered sequence of binary byte values.
Indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the current registration state and substate of a given NEI, designated by its index within the NEI array.
As a set, this OID requests the miniport to set the registration state for the given NEI.
In either case, this request uses a WW_CDPD_NEI_REG_STATE structure, defined as follows:
typedef struct _WW_CDPD_NEI_REG_STATE { UINT uNeiIndex; WW_CDPD_NEI_STATE NeiState; WW_CDPD_NEI_SUB_STATE NeiSubState; } WW_CDPD_NEI_REG_STATE;
The members of this structure contain the following information:
CDPDRegistered
CDPDDeregistered
CDPDUnknown
MiniportSetInformation should return NDIS_STATUS_INVALID_DATA if this member
is set to CDPDUnknown.
The value of this member is irrelevant for set operations. Only MiniportQueryInformation functions set values in NeiSubState.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the NeiState value changes for the specified NEI. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID requests the miniport either to return or to set up a set of ten Service Provider Identifiers and the current operating mode with respect to this array. It allows the device to be configured to ignore SPI during channel acquisition, to not acquire a channel if the SPI of the channel is not in the current list, or to prefer a channel that has an SPI in the list.
This request uses an WW_CDPD_SERVICE_PROVIDER_ID structure, defined as follows:
typedef struct _WW_CDPD_SERVICE_PROVIDER_ID { UINT SPI[10]; INT OperatingMode } WW_CDPD_SERVICE_PROVIDER_ID;
The members of this structure contain the following information:
Value |
Meaning |
0 |
Ignore SPI. |
1 |
SPI from list is required. |
2 |
SPI from list is preferred. |
3 |
SPI from list is excluded. |
To ensure that the list of SPI values is maintained, bound protocols should issue a query with this OID before they issue a set request.
Indications are irrelevant for this OID.
As a query, this OID requests the miniport to return the sleep-idle timer interval for its NIC. The value returned is of type INT. Zero indicates CDPD sleep is disabled.
As a set, this OID requests the miniport to negotiate with the network, using the given sleep-idle timer interval for its NIC.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) if the sleep mode changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
This OID can be used to query or to set the following device capabilities:
As a query, this OID requests the miniport to return the current state of the circuit-switched CDPD status and settings.
As a set, this OID requests the miniport to configure the circuit-switched CDPD parameters.
In either case, this request uses a WW_CDPD_CIRCUIT_SWITCHED structure, defined as follows:
typedef struct _WW_CDPD_CIRCUIT_SWITCHED { INT service_preference; INT service_status; INT connect_rate; NDIS_VAR_DATA_DESC dial_code[20]; UINT sid; INT a_b_side_selection; INT AMPS_channel;
UINT action; NDIS_VAR_DATA_DESC default_dial[20]; NDIS_VAR_DATA_DESC call_back[20]; UINT sid_list[10]; UINT inactivity_timer; UINT receive_timer; UINT conn_resp_timer; UINT reconn_resp_timer; UINT disconn_timer; UINT NEI_reg_timer; UINT reconn_retry_timer; UINT link_reset_timer; UINT link_reset_ack_timer; UINT n401_retry_limit; UINT n402_retry_limit; UINT n404_retry_limit; UINT n405_retry_limit; } WW_CDPD_CIRCUIT_SWITCHED;
The members of this structure contain the following information:
Value |
Meaning |
0 |
Always use packet switched CDPD. |
1 |
Always use CS CDPD via AMPS. |
2 |
Always use CS CDPD via PSTN. |
3 |
Use circuit switched via AMPS only when packet switched is unavailable. |
4 |
Use packet switched only when circuit switched via AMPS is unavailable. |
5 or 6 |
Use device-manufacturer-defined service preference. |
-1 |
Unknown. If this value is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA. |
Value |
Meaning |
0 |
Packet-switched CDPD. |
1 |
Circuit-switched CDPD via AMPS. |
2 |
Circuit-switched CDPD via PSTN. |
-1 |
Unknown. If this value is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA. |
Value |
Meaning |
0 |
No AMPS service. |
1 |
AMPS “A” side channels selected. |
2 |
AMPS “B” side channels selected. |
-1 |
Unknown. If this value is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA. |
Value |
Meaning |
0 |
No action |
1 |
Suspend (hang up) |
2 |
Dial |
For all xxx_timer members in the preceding structure, anything in the range from 1 to 65535 seconds is theoretically valid, but see the CS-CDPD documentation for specifics.
The dial_code, default_dial, and call_back members are of type NDIS_VAR_DATA_DESC, which was defined previously. The values are NUL-terminated ASCII strings.
Indications are irrelevant for this OID.
This OID requests the miniport to return the temporary ID assigned by the network to a data-link connection with a particular M-ES. The returned value is of type ULONG, and is used for diagnostic purposes.
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return the current Received Signal Strength Indication in dBm. The returned value is of type UINT.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) according to the TriggerValue that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
The following chart summarizes Pinpoint-specific wireless OIDs.
Q |
S |
Indication |
Name |
M | |||
M | |||
M |
This OID requests the miniport to return information about whether the device has been authorized to perform location fixes on itself as one of the following:
Value |
Meaning |
0 |
Unauthorized |
1 |
Authorized |
-1 |
Unknown |
Sets and indications are irrelevant for this OID.
This OID requests the miniport to return information about the last known location of the mobile radio or NULL if the location is unknown. This request does not initiate a location fix by the device.
This request uses a WW_PIN_LOCATION structure, defined as follows:
typedef struct _WW_PIN_LOCATION{ INT Latitude; INT Longitude; INT Altitude; INT FixTime; INT NetTime; INT LocQuality INT LatReg; INT LongReg; INT GMTOffset } WW_PIN_LOCATION
The members of this structure contain the following information:
Sets and indications are irrelevant for this OID.
This OID requests the miniport to initiate a location fix and to return the information or NULL if it cannot be determined.
This request uses a WW_PIN_LOCATION structure. See OID_WW_PIN_LAST_LOCATION for details.
Sets and indications are irrelevant for this OID.
The following chart summarizes Mobitex-specific wireless OIDs.
Q |
S |
Indication |
Name |
M |
M | ||
M |
M | ||
M |
M | ||
M |
M | ||
M |
M | ||
M |
This OID requests the miniport to log in or log out a personal subscription address (MAN).
This request uses a WW_MBX_PMAN structure, defined as follows:
typedef struct _WW_MBX_PMAN { BOOLEAN ACTION; UINT MAN; UCHAR PASSWORD[8]; } WW_MBX_PMAN;
The members of this structure contain the following information:
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) when a personal MAN is logged in or out on the network. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST. InitialValue should remain NULL. When making an indication, all passwords should be zeroed; they are ignored by all bound protocols.
Queries are irrelevant for this OID.
This OID requests the miniport to return the current flexlist, which is the set of personal MANs currently logged on to the local wireless device.
This request uses a WW_MBX_FLEXLIST structure, defined as follows:
typedef struct _WW_MBX_FLEXLIST; INT count; UINT MAN[7]; } WW_MBX_FLEXLIST;
The members of this structure contain the following information:
During radio modem startup, this information is sent within an MPAK by the radio modem to the PC. The form of the WW_MBX_FLEXLIST structure mirrors the format of the information within the MPAK.
The miniport must track all subsequent log-in and log-out requests for this set of MANs and retain this list so that protocols can query the current list as they bind to the miniport.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) when the flexlist changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the current grouplist, the set of group MANs to which the local wireless device currently belongs.
This request uses a WW_MBX_GROUPLIST structure, defined as follows:
typedef struct _WW_MBX_GROUPLIST { INT count; UINT MAN[15]; } WW_MBX_GROUPLIST;
The members of this structure contain the following information:
This information is sent within an MPAK by the radio modem to the PC whenever the group list changes. The form of the WW_MBX_GROUPLIST structure mirrors the format of the information within the MPAK. The miniport maintains the information in this list so that protocols can query the current list as they bind to the miniport.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) when the group list changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return information about the most recently received traffic-area frame as one of the following:
Value |
Meaning |
in_traffic_area |
Mobile unit has entered a subscribed traffic area. |
in _auth_traffic_area |
Mobile unit is outside traffic area but is authorized. |
unauth_traffic_area |
Mobile unit is outside traffic area and is unauthorized. |
unknown_traffic_area |
The driver has no information about the current traffic area. |
The radio modem sends a traffic area frame to the PC whenever the radio changes traffic area. The miniport should save the current value indicated in such a frame to support this OID.
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) when the traffic area changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to return the current live/die state, denoting whether the wireless device is permitted to send data on the network, as follows:
Value | |
0 |
DIE most recently received, denying device sends |
1 |
LIVE most recently received, permitting device sends |
-1 |
LIVE/DIE state is unknown |
If any bound protocol has enabled indications with OID_WW_GEN_INDICATION_REQUEST, the miniport must call NdisMIndicateStatus to notify such protocol(s) when the live/die state changes. It can ignore the TriggerValue member that was specified in the OID_WW_GEN_INDICATION_REQUEST.
Sets are irrelevant for this OID.
This OID requests the miniport to use the specified temporary default list of radio frequencies for the modem.
This request uses a WW_MBX_TEMPDEFAULTLIST structure, defined as follows:
typedef struct _WW_MBX_TEMPDEFAULTLIST { UINT Length; MBX_CHANNEL_PAIR ChannelPair[]; } WW_MBX_TEMPDEFAULTLIST;
The members of this structure contain the following information:
typedef struct _WW_MBX_CHANNEL_PAIR { UINT Mobile_Tx; // transmit frequency UINT Mobile_Rx; // receive frequency } WW_MBX_CHANNEL_PAIR;
Queries and indications are irrelevant for this OID.