Wireless communication provides significant flexibility to computer users. By communicating wirelessly, computer users may simply create a network or may have network connectivity as they move their computers from place to place. As a result, the number of computers with hardware to support wireless communication has significantly increased. In many instances, the hardware supports communication according to the Wi-Fi standard.
Many computers are configured with a software framework that supports Wi-Fi communication. The framework provides user interfaces and performs other functions associated with controlling or providing status associated with Wi-Fi communications. For example, the framework may collect information about Wi-Fi networks operating in the vicinity of the computer and present a user interface that allows a user to select a network to which the computer will connect.
Protocols for wireless communications, other than Wi-Fi, are known. One example of such a protocol is WiMAX, and wireless network cards that allow computers to communicate according to the WiMAX standard are commercially available. Driver software, which controls a network card, may be supplied with these cards. However, many computers do not contain software designed to interface with WiMAX drivers. Rather, software within the computer interacts with the driver software associated with these cards as if it were driver software for a traditional Ethernet network interface card. Thus, even a computer not specifically constructed to support WiMAX communication can communicate according to this standard.
To improve a user experience associated with use of a new wireless technology, particularly on a computer containing software not specifically configured to support the new wireless technology, an emulator is provided so that components of the computer designed to support communication using a first wireless technology may be used with a second wireless technology. As a result, user interfaces, and other components that generate or receive status or control information associated with the first wireless technology may perform comparable functions when the second wireless technology is in use.
Operation of the emulator may be different for different commands. Some commands that either control or request status from a network card may be compatible with network cards operating according to either the first or second wireless technologies. The emulator may transfer these commands without significant change. In other instances, wireless network cards operating according to both the first and second wireless technologies may perform analogous functions but perform the function in response to commands of different formats. In these instances, the emulator may map a command and/or parameters associated with a command from a form suitable for one of the wireless technologies to a form suitable for the other. In yet other circumstances, wireless communication according to the second technology may involve functions not supported by the framework. Such functions may be supported by extensibility components and the emulator may identify and route commands to the extensibility components.
The foregoing is a non-limiting summary of the invention, which is defined by the attached claims.
The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
The inventors have appreciated that an experience for a user of a computer communicating according to a wireless technology could be improved when the computer is not designed to support communication according to that wireless technology. By adapting a framework developed for a first wireless technology for use in support of a second wireless technology, status and control information presented to the user will be more meaningful than in accordance with the prior art in which unsupported wireless network types were emulated as basic wired networks.
With this framework, tools or services that provide a desirable user experience for wireless communication may be made available to the user, even though not specifically developed for the second wireless technology. In addition, by using extensibility features of the framework, functions associated with the second wireless technology for which there is no analog in the tools and services of the framework can be implemented through extensibility components.
For example, a wireless networking service that reports network location that was developed for the first wireless technology may function as intended even if the computer is connected to a network implemented with the second wireless technology. Similarly, wireless security components developed for the first wireless technology may be used for communication in accordance with the second wireless technology. Though, if the second wireless technology uses a security protocol not supported by the framework, operation according to that security protocol may be provided through an extensibility component.
As another example, network information for wireless networks according to either the first or second wireless technology may be presented in a consistent fashion. Networks communicating according to both the first and second wireless technologies may appear in a single list of available wireless networks. User interface components, such as those that report to the user that a wireless network is available or in range may also be used. As a further example, tools that provide statistics or other information meaningful for wireless communication may also be available for communications according to the second wireless technology.
As a specific example, such a framework could be used to allow a computer containing tools and services designed to support Wi-Fi communications to support WiMAX communications.
In some embodiments, an Independent Hardware Vendor (IHV) may provide a wireless network card, including driver software, that supports communication in accordance with the second protocol. To enable the IHV to provide functionality in addition to that provided in an operating system to support communication according to the first wireless protocol, the IHV or an Independent Software Vendor (ISV) may provide an extensibility component that can be accessed through an extensibility point of the framework. Through this extensibility point, a driver for the wireless network card may interact with additional software components provided separate from the framework to provide functions in connection with communications using the second wireless technology.
In the embodiment illustrated, computer 110 may be connected to network 120 through a wired connection 124. Such a connection may be made using a network interface card within computer 110 that is configured to receive a cable connected to a router (not shown) or other access control device associated with network 120. Communications over wired connection 124 may be in accordance with the Ethernet protocol or any other suitable protocol.
Alternatively or additionally, computer 110 may be configured with a wireless network interface card, allowing computer 110 to access a network, such as network 120, using a wireless technology. In the example illustrated, wireless access to network 120 is provided through access point 122. To establish a wireless connection, access point 122 communicates according to the same wireless technology as the wireless network interface card installed within computer 110.
In this example, access point 122 may communicate according to the WiMAX standard. Likewise, a network interface card within computer 110 may configured to communicate according to WiMAX. However, in the embodiment illustrated computer 110 has an operating system that does not contain components constructed to support WiMAX communication. Rather, computer 110 includes a framework to support Wi-Fi wireless communications.
In accordance with the prior art, computer 110 could be configured to emulate wireless communications using components used for basic wired communication over wired connection 124. However, a more desirable user experience may be provided to user 112 by configuring computer 110 to implement a wireless connection to access point 122 using the framework provided within the operating system of computer 110 for Wi-Fi communication.
Regardless of a specific implementation of the components,
Regardless of how Wi-Fi card 214 is implemented, an interface to Wi-Fi card 214 is provided by Wi-Fi miniport driver 236. Wi-Fi miniport driver 236 may be a software component implemented as is known in the art. Driver 236 may receive commands specifying either the configuration or operations to be performed by Wi-Fi card 214. In response, Wi-Fi miniport driver 236 will generate the appropriate control signals to the underlying hardware of Wi-Fi card 214. Wi-Fi miniport driver 236 also may receive status information from Wi-Fi card 214. The status information may relate to Wi-Fi card 214 or operating conditions experienced by Wi-Fi card 214. Additionally, Wi-Fi miniport driver 236 may receive data for transmission. In response, Wi-Fi miniport driver 236 will provide the data to Wi-Fi card 214 in a format for transmission according to the Wi-Fi standard. Conversely, Wi-Fi miniport driver 236 may obtain from Wi-Fi card 214 data that has been received wirelessly.
Wi-Fi miniport driver 236 contains an interface or interfaces through which commands and status information as well as data for transmission or reception may be passed. The interface allows Wi-Fi miniport driver 236 to interact with other components in computer 110. In the embodiment illustrated, Wi-Fi miniport driver 236 includes a standardized driver interface. As a specific example, Wi-Fi miniport driver 236 may be configured to communicate according to the NDIS standard, illustrated in
In the example of
Regardless of the specific partitioning of the driver or drivers for Wi-Fi card 214, the NDIS interface associated with the drivers allows other components, such as TCP/IP stack 240, to interface with the drivers for sending or receiving commands and status information and data received or to be transmitted wirelessly. TCP/IP stack 240 may be a component as is known in the art or may be implemented in any suitable way. In this example, TCP/IP stack 240 provides an interface to application components (not shown) for network communications. As an example, a driver associated with Wi-Fi card 214 may provide to TCP/IP stack 240 data received wirelessly by Wi-Fi card 214. TCP/IP stack 240 may then route this data to an appropriate application component operating within computer 110. It should be appreciated that
Computer 110 may contain other components to perform control or status functions related to Wi-Fi communications. One such component is auto-configuration service 262. Auto-configuration service 262 provides a mechanism by which a network interface card and associated driver may be configured for wireless communication and status information may be routed to other components as is known in the art. In this example, auto-configuration service 262 may be implemented as a software component supporting client/server interfaces with other software components. However, the specific form in which auto-configuration service 262 interfaces with other components is not critical to the invention and any suitable types of interface may be used.
In the example illustrated, auto-configuration service 262 includes a Wireless Local Area Network (WLAN) auto-configuration service module 264. WLAN auto-configuration service module 264 may contain code that performs functions of auto-configuration service 262 that are not unique to Wi-Fi communications. In the example illustrated, functions unique to Wi-Fi may be implemented in native Wi-Fi module 266, and other functions may be performed within WLAN auto-configuration service module 262. Partitioning functionality between WLAN auto-configuration service module 264 and native Wi-Fi module 266 allows auto-configuration service 262 to be configured specifically for Wi-Fi communications. However, any suitable partitioning of functions may be used.
Auto-configuration service 262 may obtain from other components information for configuring Wi-Fi card 214 and its associated drivers. Some of the information used by auto-configuration service 262 may come from profile store 270. Profile store 270 may contain information, or “profiles,” relating to wireless networks to which computer 110 may connect. Auto-configuration service 262 may write information into profile store defining an appropriate configuration of Wi-Fi card 214 and its associated drivers upon making connection to a network. Subsequently, auto-configuration service 262 may retrieve this information and use it to reconfigure Wi-Fi card 214 and its associated drivers to reconnect to that network. In addition, user supplied information, including user preferences about networks to which computer 110 is permitted to connect, an order of preference of networks to which computer 110 should attempt to connect or other information may also be written to profile store and later used in operation of auto-configuration service 262.
Profile store 270 may be implemented in any suitable way, including as a file or other data structure written to a disk or other non-volatile storage medium within computer 110.
Auto-configuration service 262 may also store information into logs 272. Logs 272 also may be implemented as files or other data structures written to a disk or other suitable storage medium associated with computer 110. The information written to logs 272 may define events associated with wireless communications. This information may later be used by other tools or components that analyze events associate with wireless communications, such as diagnostic applications that help a user resolve problems with wireless communications.
Other information used by auto-configuration service 262 may be obtained from other program components through WLAN APIs 274. WLAN APIs 274 may be implemented using conventional software technology for providing interfaces between components. However, the structure of APIs 274 is not critical to the invention and WLAN APIs 274 may be implemented in any suitable way.
Information passed through WLAN APIs 274 may be generated based on user input received by user interface components 276. Conversely, status information obtained by auto-configuration service 262 may be passed through WLAN APIs 274 to user interface components 276 for display to a user. Each of the user interface components may be implemented with computer executable instructions that provide information to a user and receive commands from a user through one or more input/output devices. Such information may be presented graphically on a computer screen, though any suitable form of user input/output device may be used.
Any suitable number and type of user interface components may be provided. In the example illustrated in
Other components within user interface components 276 may provide user interfaces to support other functions. For example, interface component 2783 may provide an interface through which a user may view all available networks and choose which ones to connect to (and subsequently disconnect from).
User interface component 2782 may likewise provide an interface through which a user may configure parameters of a wireless network or obtain status information. In this example, user interface component 2782 may provide a wider range of information about a wireless network than interface component 2783. Likewise, component 2782 may provide a wider range of choices for parameters that may be configured by a user. Such an interface may be tailored for an “advanced user.” However, the specific function of each of the interface components is not critical to the invention, and the functions supported through the interfaces collectively defined by user interface components 276 may be allocated to specific user interface components in any suitable way.
WLAN APIs 274 may also support exchanges of information between auto-configuration service 262 and other types of components. In the example of
Computer 110 may additionally contain other tools or services for use in connection with wireless communication that ultimately involves transmission or reception of radio frequency signals at Wi-Fi card 214. As a further example, computer 110 may contain a network location awareness component 284. Such a component may, in response to a request from other software components, provide information defining the characteristics of a network to which computer 110 is connected. Network location awareness component 284 may be implemented as is known in the art or in any other suitable way. To facilitate providing information when computer 110 is connected to a Wi-Fi network, Wi-Fi plug-in 286 may execute within network location awareness component 284. Wi-Fi plug-in 286 may contain computer executable instructions that obtain status information from any one or more of the components illustrated in
Other components within computer 110 may likewise interact to support Wi-Fi communications. For example,
Other functions of auto-configuration service 262 are also illustrated in
In the example of
In some instances, security functions to be performed by a wireless computer may incorporate elements of an extensible protocol, referred to as EAP. Accordingly, computer 110 may include an EAP host 296. EAP host 296 may support one or more EAP modules, illustrated as modules 2981, 2982 and 2983. Each of the EAP modules may support one or more security related functions. By providing EAP host 296, specific modules may be added or removed from computer 110 to support any suitable security functions, even if not implemented according to a defined standard. 802.1x module 294 may interface with EAP host 296 to access any of the installed EAP modules, thereby extending security functions performed by 802.1x module 294.
However, the inventors have appreciated that interfacing to a WiMAX network as if it were a basic, wired network does not provide aspects of a user experience that many users would like. Interfacing to a network in this fashion may in some instances be confusing to the user. Specifically, the inventors have recognized that many user interaction components that users have come to expect in connection with Wi-Fi networks are unavailable with or do not operate as expected WiMAX networks. As a result, the user experience of the WiMAX network is degraded.
As shown, WiMAX card 212 may be added in hardware mode 210. A WiMAX miniport driver 232 may be provide for WiMAX card 212. WiMAX miniport driver 232 may be specifically configured to interface with hardware components on WiMAX card 212. As with Wi-Fi miniport driver 236, WiMAX driver 232 may apply commands or obtain status information from WiMAX card 212.
Like Wi-Fi miniport driver 235, WiMAX miniport driver 232 may be implemented with a standard interface to allow it to interface with components of computer 110. In the example illustrated, WiMAX driver 232 is implemented with an NDIS interface. Such an interface may be similar to the NDIS interface supported by Wi-Fi miniport driver 236. However, the specific OIDs that may be passed through the NDIS interface of WiMAX miniport driver 232 may be different, in at least some respects, than the OIDs passed through the NDIS interface of Wi-Fi miniport driver 236. The different OIDs may reflect differences in the functionality supported by WiMAX card 212 as opposed to the functionality supported by Wi-Fi card 214.
In the embodiment illustrated, computer 110 does not contain tools or services to generate OIDs specific to WiMAX card 212. Rather, a Wi-Fi emulator 234 is installed between WiMAX miniport driver 232 and native Wi-Fi filter driver 238. Wi-Fi emulator converts between OIDs generated for Wi-Fi and those usable for WiMAX.
Wi-Fi emulator 234 may be constructed to be readily incorporated into an existing Wi-Fi framework. It provides, at one end, an interface of the same form presented by Wi-Fi miniport driver 236 so that it may easily interface to filter driver 238. At the other end, Wi-Fi emulator 234 presents an interface in the form supported by WiMAX miniport driver 232. In the example illustrated, both drivers support the same form of interface, accordingly, both interfaces provided by Wi-Fi emulator 234 are of the same form. In the specific example of
In between the two interfaces, Wi-Fi emulator 234 translates command or status objects provided by native Wi-Fi filter driver 238 into a format that is meaningful to WiMAX miniport driver 232. Conversely, Wi-Fi emulator 234 converts command or status objects generated by WiMAX miniport driver 232 into a format that is meaningful to native Wi-Fi filter driver 238. Wi-Fi emulator 234 may make such translations based on a mapping of command objects supported by Wi-Fi miniport driver 236 to those supported WiMAX miniport driver 232.
In this way, tools and services provided to support Wi-Fi networks may operate in connection with a WiMAX network. For example, a WiMAX network may appear on a list of available wireless networks presented by user interface component 2781 because, through the use of Wi-Fi emulator 234, a WiMAX interface will respond appropriately to a request for status information even though the request was generated by a component of the Wi-Fi framework. A user could access such a user interface to specify a preference for a WiMAX network, in the same way that the user could specify a preference for a Wi-Fi network.
In the same way, network location awareness component 284, based on information provided by Wi-Fi emulator 234, provide information in a form that indicates that computer 110 is connected to a wireless network and may also provide information that identifies the network type. Similarly, group policy information may be specified for WiMAX networks. Other functions implemented for Wi-Fi networks may similarly be implemented based on interactions through Wi-Fi emulator 234.
However, it is possible that some functions that may be desirable to perform in connection with operation of a WiMAX network cannot be performed by components of a Wi-Fi framework. In this scenario, extensible features of the Wi-Fi framework may be used to implement those functions. The extensibility features allow third party supplied software components to be integrated into the framework. The extensibility components may be provided by an Independent Hardware Vendor (IHV) supplying WiMAX card 212 or an Independent Software Vendor (ISV) supplying software independent of an operating system on computer 110 that supplies the Wi-Fi framework illustrated in
In the example embodiment of
Commands and other information may be exchanged between user interface component 2784 and WiMAX miniport driver 232 in any suitable way. In the example illustrated, user interface component 2784, in response to user input, generates one or more commands containing identifiers unique to WiMAX communication. These commands may be passed through WLAN APIs 274, auto-configuration service 262 and Wi-Fi filter driver 238 to Wi-Fi emulator 234. Wi-Fi emulator 234 may be constructed to recognize the OIDs generated by the Wi-Fi filter driver on behalf of the user interface component 2784 as OIDs unique to WiMAX communication and pass those OIDs to WiMAX miniport driver 232 without modification. Because the OIDs are in form meaningful for WiMAX communication, WiMAX miniport driver 232 may be programmed to appropriately respond to those OIDs.
In reverse, WiMAX miniport driver 232 may generate notifications associated with functions performed by extensibility components, such as user interface component 2784. Wi-Fi emulator 234 may pass those notifications on without modification. Such notifications may pass through Wi-Fi filter driver 238, auto-configuration service 262 and WLAN APIs 274 to user interface component 2784, where they may be appropriately processed. In this way, extensibility components may be added to the Wi-Fi framework of computer 110 to support any desired function that is not otherwise supported in the framework.
The types of components added as extensibility components need not be limited to user interface components.
In the example illustrated, DLL 290 provides a mechanism to interface with other extensibility components. In this example, service DLL 290 is shown interfacing with PKMv2 security provider component 292. Because WiMAX communications use PKMv2 security rather than 802.1x, PKMv2 security provider component 292 is added to perform functions similar to those performed by 802.1x component 294, but using a different security protocol which is appropriate for WiMAX communication. As with component 294, component 292 may interface with EAP host 296. However, the specific EAP modules, such as modules 2981, 2982 and 2983, may be selected specifically for use by PKMv2 security provider component 292.
Though not expressly shown, other components may interface through service DLL 290, allowing computer 110 to be configured for WiMAX communication or communication using any other wireless technology.
The process proceeds to decision block 312. At decision block 312, the process branches depending on whether the received OID is associated with a function supported by WiMAX miniport driver 232 and/or WiMAX card 212. If the function is not supported, Wi-Fi emulator 234 may be unable to generate commands for the WiMAX network interface, provided by WiMAX miniport driver 232 and WiMAX card 212, to perform the function. Accordingly, the process may branch to block 314, where the OID is either ignored or fails. Depending on the interface standards used to communicate with Wi-Fi emulator 234, Wi-Fi emulator 234 may generate a response indicating that the command associated with the received OID fails. Though, in other embodiments or for other OIDs, if the interface does not support such a response, Wi-Fi emulator 234 may simply ignore the received OID and the process may end.
Conversely, if the received OID can be associated with a supported function, the process may branch from decision block 312 to decision block 316. At decision block 316 the process may again branch depending on whether the OID is directly supported by WiMAX miniport driver 232 or requires translation. If no translation is required, the process branches from decision block 316 to block 330, where the OID is provided to WiMAX miniport driver 232. WiMAX miniport driver 232 may thereafter respond appropriately to the OID.
Conversely, the process of
The mapping performed at blocks 320 and 322 may be performed in any suitable way. In accordance with one example embodiment, the mapping may be performed by maintaining tables of analogous functions. The tables may map OIDs that specify functions in connection with Wi-Fi communication to OIDs that specify analogous functions in connection with WiMAX communications.
In the example of
The specific implementation of a data structure used in mapping OIDs is not critical to the invention. However, in the example embodiment of
In the simple example of
In the example shown, the first row of table 411 contains fields 412A and 414A1. Field 412A contains a value representing an OID type. Each OID will have a different type, allowing components processing the OID to associate a specific function or type of status information with the OID. The type may be represented in any suitable way, including as a text string, a binary value or other unique identifier. The identified parameters may be values provided to a driver in connection with the OID or returned by the driver after processing the OID.
For example, the first row illustrated in table 411 contains information in field 412A identifying the OID as a command to get a network identification. When such an OID is applied to a Wi-Fi driver, the driver returns the network SSID, as indicated in field 414A1. Similarly, field 412B identifies an OID commanding the driver to initialize a network interface card. In response, the driver returns a value representing a mode in which the network interface card is operating, as represented by the value in field 414B1.
The third row contains OIDs for which the associated parameters are provided to the driver. For example, field 412C contains a value indicating that the OID represented by that row is a command to set the transmit power level used by the network interface card. The associated parameter in field 414C1 identifies the level at which the power should be set. Similarly, field 412D identifies the OID represented by that row as a command to the network interface card to set a network type.
The associated parameter in field 414D1 identifies the type of network for which the network interface card is to be set. In this example, the type is “ad hoc” indicating that the network interface card should be set for communicating with an ad hoc network. The OIDs represented in the last two rows of table 411 similarly contain parameters provided to the driver for the network interface card for use in carrying out a specified command. In this example, field 412E identifies a command to set the data rate used by the network interface card and the associated parameter in field 414E1 indicates the rate that the card should be configured to use for communication. Similarly, field 412F identifies a command for the driver to enable authentication. The associated parameter in field 414F1 identifies an algorithm to be used in performing that authentication.
Table 451 provides information on WiMAX OIDs. Table 451 is here shown implemented in computer readable media 450. Computer readable media 450 may be the same structure as computer readable media 410 or may be implemented in any other suitable way.
Table 451, like table 411, contains multiple rows, each providing information about an OID. Correspondence between rows in table 451 and rows in table 411 is one mechanism by which a mapping between Wi-Fi OIDs and WiMAX OIDs may be specified. For example, the OID defined in the first row of table 411 may map to the OID defined in the first row of table 451, and vice versa. The OID defined in the second row of table 411 may map to the OID defined in the second row of table 451 and vice versa. The correspondence may continue for each of the other rows in the tables.
Any suitable form of mapping may be defined between each Wi-Fi OID and each WiMAX OID. The mapping may be one-to-one, one-to-many, many-to-one or for some OIDS, there may be no associated OID specified in the mapping. In addition, any or all of the elements of an OID may be the same or different than elements of an associated OID. For example, a WiMAX OID may have the same OID type identifier as an associated Wi-Fi OID. Though, in other instances, an OID may be mapped to an associated OID with a different OID type identifier. Similarly, each OID may be mapped to an associated OID with the same number and type of parameters. Though, in some instances, an OID will be mapped to an associated OID with a different number or type of parameters.
In the example of
Though, the mapping indicated in
The second row in table 411 contains a value in field 412B indicating an “initialize network interface” command. In table 411, that command is associated with a parameter with a value in field 414B1 that indicates an operating mode for which the network interface card should be configured when initialized. That command may be mapped to a WiMAX “initialize network interface card” command, as indicated by field 452B. In this example, the WiMAX network interface card supports only one mode of operation, the extensible mode. Accordingly, table 451 indicates that the “initialize network interface card” command in table 411 is mapped to an “initialize network interface card” command in table 451 in which the parameter is set to extensible mode, as indicated by the value in 454B1. In this case, a Wi-Fi OID maps to a WiMAX OID of the same type but with different parameters.
The command defined in the third row of table 411 provides an example of a Wi-Fi command that may be mapped to a WiMAX command with the same OID type identifier and parameters. In this case, the values in fields 452C and 454C1 may be the same as the values fields 412C and 414C1.
The fourth row of tables 411 and 451 indicate a scenario in which there is no corresponding WiMAX command for a Wi-Fi command. In this case, the value in field 412D indicates a “set network type” command. The value in field 414D1 is a parameter for that command, indicating that the network interface card should be set to “ad hoc mode.” As indicated in row 460 of table 451, the WiMAX network interface card cannot perform a corresponding function because it does not support ad hoc networks. Accordingly, the value in field 460 indicates that if such a command is provided to emulator 234, it will return a value indicating that the command failed. A similar result may occur for any combination of OID type identifiers and parameters that may be processed by a Wi-Fi driver that cannot processed by a WiMAX driver.
The final two rows of table 411 provide further examples of mappings for scenarios in which similar, though not identical, functions are available in both Wi-Fi and WiMAX network interface cards. Field 412E indicates a “set data rate” command. That command includes a value, as indicated by field 414E1, identifying the rate for which the network interface card should be set. A WiMAX network card does not set its data rate in response to a value provided. Rather, it selects a maximum operating rate based on sensed channel conditions. Accordingly, a “set data rate” command, when applied to a WiMAX interface card, may have a different function than when applied to a Wi-Fi card. Here, as illustrated by the value in field 454E1, if a “set data rate” command is received by Wi-Fi emulator 234 it will, rather than attempting to set the data rate used by WiMAX card 212, return as a parameter the maximum rate supported by the WiMAX card based on current channel conditions.
Similarly, the last row of table 411 indicates a command that does not map directly to a corresponding command for a WiMAX card. In this example, field 412F contains a value identifying an “enable authentication” command. An associated parameter, as indicated by the value in field 414F1, identifies an algorithm to be used in performing authentication functions. Such information may be used by a Wi-Fi network interface, which can support multiple authentication algorithms. In contrast, the associated command, as indicated by the value in field 452F of table 451, does not include a parameter specifying one of many possible algorithms. As indicated by the value in field 454F1, a WiMAX card may support only authentication according to PKMv2. Accordingly, Wi-Fi emulator 234 may convert any command indicating that authentication is to be enabled into a command indicating that authentication according to PKMv2 should be enabled.
Many of the elements of graphical user interface 510, which were defined to present information relating to a Wi-Fi network, have direct correspondence to information available for a WiMAX network. For example, fields 512, 514, 516, 520, 522 and 524 may all present types of information that can be obtained from either a Wi-Fi network interface or a WiMAX network interface. For example, the information presented in field 524 defines a signal quality. A user interface component rendering graphical user interface 510, in order to present information in field 524 about a network, may issue a command to the network interface to provide status information relating to signal quality. The information returned in response to such a command may be of the same type for either a Wi-Fi or WiMAX network. Accordingly, the same type of information may be presented in field 524 regardless of whether the information is obtained from a Wi-Fi network interface or a WiMAX network interface.
However, the value in field 518 indicates a scenario in which a mapping performed by Wi-Fi emulator 234 provides a different type of information that is nonetheless meaningful in the context displayed. Specifically, field 518 is labeled in user interface 510 to be providing information on a network SSID. As described above in connection with
In the same way, commands that may be issued by a component rendering user interface 510 to obtain activity information for a Wi-Fi network may, when presented to a WiMAX network interface, cause the network interface to return information defining activity levels that may be presented in area 530. Thus, despite the fact that user interface 510 was initially defined in conjunction with a Wi-Fi network, it may be used in conjunction with a WiMAX network to provide activity information in field 530.
A similar result occurs when controls associated with user interface 510 are selected by a user. For example, when a user selects control 526, the component rendering user interface 510 may issue one or more commands requesting details on the connection maintained by a WiMAX network interface. The details presented may correspond directly to the details that would be presented for a Wi-Fi network, such as the values in fields 512, 514, 516, 520, 522 and 524. Alternatively, related values may be presented instead, as is the case with field 518. As a further alternative, though not illustrated in user interface 510, if user interface 510 is configured to present information on a Wi-Fi network connection for which there is no analogy in a WiMAX connection, the field may be left blank or otherwise include some indication that such information is unavailable. Similar results may occur if a user accesses control 528, requesting information on wireless properties.
In a similar fashion, commands that may be issued when a user selects a control from control area 540, even though initially defined to be applied to a Wi-Fi network interface, may nonetheless cause their intended function when applied to a WiMAX network interface through a Wi-Fi emulator, such as the emulator 234 illustrated in
In this example, fields 622 and 632 provide the name and network type. As described above in connection with
Additionally, each of fields 622 and 632 contains an indication of the network type of the described network. As described above in connection with
Controls in panel 630 that may be used to control a Wi-Fi network may similarly perform an intended result when used in panel 620 to control a WiMAX network. For example, controls 624 and 634, when activated, may cause the same result of disconnecting the computer from the network.
In this example, the network defined in panel 6521 is a WiMAX network. Accordingly, though the information presented in panel 6521 was obtained in response to commands initially defined for use in connection with Wi-Fi networks, execution of those commands results in meaningful information about a WiMAX network being displayed.
For example, each of fields 654, 656, 658 and 670 may present information obtained from a WiMAX network interface in response to commands initially defined for use in connection with a Wi-Fi network interface.
In the state illustrated in
The specific status information presented through user interface 690 is not critical to the invention and a manufacturer of a WiMAX card 212 or other party providing software for WiMAX card 212 may elect to present any one or more types of status information that WiMAX card 212 is capable of supplying. In the example of
In the example of
As illustrated by the foregoing examples, a computer initially configured with a Wi-Fi framework may be adapted for WiMAX communications. Such an adaptation may be performed by adding a WiMAX network interface card and a relatively small number of software components that interface with a framework for Wi-Fi communication. The hardware and software components used to adapt a Wi-Fi capable computer for WiMAX communications, in some embodiments, may be sold as a kit.
Kit 710 here contains WiMAX network interface card 720 that may be installed in a computer in the same fashion that a Wi-Fi network interface card is installed. As is known in the art, a network interface card may be installed in a bus slot in computer 110. Though, any suitable method of installing a network interface card may be used.
In conjunction with the network interface card, a computer readable media, such a disk 730 may be provided. In the embodiment illustrated, the network interface card and the computer-readable medium are packaged together. It is not necessary that the components be simultaneously delivered to a user and other embodiments are possible.
The computer readable media may contain computer executable components such as components 732 and 734. These components may include a WiMAX miniport driver and a Wi-Fi emulator. In addition, the components may include one or more extensibility components, such as user interface component 2784, service DLL 290, PKMv2 security provider component 292 or one or more EAP function modules, such as 2981 . . . 2983. In this way, components to reconfigure a computer for WiMAX communication may be readily provided. In addition, the same kit may be used to install WiMAX capabilities in a computer containing a framework for WiMAX communications. To use the kit in conjunction with such a computer, WiMAX network interface card 720 may be installed in conjunction with WiMAX miniport driver 232. Wi-Fi emulator 234 and any extensibility components for which comparable functionality is provided by the WiMAX framework need not be installed in this scenario.
The foregoing examples describe reconfiguration of a computer, initially configured for Wi-Fi communication, to communicate according to the WiMAX standard. However, the invention is not limited to use in conjunction with these wireless technologies. A computer configured for Wi-Fi communications may be reconfigured for communications in conjunction with any other suitable wireless technology. Similarly, the existing framework need not be limited to frameworks supporting Wi-Fi communication. A computer configured with any extensible wireless framework may be adapted for communication according to any other wireless technology as described above.
Having thus described several aspects of at least one embodiment of this invention, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art.
Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description and drawings are by way of example only.
The above-described embodiments of the present invention can be implemented in any of numerous ways. For example, the embodiments may be implemented using hardware, software or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers.
Further, it should be appreciated that a computer may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer. Additionally, a computer may be embedded in a device not generally regarded as a computer but with suitable processing capabilities, including a Personal Digital Assistant (PDA), a smart phone or any other suitable portable or fixed electronic device.
Also, a computer may have one or more input and output devices. These devices can be used, among other things, to present a user interface. Examples of output devices that can be used to provide a user interface include printers or display screens for visual presentation of output and speakers or other sound generating devices for audible presentation of output. Examples of input devices that can be used for a user interface include keyboards, and pointing devices, such as mice, touch pads, and digitizing tablets. As another example, a computer may receive input information through speech recognition or in other audible format.
Such computers may be interconnected by one or more networks in any suitable form, including as a local area network or a wide area network, such as an enterprise network or the Internet. Such networks may be based on any suitable technology and may operate according to any suitable protocol and may include wireless networks, wired networks or fiber optic networks.
Also, the various methods or processes outlined herein may be coded as software that is executable on one or more processors that employ any one of a variety of operating systems or platforms. Additionally, such software may be written using any of a number of suitable programming languages and/or programming or scripting tools, and also may be compiled as executable machine language code or intermediate code that is executed on a framework or virtual machine.
In this respect, the invention may be embodied as a computer readable medium (or multiple computer readable media) (e.g., a computer memory, one or more floppy discs, compact discs, optical discs, magnetic tapes, flash memories, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, or other tangible computer storage medium) encoded with one or more programs that, when executed on one or more computers or other processors, perform methods that implement the various embodiments of the invention discussed above. The computer readable medium or media can be transportable, such that the program or programs stored thereon can be loaded onto one or more different computers or other processors to implement various aspects of the present invention as discussed above.
The terms “program” or “software” are used herein in a generic sense to refer to any type of computer code or set of computer-executable instructions that can be employed to program a computer or other processor to implement various aspects of the present invention as discussed above. Additionally, it should be appreciated that according to one aspect of this embodiment, one or more computer programs that when executed perform methods of the present invention need not reside on a single computer or processor, but may be distributed in a modular fashion amongst a number of different computers or processors to implement various aspects of the present invention.
Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various embodiments.
Also, data structures may be stored in computer-readable media in any suitable form. For simplicity of illustration, data structures may be shown to have fields that are related through location in the data structure. Such relationships may likewise be achieved by assigning storage for the fields with locations in a computer-readable medium that conveys relationship between the fields. However, any suitable mechanism may be used to establish a relationship between information in fields of a data structure, including through the use of pointers, tags or other mechanisms that establish relationship between data elements.
Various aspects of the present invention may be used alone, in combination, or in a variety of arrangements not specifically discussed in the embodiments described in the foregoing and is therefore not limited in its application to the details and arrangement of components set forth in the foregoing description or illustrated in the drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.
Also, the invention may be embodied as a method, of which an example has been provided. The acts performed as part of the method may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.
Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed, but are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term) to distinguish the claim elements.
Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having,” “containing,” “involving,” and variations thereof herein, is meant to encompass the items listed thereafter and equivalents thereof as well as additional items.