5.9 Wireless Objects

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 OID_WW_GEN_NETWORK_TYPES_SUPPORTED
M M M OID_WW_GEN_NETWORK_TYPE_IN_USE
M OID_WW_GEN_HEADER_FORMATS_SUPPORTED
M M M OID_WW_GEN_HEADER_FORMAT_IN_USE
M OID_WW_GEN_INDICATION_REQUEST
M OID_WW_GEN_DEVICE_INFO
M M M OID_WW_GEN_OPERATION_MODE
M M OID_WW_GEN_LOCK_STATUS
M M M OID_WW_GEN_DISABLE_TRANSMITTER
M M M OID_WW_GEN_NETWORK_ID
M OID_WW_GEN_PERMANENT_ADDRESS
M M M OID_WW_GEN_CURRENT_ADDRESS
M M M OID_WW_GEN_SUSPEND_DRIVER
M M OID_WW_GEN_BASESTATION_ID
M M OID_WW_GEN_CHANNEL_ID
M OID_WW_GEN_ENCRYPTION_SUPPORTED
M M M OID_WW_GEN_ENCRYPTION_IN_USE
M M M OID_WW_GEN_ENCRYPTION_STATE
M M OID_WW_GEN_CHANNEL_QUALITYY
M M OID_WW_GEN_REGISTRATION_STATUS
M OID_WW_GEN_RADIO_LINK_SPEED
M OID_WW_GEN_LATENCY
M M OID_WW_GEN_BATTERY_LEVEL
M M OID_WW_GEN_EXTERNAL_POWER

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.

Wireless Operational Characteristics

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.

NDIS_VAR_DATA_DESC

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.

OID_WW_GEN_NETWORK_TYPES_SUPPORTED

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.

OID_WW_GEN_NETWORK_TYPE_IN_USE

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.

As a set, this OID requests that MiniportSetInformation set the NIC and itself to use the specified NDIS_WW_NETWORK_TYPE value. If a miniport supports only a single type of network, it sets this type as the network default so a bound protocol is unlikely to make this OID request of such a miniport.

NdisWWGeneric should be specified in set requests to underlying drivers that do not claim full compliance with any of the enumerated network types in response to a query.

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.

OID_WW_GEN_HEADER_FORMATS_SUPPORTED

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.

OID_WW_GEN_HEADER_FORMAT_IN_USE

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.

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:

Oid

The OID_WW_GEN_XXX code for which the miniport should indicate events.

uIndicationFlag

Specifies a bitmask in which one of the following flags can be set:

OID_INDICATION_REQUEST_ENABLE

The miniport should call NdisMIndicateStatus if the event specified in this structure occurs.

OID_INDICATION_REQUEST_CANCEL

The miniport should cancel notifications for the specified event. The values supplied in the Oid and hIndicationHandle members must match the values specified in a preceding OID_WW_GEN_INDICATION_REQUEST.

All other bits in uIndicationFlag are reserved for future use.

uApplicationToken

Specifies an application-defined (or protocol-defined) token that is returned by the miniport when it posts the specified event.

hIndicationHandle

Specifies a miniport-determined handle. The application will save this handle and possibly use it to cancel this request subsequently (see uIndicationFlag).

iPollingInterval

Specifies an interval, in milliseconds, at which the miniport should poll the wireless NIC to monitor the value of the given OID.

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.

InitialValue

On input, points to an NDIS_VAR_DATA_DESC-type buffer that can contain information necessary to initialize the requested notification, for instance, as in the case of OID_WW_GEN_CURRENT_ADDRESS. The miniport sets information about the current value of the specified OID in this buffer before returning or completing this request, whichever occurs first.

OIDIndicationValue

On input, specifies NULL. Before the miniport makes the event notification, it allocates an NDIS_VAR_DATA_DESC-type buffer to contain the value of the specified OID, and fills in its copy of the NDIS_WW_INDICATION_REQUEST structure.

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.

TriggerValue

On input, specifies the virtual address of an NDIS_VAR_DATA_DESC-type buffer containing a value the underlying driver uses to decide when to indicate the specified event, or this member can be NULL, depending on the given Oid value. The miniport can ignore this member for OID codes that trigger on a change in status. See the descriptions of individual OID_WW_GEN_XXX for specifics.

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:

·For OID_WW_GEN_XXX codes that use the TriggerValue:

·While InitialValue < TriggerValue, the miniport continues to monitor for the specified condition. It posts such an event when the present value for the OID becomes >= the given TriggerValue.

·If InitialValue = TriggerValue, the miniport fills in remaining information in the given structure and calls NdisMIndicateStatus to post the event immediately.

·If InitialValue > TriggerValue, the miniport should post the event when the present value for the OID becomes <= TriggerValue.

·For OID_WW_GEN_XXX codes that do not use the TriggerValue:

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.

OID_WW_GEN_DEVICE_INFO

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:

Manufacturer

Describes a buffer containing the name of the NIC's manufacturer in displayable Unicode text.

ModelNum

Describes the a buffer containing the manufacturer-assigned model number of the NIC in displayable Unicode text.

SWVersionNum

Describes a buffer containing the manufacturer-assigned version number of the NIC software/firmware in displayable Unicode text.

SerialNum

Describes a buffer containing the manufacturer-assigned serial number of the NIC in displayable Unicode text.

Sets and indications are irrelevant for this OID.

OID_WW_GEN_OPERATION_MODE

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.

OID_WW_GEN_LOCK_STATUS

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.

OID_WW_GEN_DISABLE_TRANSMITTER

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.

OID_WW_GEN_NETWORK_ID

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.

OID_WW_GEN_PERMANENT_ADDRESS

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.

OID_WW_GEN_CURRENT_ADDRESS

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:

Format

Specifies one of the system-defined NdisWW..Frames values, listed with OID_WW_GEN_HEADER_FORMATS_SUPPORTED.

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.

Address

Describes a buffer containing the station address in use by the NIC. The miniport maps this value, which must be compatible with the value of Format, to the address of the NIC in its native format.The buffer contains a network-ordered sequence of binary byte values.

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.

OID_WW_GEN_SUSPEND_DRIVER

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.

OID_WW_GEN_BASESTATION_ID

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.

OID_WW_GEN_CHANNEL_ID

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.

OID_WW_GEN_ENCRYPTION_SUPPORTED

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:

NdisWWUnknownEncryption

The driver cannot determine whether support for encryption is available from its NIC.

NdisWWNoEncryption

No support for encryption is available.

NdisWWDefaultEncryption

The NIC supports encryption but the driver cannot determine what type of encryption it supports.

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.

OID_WW_GEN_ENCRYPTION_IN_USE

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.

OID_WW_GEN_ENCRYPTION_STATE

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.

OID_WW_GEN_CHANNEL_QUALITY

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.

OID_WW_GEN_REGISTRATION_STATUS

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.

OID_WW_GEN_RADIO_LINK_SPEED

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.

OID_WW_GEN_LATENCY

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.

OID_WW_GEN_BATTERY_LEVEL

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.

OID_WW_GEN_EXTERNAL_POWER

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.

Network-Dependent Wireless Objects

This describes the system-defined OIDs for the following types of wireless networks:

·Metricom

·Pinpoint

·CDPD

·Ardis

·DataTAC

·Mobitex

Metricom Wireless

The following chart shows the single Metricom-specific wireless OID.

Q S Indication Name
M M OID_WW_MET_FUNCTION

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.

Datatac Wireless

The following chart summarizes DataTAC-specific wireless OIDs.

Q S Indication Name
M OID_WW_TAC_COMPRESSION
M OID_WW_TAC_SET_CONFIG
M OID_WW_TAC_GET_STATUS
M M OID_WW_TAC_USER_HEADER

OID_WW_TAC_COMPRESSION

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.

OID_WW_TAC_SET_CONFIG

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:

RCV_MODE

Confirmed or unconfirmed receive mode.

TX_CONTROL

Transmitter enabled or disabled.

RX_CONTROL

Radio modem enabled or disabled.

FLOW_CONTROL

Current flow control uses the DTE and DCE.

RESET_CNF

Whether the device is configured to default settings.

READ_CNF

Reserved.

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.

OID_WW_TAC_GET_STATUS

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:

Action

TRUE indicates the command specified in the buffer at Command should be inspected.

Command

Specifies a command in the native-mode interface between the DTE and DCE. See the hardware reference manual for these chips for specifics.

Option

Specifies an option for the given command.

Response

Returns the response to the given command. This buffer is at most 256 bytes in size.

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.

OID_WW_TAC_USER_HEADER

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.

Ardis Wireless

The following chart summarizes Ardis-specific wireless OIDs.

Q S Indication Name
M OID_WW_ARD_SNDCP
M OID_WW_ARD_TMLY_MSG
M OID_WW_ARD_DATAGRAM

OID_WW_ARD_SNDCP

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:

Version

The version of the SNDCP protocol supported.

BlockSize

The block size being used for SNDCP.

Window

The window size being used in SNDCP.

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.

OID_WW_ARD_TMLY_MSG

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.

OID_WW_ARD_DATAGRAM

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:

LoadLevel

The current load-level status.

SessionTime

Datagram session time remaining.

HostAddr

Specifies the host address.

THostAddr

Specifies the test host address.

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.

CDPD Wireless

The following chart summarizes CDPD-specific wireless OIDs.

Q S Indication Name
M M OID_WW_CDPD_SPNI
M M OID_WW_CDPD_WASI
M M OID_WW_CDPD_AREA_COLOR
M M OID_WW_CDPD_TX_POWER_LEVEL
M OID_WW_CDPD_EID
M M OID_WW_CDPD_HEADER_COMPRESSION
M M OID_WW_CDPD_DATA_COMPRESSION
M M OID_WW_CDPD_CHANNEL_SELECT
M M OID_WW_CDPD_CHANNEL_STATE
M M OID_WW_CDPD_NEI
M M M OID_WW_CDPD_NEI_STATE
M M OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER
M M M OID_WW_CDPD_SLEEP_MODE
M M OID_WW_CDPD_CIRCUIT_SWITCHED
M OID_WW_CDPD_TEI
M M OID_WW_CDPD_RSSI

OID_WW_CDPD_SPNI

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:

SPNI

Specifies an array of ten UINT values, each a service provider network identifier.

OperatingMode

Specifies how the driver handles SPNI as one of the following values:

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.

OID_WW_CDPD_WASI

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:

WASI

Specifies an array of ten UINT values, each a wide-area network identifier.

OperatingMode

Specifies how the driver handles WASI as one of the following values:

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.

OID_WW_CDPD_AREA_COLOR

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.

OID_WW_CDPD_TX_POWER_LEVEL

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.

OID_WW_CDPD_EID

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.

OID_WW_CDPD_HEADER_COMPRESSION

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.

OID_WW_CDPD_DATA_COMPRESSION

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.

OID_WW_CDPD_CHANNEL_SELECT

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:

ChannelID

Specifies the channel number.

fixedDuration

Specifies the connection time, in seconds.

Indications are irrelevant for this OID.

OID_WW_CDPD_CHANNEL_STATE

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.

OID_WW_CDPD_NEI

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:

uNeiIndex

Specifies the index of this NEI, as a value from zero to nine.

NeiFormat

Specifies the format of this NEI as one of the following:

CDPDNeiIPv4
CDPDNeiCLNP
CDPDNeiIPv6

NeiType

Specifies the address type of this NEI as one of the following:

CDPDNeiIndividual
CDPDNeiMulticast
CDPDNeiBroadcast

NeiGmid

Specifies the group member identifier if NeiType is CDPDNeiMulticast. Otherwise, this member is meaningless.

NeiAddress

Specifies the NEI address in conformance with the preceding members.

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.

OID_WW_CDPD_NEI_STATE

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:

uNeiIndex

Specifies a value in the range zero through nine that is the index to the NEI within the current array of ten NEIs.

NeiState

Specifies the registration state of the given NEI as one of the following:

CDPDRegistered
CDPDDeregistered
CDPDUnknown

MiniportSetInformation should return NDIS_STATUS_INVALID_DATA if this member is set to CDPDUnknown.

NeiSubState

Specifies the current registration substate of the currently unregistered NEI as one of the following.

·CDPDPending if registration of the NEI is still pending.

·CDPDNoReason if registration of the NEI was denied categorically.

·CDPDMDISNotCapable if MD-IS was incapable of handling M-ES and denied registration of the NEI.

·CDPDNEINotAuthorized if registration of the NEI was denied due to lack of any authorization.

·CDPDInsufficientAuth if registration of the NEI was denied because M-ES gave insufficient authentication credentials.

·CDPDUnsupportedAuth if registration of the NEI was denied because M-ES gave unsupported authentication credentials.

·CDPDUsageExceeded if registration of the NEI was denied because it exceeded usage limitations.

·CDPDDeniedThisNetwork if registration of the NEI on this network was denied. (Possibly, the NEI can be registered with another service provider network.)

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.

OID_WW_CDPD_SERVICE_PROVIDER_IDENTIFIER

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:

SPI

Specifies an array of ten UINT values, each a service provider identifier.

OperatingMode

Specifies how the driver handles SPNI as one of the following values:

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.

OID_WW_CDPD_SLEEP_MODE

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.

OID_WW_CDPD_CIRCUIT_SWITCHED

This OID can be used to query or to set the following device capabilities:

·Circuit-switched CDPD service connection and channel information

·Default CDPD service preference and parameters for use in circuit-switched CDPD mode

·Control of circuit-switched CDPD operation

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:

service_preference

Specifies one of the following:

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.

service_status

Specifies one of the following:

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.

connect_rate

Specifies the circuit-switched connection rate in bits per second. Zero designates no active connection, and -1 indicates the rate is unknown. If -1 is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA.

dial_code

Specifies the dial code last used to dial.

sid

Specifies the current AMPS system ID.

a_b_side_selection

Specifies one of the following:

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.

AMPS_channel

Specifies the AMPS channel in use as a value in the range 1 to 1023. Zero indicates no AMPS service, and -1 indicates the channel or state of AMPS service is unknown. If -1 is specified for a set, MiniportSetInformation returns NDIS_STATUS_INVALID_DATA.

action

Specifies one of the following:

Value Meaning
0 No action
1 Suspend (hang up)
2 Dial

default_dial

Specifies the default dial code for circuit-switched CDPD service, encoded as defined for CDPD.

call_back

Specifies the number to be used by the circuit-switched CDPD network to call back the mobile unit, encoded as defined for CDPD.

sid_list

Specifies a set of ten 16-bit preferred AMPS system IDs for circuit-switched CDPD.

inactivity_timer

Specifies the time-out limit, in seconds, for inactivity before dropping the call.

receive_timer

Specifies the time-out limit, in seconds, to wait for a receive.

conn_resp_timer

Specifies the time-out limit, in seconds, to wait for a connection response.

reconn_resp_timer

Specifies the time-out limit, in seconds, to wait for a reconnection response.

disconn_timer

Specifies the time-out limit, in seconds, to wait for a disconnection.

NEI_reg_timer

Specifies the time-out limit, in seconds, to wait for an NEI registration.

reconn_retry_timer

Specifies the time-out limit, in seconds, for retrying a reconnection.

link_reset_timer

Specifies the time-out limit, in seconds, for resetting a link.

link_reset_ack_timer

Specifies the time-out limit, in seconds, for receiving a link-reset acknowledgment.

n401_retry_limit

As defined for circuit-switched CSPD.

n402_retry_limit

As defined for circuit-switched CSPD.

n404_retry_limit

As defined for circuit-switched CSPD.

n405_retry_limit

As defined for circuit-switched CSPD.

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.

OID_WW_CDPD_TEI

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.

OID_WW_CDPD_RSSI

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.

Pinpoint Wireless

The following chart summarizes Pinpoint-specific wireless OIDs.

Q S Indication Name
M OID_WW_PIN_LOC_AUTHORIZE
M OID_WW_PIN_LAST_LOCATION
M OID_WW_PIN_LOC_FIX

OID_WW_PIN_LOC_AUTHORIZE

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.

OID_WW_PIN_LAST_LOCATION

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:

Latitude

Specifies the latitude in hundredths of a second.

Longitude

Specifies the longitude in hundredths of a second.

Altitude

Specifies the altitude in feet.

FixTime

Specifies the local time of the last location fix since midnight of the current day, in tenths of a second.

NetTime

Specifies the local network time since midnight of the current day, in tenths of a second.

LocQuality

Specifies the location quality as a value from 0 to 100, with 100 indicating the highest quality.

LatReg

Specifies the latitude registration offset, in hundredths of a second.

LongReg

Specifies the longitude registration offset, in hundredths of a second.

GMTOffset

Specifies the offset, in minutes, of the local time zone from GMT.

Sets and indications are irrelevant for this OID.

OID_WW_PIN_LOC_FIX

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.

Mobitex Wireless

The following chart summarizes Mobitex-specific wireless OIDs.

Q S Indication Name
M M OID_WW_MBX_SUBADDR
M M OID_WW_MBX_FLEXLIST
M M OID_WW_MBX_GROUPLIST
M M OID_WW_MBX_TRAFFIC_AREA
M M OID_WW_MBX_LIVE_DIE
M OID_WW_MBX_TEMP_DEFAULTLIST

OID_WW_MBX_SUBADDR

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:

ACTION

Specifies 0 if the driver should log in the given PMAN, or 1 if it should log out the given PMAN.

MAN

Specifies the personal network address of the subscriber to be logged in or out.

PASSWORD

Specifies a password of up to eight characters for a log-in or NULL for a log-out operation.

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.

OID_WW_MBX_FLEXLIST

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:

count

Specifies the number of MAN entries in the flexlist. Specifies zero if the flexlist is empty with all elements of MAN set to zero, as well. Otherwise, count is set to -1 if the number is unknown.

MAN

Specifies up to seven personal MAN addresses.

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.

OID_WW_MBX_GROUPLIST

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:

count

Specifies the number of MAN entries in the current group list. Specifies zero if the group list is empty with all elements of MAN set to zero, as well. Otherwise, count is set to -1 if the number is unknown.

MAN

Specifies up to 15 MAN addresses.

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.

OID_WW_MBX_TRAFFIC_AREA

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.

OID_WW_MBX_LIVE_DIE

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.

OID_WW_MBX_TEMP_DEFAULTLIST

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:

Length

Specifies the number of elements in the ChannelPair array.

ChannelPair

Specifies an array of elements defined as follows:

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.