The present invention generally relates to systems and methods of operating a multiplayer game and, more particularly, relates to systems and methods of effectuating a push-to-talk service in a game operated by a plurality of clients.
Electronic games have become a widespread entertainment feature and are well known in the state of the art as video games or gaming machines. To increase the fun of the game many video games offer the option to play against a computer or against other persons. Some games can be played in a one, two or more player mode, to provide virtual adventures, or to economize expensive gaming equipment. There are actually many different gaming simulations such as sports games, car races, strategy games and even war games available. The attraction of some of these games resides in the fact that the games can be played via networks such as the Internet, enabling remote users to access and play different games with or against other real and/or virtual players, while being in different rooms, homes, towns, countries or even continents.
Typically, electronic games are implemented using application-level gaming infrastructure providing, for example, login, gamer identity, game session or user searches, match-making services or the like. In this regard, by implementing such games using application-level gaming infrastructure, the games are adapted to operate on top of TCP/IP or other protocols as well as alongside other non-gaming applications, thereby ensuring that no need exists for dedicated gaming networks.
During play of electronic games, as in a number of other computing contexts, users desire to communicate with one another. Desktop computers, game consoles, workstations and other wireline computers that provide gaming applications currently allow users to communicate via e-mail, video conferencing, instant messaging (IM) and voice-over-IP (VoIP) to name a few communication applications. Mobile devices, such as mobile telephones, handheld computers, personal digital assistants (PDAs) and the like, which are increasingly also providing gaming applications, also assist in day-to-day communication. Mobile/wireless telephones have conventionally served as voice communication devices, but through technological advancements have recently proved to be effective devices for communicating data, graphics, etc. Wireless and landline technologies continue to merge into a more unified communication system, as user demand for seamless communications across different platforms increases.
Although a number of communication services are currently implemented in the game environment, it is typically desirable to improve upon existing technologies. In this regard, as a number of the current communication systems are proprietary, it would be desirable to design a communication system that draws from existing infrastructures, particularly in the context of mobile devices that are already limited in their computing power, storage space and bandwidth. It would be further desirable for such a system to permit users to have a manner of control over their contact address in implementing communication service in the gaming environment, thereby providing a manner of control over the other users capable of communicating with the client via the communication service within the gaming environment, and also outside the gaming environment.
In light of the foregoing background, exemplary embodiments of the present invention provide an improved client, network entity, method and computer program product for effectuating a push-to-talk service, such as a push-to-talk over cellular (PoC) service, in a multiplayer gaming environment. Exemplary embodiments of the present invention provide a means for a client, operating in a gaming architecture, to also operate in a multimedia service architecture to effectuate a push-to-talk session. The push-to-talk session can then be utilized by the gaming architecture to enable other clients operating in the gaming architecture to join the push-to-talk session. Exemplary embodiments of the present invention are capable of being implemented in a manner utilizing both a gaming architecture and a multimedia service architecture, without requiring integration of one architecture into the other. Further, exemplary embodiments of the present invention provide for alias address routing while operating in both the gaming architecture and multimedia service architecture to thereby provide a manner of control over the availability of a multimedia service address with which the client may be addressed in the multimedia service architecture outside the gaming environment.
According to one aspect of the present invention, a client is provided for effectuating a push-to-talk service in a gaming environment. The client includes a processor capable of operating a game client, where the client has an associated alias address in a gaming architecture and an associated multimedia service address in a multimedia service architecture. In this regard, the game client is capable of interacting with the gaming architecture to play an electronic game. During interaction with the gaming architecture, the game client is capable of receiving at least one parameter of a push-to-talk session in the multimedia service architecture. The game client is then capable of joining the push-to-talk session in the multimedia service architecture based upon the parameter(s) while the client interacts with the gaming architecture, joining the push-to-talk session including sending a request to the multimedia service architecture, where the request includes the multimedia service address of the client. The game client is capable of sending the request such that the request is routed through the gaming architecture. The gaming architecture, then, is capable of modifying the request to include the alias address of the client, and forwarding the modified request to the multimedia service architecture. The multimedia service architecture can thereafter join the client to the push-to-talk session based upon the alias address.
More particularly, the game client can be capable of receiving at least one parameter including a routing address identifying a first network entity (e.g., event server) in the gaming architecture, where the routing address can be associated with a session address identifying the push-to-talk session at a second network entity (e.g., controlling server) in the multimedia service architecture. In such instances, the game client can be capable of sending a request such that the request is routed through the first network entity identified by the routing address. Further, the game client can be capable of sending a request to a third network entity (e.g., participating server) in the multimedia service architecture, where the third network entity is capable of forwarding the request to the first network entity identified by the routing address. Irrespective of exactly how the first network entity receives the request, however, the first network entity can thereafter forward the modified request to the second network entity identified by the session address, where the second network entity can thereafter be capable of joining the client to the push-to-talk session identified by the session address.
The game client can be further capable of establishing a push-to-talk session in the multimedia service architecture before joining the push-to-talk session. In establishing the push-to-talk session, the game client can be capable of receiving at least one associated session parameter, where the session parameters include the session address. The game client can be capable of transferring at least one of the session parameters to the gaming architecture. The gaming architecture can thereafter be capable of associating the session address with the routing address and advertising the associated routing address for receipt by the client.
According to other aspects of the present invention, a network entity, method and computer program product are provided for effectuating a push-to-talk service in a gaming architecture. Exemplary embodiments of the present invention therefore provide an improved client, network entity, method and computer program product for effectuating a push-to-talk service in a gaming architecture. By operating the client within the gaming architecture to play an electronic game, and within a multimedia service architecture to participate in a push-to-talk session, exemplary embodiments of the present invention are capable of effectuating a push-to-talk service within a gaming architecture. Also, by effectuating the push-to-talk service via the client, the gaming architecture and the multimedia service architecture need not be integrated with one another, and can accordingly be maintained separate from one another. Further, by routing a request to join the push-to-talk session through the gaming architecture, the push-to-talk session can be effectuated based upon an alias address of the client, as opposed to a multimedia session address of the client. In this manner, the client can control the other clients capable of communicating with the client via the multimedia service architecture within the gaming environment, and also outside the gaming environment. As such, the client, network entity, method and computer program product of exemplary embodiments of the present invention may solve the problems identified by prior techniques and/or provide additional advantages.
Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
a and 8b are control flow diagrams including various steps in a method of effectuating a PoC service in a multiplayer gaming environment, in accordance with one embodiment of the present invention.
The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout.
Referring to
The system can include one or more mobile stations 10, each having an antenna 12 for transmitting signals to and for receiving signals from one or more base stations (BS's) 14, one of each being shown in
The MSC 16 can be coupled to a data network, such as a local area network (LAN), a metropolitan area network (MAN), and/or a wide area network (WAN). The MSC can be directly coupled to the data network. In one typical embodiment, however, the MSC is coupled to a Gateway (GTW) 18, and the GTW is coupled to a WAN, such as the Internet 20. In turn, devices such as processing elements (e.g., personal computers, server computers or the like) can be coupled to the mobile station 10 via the Internet. For example, as explained below, the processing elements can include one or more processing elements associated with one or more game servers 22, routing servers 24, event servers 25 (e.g., session initiation protocol (SIP) event servers), personal computer (PC) systems 26, game consoles 28, or the like, one of each being illustrated in
The BS 14 can also be coupled to a Serving GPRS (General Packet Radio Service) Support Node (SGSN) 30. As known to those skilled in the art, the SGSN is typically capable of performing functions similar to the MSC 16 for packet switched services. The SGSN, like the MSC, can be coupled to a data network, such as the Internet 20. The SGSN can be directly coupled to the data network. In a more typical embodiment, however, the SGSN is coupled to a packet-switched core network, such as a GPRS core network 32. The packet-switched core network is then coupled to another GTW, such as a GTW GPRS support node (GGSN) 34, and the GGSN is coupled to the Internet.
The GGSN 30 and Internet 20 can be coupled to a IP multimedia subsystem (IMS) 36 that includes various entities for the provision of multimedia services, such as in a manner defined by the third generation partnership project (3GPP). As explained in greater detail below, the IMS can be coupled to an application server for providing the push-to-talk over cellular (PoC) service, also known as PTT, push-to-talk service or the like. Thus, as shown, the application server providing the PoC service is referred to as a PoC server 38, one or more of which may be coupled to the IMS.
Although not every element of every possible network is shown and described herein, it should be appreciated that the mobile station 10 may be coupled to one or more of any of a number of different networks. In this regard, mobile network(s) can be capable of supporting communication in accordance with any one or more of a number of first-generation (1G), second-generation (2G), 2.5G and/or third-generation (3G) mobile communication protocols or the like. More particularly, one or more mobile stations may be coupled to one or more networks capable of supporting communication in accordance with 2G wireless communication protocols IS-136 (TDMA), GSM, and IS-95 (CDMA). Also, for example, one or more of the network(s) can be capable of supporting communication in accordance with 2.5G wireless communication protocols GPRS, Enhanced Data GSM Environment (EDGE), or the like. In addition, for example, one or more of the network(s) can be capable of supporting communication in accordance with 3G wireless communication protocols such as Universal Mobile Telephone System (UMTS) network employing Wideband Code Division Multiple Access (WCDMA) radio access technology. Some narrow-band AMPS (NAMPS), as well as TACS, network(s) may also benefit from exemplary embodiments of the present invention, as should dual or higher mode mobile stations (e.g., digital/analog or TDMA/CDMA/analog phones).
One or more mobile stations 10 (as well as one or more processing elements, although not shown as such in
Although not shown in
Referring now to
The entity capable of operating as a mobile station 10, game server 22, routing server 24, event servers 25, personal computer (PC) system 26, game console 28 and/or PoC server 38 includes various means for performing one or more functions in accordance with exemplary embodiments of the present invention, including those more particularly shown and described herein. It should be understood, however, that one or more of the entities may include alternative means for performing one or more like functions, without departing from the spirit and scope of the present invention. More particularly, for example, as shown in
As described herein, the client application(s) each comprise software operated by the respective entities. It should be understood, however, that any one or more of the client applications described herein can alternatively comprise firmware or hardware, without departing from the spirit and scope of the present invention. Generally, then, the mobile station 10, game server 22, routing server 24, event servers 25, personal computer (PC) system 26, game console 28 and/or PoC server 38 can include one or more logic elements for performing various functions of one or more client application(s). As will be appreciated, the logic elements can be embodied in any of a number of different manners. In this regard, the logic elements performing the functions of one or more client applications can be embodied in an integrated circuit assembly including one or more integrated circuits integral or otherwise in communication with a respective network entity (i.e., mobile station, game server, routing server, event server, personal computer (PC) system, game console and/or PoC server, etc.) or more particularly, for example, a processor 30 of the respective network entity. The design of integrated circuits is by and large a highly automated process. In this regard, complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate. These software tools, such as those provided by Avant! Corporation of Fremont, Calif. and Cadence Design, of San Jose, Calif., automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as huge libraries of pre-stored design modules. Once the design for a semiconductor circuit has been completed, the resultant design, in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a semiconductor fabrication facility or “fab” for fabrication.
In addition to the memory 42, the processor 40 can also be connected to at least one interface or other means for displaying, transmitting and/or receiving data, content or the like. In this regard, the interface(s) can include at least one communication interface 44 or other means for transmitting and/or receiving data, content or the like, as well as at least one user interface that can include a display 46 and/or a user input interface 48. The user input interface, in turn, can comprise any of a number of devices allowing the entity to receive data from a user, such as a keypad, a touch display, a joystick or other input device.
Reference is now made to
The mobile station 10 includes various means for performing one or more functions in accordance with exemplary embodiments of the present invention, including those more particularly shown and described herein. It should be understood, however, that the mobile station may include alternative means for performing one or more like functions, without departing from the spirit and scope of the present invention. More particularly, for example, as shown in
It is understood that the controller 54 includes the circuitry required for implementing the audio and logic functions of the mobile station 10. For example, the controller may be comprised of a digital signal processor device, a microprocessor device, and various analog-to-digital converters, digital-to-analog converters, and other support circuits. The control and signal processing functions of the mobile station are allocated between these devices according to their respective capabilities. The controller can additionally include an internal voice coder (VC) 54a, and may include an internal data modem (DM) 54b. Further, the controller may include the functionally to operate one or more client software programs such as those indicated above, which may be stored in memory (described below).
The mobile station 10 also comprises a user interface including a conventional earphone or speaker 56, a ringer 58, a microphone 60, a display 62, and a user input interface, all of which are coupled to the controller 54. Although not shown, the mobile station can include a battery for powering the various circuits that are required to operate the mobile station, as well as optionally providing mechanical vibration as a detectable output. The user input interface, which allows the mobile station to receive data, can comprise any of a number of devices allowing the mobile station to receive data, such as a keypad 54, a touch display (not shown), a joystick (not shown) or other input device. In exemplary embodiments including a keypad, the keypad includes the conventional numeric (0-9) and related keys (#, *), and other keys used for operating the mobile station.
The mobile station 10 can also include one or more means for sharing and/or obtaining data. For example, the mobile station can include a short-range radio frequency (RF) transceiver or interrogator 66 so that data can be shared with and/or obtained from electronic devices in accordance with RF techniques. The mobile station can additionally, or alternatively, include other short-range transceivers, such as, for example an infrared (IR) transceiver 68, and/or a Bluetooth (BT) transceiver 70 operating using Bluetooth brand wireless technology developed by the Bluetooth Special Interest Group. The mobile station can therefore additionally or alternatively be capable of transmitting data to and/or receiving data from electronic devices in accordance with such techniques. Although not shown, the mobile station can additionally or alternatively be capable of transmitting and/or receiving data from electronic devices according to a number of different wireless networking techniques, including WLAN techniques such as IEEE 802.11 techniques or the like.
The mobile station 10 can further include memory, such as a subscriber identity module (SIM) 72, a removable user identity module (R-UIM) or the like, which typically stores information elements related to a mobile subscriber. In addition to the SIM, the mobile station can include other removable and/or fixed memory. In this regard, the mobile station can include volatile memory 74, such as volatile Random Access Memory (RAM) including a cache area for the temporary storage of data. The mobile station can also include other non-volatile memory 76, which can be embedded and/or may be removable. The non-volatile memory can additionally or alternatively comprise an EEPROM, flash memory or the like. The memories can store any of a number of software applications, instructions, pieces of information, and data, used by the mobile station to implement the functions of the mobile station.
As will be appreciated, a number of the entities of the system of
Reference is now made to
Also in the illustrated architecture 78, the clients 80 are operatively coupled to routing servers 24 which, in turn, are coupled to the game servers 22. Thus, the routing servers route data packets between one or more clients and the game servers, and/or other clients, to facilitate the operation of each entity in the architecture. As shown, the routing servers can be coupled between groups of clients and one or more game servers, directly or indirectly via one or more other routing servers. In this regard, one or more routing servers can also be coupled to other routing servers such that the routing servers can also be coupled between one or more clients and one or more groups of other clients, such as groups of clients coupled to other routing servers.
Referring to
To connect the clients to the PoC servers 38, the IMS architecture 82 includes an IMS core 85 including a number of network entities known as servers. As shown, for example, the IMS architecture can include a number of call session (or state) control functions (CSCFs) to handle different functions. The CSCFs may, in turn, be divided into various categories such as a proxy CSCF (P-CSCF) 84 and an interrogating/serving CSCF (I/S-CSCF) 86. Briefly, the P-CSCF provides the clients 80 with a gateway or entry point into the IMS architecture. The I/S-CSCF, which may alternatively comprise separate entities, operates as the authentication contact point within the IMS architecture for connections to clients (the interrogating function), and performs the session control services for the clients, providing the call intelligence and business logic (the serving function).
The signaling between the clients 80 and the appropriate CSCFs 84 and 86 is typically routed via a radio access network, such as the GPRS network or backbone 32. The user plane session set-up signaling for a client is routed via and controlled by the PoC servers 38. That is, the PoC servers control both the control plane and the user plane of the client. It shall be appreciated that the control plane traffic between the client and the PoC servers is typically routed via the IMS architecture 82, such as in accordance with SIP. The user plane traffic between the client and the PoC server, on the other hand, is typically routed from the radio access (e.g., GPRS) network to the PoC server, such as in accordance with the respective radio access network.
Referring now to
More particularly,
As shown in
Reference is now made to
Now with reference to
As the clients 80, or more particularly the game clients operated by the clients, interact with the game server 22 during the game session, the game server may send a client a request to establish one or more PoC sessions within an IMS architecture 82. Alternatively, before or as a client interacts with the game server, the client may desire to establish one or more PoC sessions within the IMS architecture irrespective of a request from the game server. In response to the request or a self-initiated trigger, the client can initiate or otherwise establish one or more PoC sessions with one or more controlling PoC servers 38a, via one or more participating PoC servers 38b, within the IMS architecture. In this regard, in establishing each PoC session, a number of parameters can be established or otherwise determined by which the session may be joined by the client as well as other clients. For example, the PoC server may assign a session address or other identifier that may be transferred to the client for accessing the PoC session. Other parameters may include, for example, an address or other identifier of the PoC server, as well as any other parameters that may define requirements of joining the PoC session. More particularly, for example, consider the controlling PoC server having the address “poc.host.com,” where the controlling PoC server supports a PoC session having an identifier such as “session1.” In such an instance, the parameter(s) established or otherwise determined in establishing the respective PoC session can include the session address “session1@poc.host.com.”
By initiating or otherwise establishing the PoC session(s), the client 80 is enabled to operate in the IMS architecture 82. To operate in the IMS architecture while in the gaming environment, however, the client may not immediately join the established PoC session(s). Instead, the client may join the established PoC session(s) via an event server 25 in the gaming architecture 78 such that the client may be addressed by an alias (e.g., alias SIP address) as opposed to a client PoC address (e.g., PoC SIP address) with which the IMS architecture otherwise addresses the client outside the multiplayer gaming environment, as explained below.
After the PoC session(s) have been established, the session parameter(s) can be transferred to the game server 22 that originally requested the client to establish the PoC session. In this regard, the parameter(s) may be transferred from the controlling PoC server 38a to the participating PoC server 38b, from the participating PoC server to the client 80, and from the client to the game server. It should be understood, however, that one or more of the parameters may alternatively be transferred to the game server more directly from the controlling PoC server, if so desired. And in yet other instances, one or more of the parameters may already be known to the game server, such as the address of the controlling PoC server effectuating the PoC session. Irrespective of how the parameter(s) are transferred to the game server, however, the game server can thereafter advertise session parameter(s) to the clients playing the multiplayer game, including the client that established the PoC session(s).
Before advertising the session parameters to the clients, however, the game server or another entity (e.g., event server 25) in communication with the game server can associate one or more of the PoC session parameters with one or more routing parameters. In this regard, the game server (or other entity) can associate the session address established by the IMS architecture 82 with a routing address 94 established by the gaming architecture 78. Continuing the above example, then, the session address “session1@poc.host.com” can be associated with a routing address such as “game1@gaming.host.com,” where “game1” identifies a PoC session being effectuated during gaming session within which the client that established the PoC session(s) is playing, and “gaming.host.com” identifies the event server in the gaming architecture. By associating one or more PoC session parameters with respective routing parameters, the routing parameters can be utilized to perform alias address routing in effectuating the established PoC session(s) in accordance with exemplary embodiments of the present invention.
Thus, after associating PoC session parameter(s) with respective routing parameter(s), the game server 22 can thereafter advertise the routing parameter(s) (e.g., routing address) and any PoC session parameter(s) not otherwise associated with routing parameter(s) to clients 80 playing the multiplayer game, including the client that established, but did not immediately join, the PoC session(s). For example, the game server may advertise the routing/PoC session parameter(s) to clients of the same game session. Further, within a game session, the game server may advertise the parameter(s) to the client that established the PoC session and other clients associated therewith, such as other clients on a team with the respective client within the game. Alternatively, a client on a team playing a game against another team may receive a request to establish two PoC sessions. After establishing the PoC sessions and transferring parameters for each PoC session to the game server, the game server can advertise one set of parameter(s) to the clients of each team. The members of each team may then join in a respective PoC session.
As the game server 22 advertises the routing/PoC session parameter(s) of the PoC session to the clients 80 including the client that established the PoC session, the clients receiving the advertised parameter(s) can, if so desired, join the PoC session based upon the respective parameter(s). In this regard, the game-PoC modules of one or more clients can receive the advertised routing/PoC session parameter(s) and request to join the PoC session based upon the client's PoC address (e.g., “user@poc.host.com”) and the routing/PoC session parameter(s), including the routing address (e.g., “game1@gaming.host.com”), as shown in
Upon receiving the request to join the PoC session from the participating PoC server 38b, the event server 25 can modify the request to replace the routing address and client PoC address in the request with the associated PoC session address and client alias address, respectively. More particularly, for example, the event server can replace the routing address “game1@gaming.host.com” with the PoC session address “session1@poc.host.com,” and replace the client PoC address “user@poc.host.com” with the alias address “alias@gaming.host.com.” After replacing the routing address and client PoC address, the event server can forward the request to join the PoC session to the controlling PoC server 38a. In this manner, the event server may function as a participating PoC server with respect to the controlling PoC server. Upon receiving the request, then, the controlling PoC server can join the respective client 80, whether the client that initiated the PoC session or another client, to the PoC session (e.g., “session1”) based upon the client's alias address. As can be seen, then, by routing the request through the event server based upon the routing address, the event server can shield the client's PoC address from the controlling PoC server, and thus the PoC session, such that other clients operating in the PoC session need not be made aware of the client's PoC address during effectuation of the PoC session.
As further shown, after joining the client 80 to the PoC session, the controlling PoC server 38a can forward an acknowledgement (ACK) message back to the event server 25, where the ACK message is sent based upon or otherwise including the client's alias address (e.g., “alias@gaming.host.com”), as well as the PoC session address (e.g., “session1@poc.host.com”). Upon receiving the ACK message, the event server can, similar to before, replace the alias address and PoC session address with the associated client PoC address and routing address, respectively. After replacing the alias address and PoC session address, the event server can forward the ACK message to the participating PoC server 38b, which upon receipt of the ACK message, can forward the message to the client.
As clients 80 join the PoC session, those clients can effectuate the PoC session based upon their respective alias addresses, the event server being capable of forwarding messages to the controlling PoC server based upon the clients' respective alias addresses, and forwarding messages from the controlling PoC server based upon the clients' respective PoC addresses. Accordingly, while the clients play a multiplayer game within the gaming architecture 78, the clients can simultaneously participate in a PoC service of the PoC server within the IMS architecture 82. As clients may join the game session at one or more instances after the game server initially advertises the parameter(s) of the PoC session, or as one or more clients may otherwise subsequently desire to join the PoC session, the game server may periodically advertise the parameter(s). Additionally or alternatively, the game server may advertise the parameter(s) to new clients joining the game session.
As shown and explained herein, clients 80 participate in a PoC session in an IMS architecture 82 while operating in a gaming architecture. It should be understood, however, that the IMS architecture is only one of a number of different types of architectures via which a push-to-talk session is capable of being effectuated in accordance with exemplary embodiments of the present invention. Likewise, PoC is only one of a number of different types of push-to-talk communication services capable of being provided to clients operating in a gaming architecture in accordance with exemplary embodiments of the present invention.
According to one aspect of the present invention, the functions performed by one or more of the entities of the system, such as the game server 22, routing server 24, event server 25, PoC server 38 and/or client 80 (e.g., mobile station 10, PC system 26, game console 28, etc.), may be performed by various means, such as hardware and/or firmware, including those described above, alone and/or under control of a computer program product (e.g., game client, game-PoC module, PoC client, etc.). The computer program product for performing one or more functions of exemplary embodiments of the present invention includes a computer-readable storage medium, such as the non-volatile storage medium, and software including computer-readable program code portions, such as a series of computer instructions, embodied in the computer-readable storage medium.
In this regard,
Accordingly, blocks or steps of the control flow diagrams support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks or steps of the control flow diagrams, and combinations of blocks or steps in the control flow diagrams, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
Many modifications and other embodiments of the invention will come to mind to one skilled in the art to which this invention pertains having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the invention is not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.