Patent ID: 12238549

DETAILED DESCRIPTION

The subject matter of embodiments of the present disclosure is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of the present disclosure. Rather, the inventors have contemplated that the claimed subject matter might be embodied in other ways, to include different steps or combinations of steps similar to those described in the present disclosure, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms recited herein should not be interpreted to imply any particular order among or between various steps herein disclosed unless and except when an order of individual steps is explicitly described.

Throughout the present disclosure, several acronyms and shorthand notations are employed to aid the understanding of certain concepts pertaining to the associated system and services. These acronyms and shorthand notations are intended to help provide an easy methodology of communicating the ideas expressed herein and are not meant to limit the scope of embodiments described in the present disclosure. Further, various technical terms are used throughout the present disclosure. An illustrative resource that describes these terms may be found in, for example, Newton's Telecom Dictionary by H. Newton, 31st Edition (2018).

A “mobile device,” as used herein, is a device that has a capability of using a wireless communications network, and may also be referred to as a “user device,” a “wireless communication device,” or a “user equipment (UE).” The mobile device may be embodied as, but not limited to, a personal computer (PC), a laptop computer, a tablet, a mobile phone, a personal digital assistant (PDA), a server, or any other device that is capable of communicating with other devices using the wireless communications network. Additionally, embodiments of the present disclosure may be used with different technologies or standards, including, but not limited to, code-division multiple access (CDMA), internet exchange architecture (IXA), general packet radio service (GPRS), evolution-data optimized (EV-DO), time-division multiple access (TDMA), global system for mobile communications (GSM), worldwide interoperability for microwave access (WiMax) technology, long term evolution (LTE), and/or LTE advanced, among other technologies and standards.

Embodiments of the present disclosure may be implemented as, among other things, a method, a system, and/or a computer-program product. Accordingly, the embodiments include a hardware embodiment, or an embodiment combining a software and a hardware. In one embodiment, the present disclosure includes the computer-program product that includes computer-useable instructions embodied on one or more computer-readable media.

A computer-readable media may include both volatile and non-volatile media, removable and non-removable media, and contemplates media readable by a database, a switch, and/or various other network devices. Network switches, routers, and related components are conventional in nature, as are methods of communicating with the same. By way of non-limiting example, the computer-readable media may include computer storage media and/or communications media.

The computer storage media, or machine-readable media, may include media implemented in any method or technology for storing information. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations. The computer storage media may include, but is not limited to, random access memory (RAM), read only memory (ROM), electronically erasable programmable read-only memory (EEPROM), flash memory or other memory technology, compact disc read-only memory (CD-ROM), digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other storage devices. These memory components may store data momentarily, temporarily, and/or permanently. The computer storage media does not encompass a transitory signal in embodiments of the present disclosure. The computer storage media does not include a propagated data signal

The communications media typically stores computer-useable instructions including data structures and program modules in a modulated data signal. The term “modulated data signal” refers to a propagated signal that has one or more of its characteristics set or changed to encode information in the signal. The communications media includes any information-delivery media. By way of non-limiting example, the communications media may include wired media, such as a wired network or a direct-wired connection; and wireless media, such as acoustic, infrared, radio, microwave, spread-spectrum, and other wireless media technologies. Combinations of the above are included within the scope of computer-readable media. The communications media do not include signals per se.

In brief, and at a high level, the present disclosure describes, among other things, methods and systems for an automated test system to perform end-to-end cellular network testing. The automated test system provides a way to test creation of phone calls, send text messages, create conference calls, add/remove participants, and initiate call transfers. Each of these scenarios require a sending device and a receiving device, both connected to a cellular network. By utilizing the receiving device, the sending and receiving devices may share test expectations to determine a complete end-to-end success or failure. Before beginning a test case, the automated test system determines device readiness of the cell phone devices by exchanging readiness messages.

In order to validate a voice call or a text message, a functional testing platform requires a confederate recipient on a receiving end of the voice call or the text message. A mobile terminating device (MT) is made aware of the test in progress by receiving an expectation from a mobile originating device (MO), in order to determine if the test has completed correctly. The MO needs to know which MTs are online and available to run the test case. Additionally, during the test case, the MO and MTs utilize a push notification testing platform to communicate an expected and actual results of the test case.

The MO and MT in a functional end-to-end test framework communicate by exchanging the test expectations and test results, and provides a test platform capable of validating and logging complete end-to-end phone calls and text message transfers. The functional end-to-end test framework utilizes a cellular network which allows a browser application to make cellular phone calls and send text messages. In some aspects, instead of using actual cell phones to run the test, by using the automated test system, the automated test system may modify a client on each end of the test scenario and may co-ordinate scenario success validation. The MO and the MTs are able to exchange out-of-band test scenario descriptions, called the test expectations, and use a test case correlator to co-ordinate logging for an executive dashboard and an engineering validation.

The functional end-to-end test framework described herein, has found a unique way to use a push notification service to provide two-way communications in an uncontrolled internet environment, outside the confines and safety of company firewalls. The MO is designed to read a set of test cases from a database, place them in a queue, and execute them one at a time. After reading the test scenario, a test engine of the MO selects the test case and notifies the MTs with an expectation of the results of the test case. The MO and MTs subscribe to the push notification service when they first start up. Using the push notification service, the functional end-to-end test framework creates a two-way communication channel between the MO and all MTs. The push notification service is used to validate a status of the MTs. The test expectations are communicated with the MTs over the push-notification service. Once the expected results of the test case are notified, each involved MT sets a timer for the test scenario. After an appropriate predetermined time period, if an expected test scenario is not received (or if the MT receives the expected test scenario within the predetermined time period), the MT logs the results with the MO.

In one exemplary embodiment of the present disclosure, a system for implementing a cellular network readiness check is provided. The system may include one or more computer components configured to communicate a first push notification from a push notification server to a first mobile terminating device in response to a request to determine a status of the first mobile terminating device; and receive a network connection status from the first mobile terminating device, where the network connection status indicates a readiness of the first mobile terminating device to receive a communication from a first mobile originating device. The one or more computer components is further configured to communicate a second push notification from the push notification server in response to a first request to distribute a message expectation push to the first mobile terminating device. The one or more computer components is further configured to receive an indication from the first mobile originating device to initiate a first communication session with the first mobile terminating device and initiate the first communication session from the first mobile originating device to the first mobile terminating device. The one or more computer components is also configured to receive a communication from the first mobile terminating device indicating whether the first communication session was completed within the predetermined time period.

In another exemplary embodiment of the present disclosure, a method for implementing a cellular network readiness check is provided. The method includes communicating a first push notification from a push notification server to a first mobile terminating device in response to a request to determine a status of the first mobile terminating device and receiving a network connection status from the first mobile terminating device, where the network connection status indicates a readiness of the first mobile terminating device to receive a communication from a first mobile originating device. The method further includes communicating a second push notification from the push notification server in response to a first request to distribute a message expectation push to the first mobile terminating device. The method further includes receiving an indication is received from the first mobile originating device to initiate a first communication session with the first mobile terminating device to initiate a first communication session with the first mobile terminating device and initiating the first communication session from the first mobile originating device to the first mobile terminating device. The method also includes receiving a communication from the first mobile terminating device indicating whether the first communication session was completed within the predetermined time period.

In yet another exemplary embodiment of the present disclosure, one or more computer-readable media having computer-executable instructions embodied thereon that, when executed, perform a method for implementing a cellular network readiness check. The method includes communicating a first push notification from a push notification server to a first mobile terminating device in response to a request to determine a status of the first mobile terminating device and receiving a network connection status from the first mobile terminating device, where the network connection status indicates a readiness of the first mobile terminating device to receive a communication from a first mobile originating device. The method further includes communicating a second push notification from the push notification server in response to a first request to distribute a message expectation push to the first mobile terminating device. The method further includes receiving an indication is received from the first mobile originating device to initiate a first communication session with the first mobile terminating device to initiate a first communication session with the first mobile terminating device and initiating the first communication session from the first mobile originating device to the first mobile terminating device. The method also includes receiving a communication from the first mobile terminating device indicating whether the first communication session was completed within the predetermined time period.

Referring to the figures in general, and initially toFIG.1, an exemplary computing environment100suitable for practicing embodiments of the present disclosure is illustrated. The computing environment100may be an example and is not intended to suggest any limitation to the scope of use or functionality of the embodiments discussed herein. Neither should the computing environment100be interpreted as having any dependency or requirement relating to any one or a combination of components illustrated inFIG.1. It should be noted that although some components inFIG.1are shown in singular, they may be plural. For example, the computing environment100may include multiple processors and/or multiple radios. As shown inFIG.1, the computing environment100includes a bus102that directly or indirectly couples various components together, including a memory104, one or more processor(s)106, one or more presentation component(s)108(if applicable), radio(s)116, input/output (I/O) port(s)110, input/output (I/O) component(s)112, and a power supply114. More or fewer components are possible and contemplated, including in consolidated or distributed form.

The memory104may include memory components described herein. Thus, further elaboration will not be provided here, but it should be noted that the memory104may include any type of tangible medium, such as a database, that is capable of storing information. The database may include collection of records, data, and/or information. In one embodiment, the memory104may include a set of embodied computer-executable instructions that, when executed, facilitate various functions or elements disclosed herein. These embodied instructions will variously be referred to, in short, as “instructions” or an “application”. The processor(s)106may be implemented as multiple processors that receive instructions and process them accordingly. The presentation component(s)108may include a display, a speaker, and/or other components that may present information (for example, a screen, a light emitting diode (LED) lamp, a graphical user interface (GUI), and/or lighted keyboards) through visual, auditory, and/or other tactile cues.

The radio(s)116may facilitate communication with a network and may additionally or alternatively facilitate other types of wireless communications, such as wireless fidelity (Wi-Fi), worldwide interoperability for microwave access (WiMAX), long term evolution (LTE), and/or other voice over internet protocol (VOIP) communications. In various embodiments, the radio(s)116may be configured to support multiple technologies, and/or multiple radios may be configured and utilized to support multiple technologies.

The input/output (I/O) port(s)110may take a variety of forms. In an example, the I/O port(s)110may include a universal serial bus (USB) jack, a stereo jack, an infrared port, a firewire port, other proprietary communications ports, and the like. The Input/output (I/O) components112may include keyboards, microphones, speakers, touchscreens, and/or any other item usable to directly or indirectly input data into the computing environment100.

The power supply114may include batteries, fuel cells, and/or any other component that may act as a power source to supply power to the computing environment100or to other network components, through one or more electrical connections or couplings. The power supply114may be configured to selectively supply power to different components independently and/or concurrently.

FIG.2provides an exemplary network environment200in which implementations of the present disclosure may be employed. Such a network environment is illustrated and designated generally as the network environment200. The network environment200may be a suitable network environment and is not intended to suggest any limitation to the scope of use or functionality of the present disclosure. Neither should the network environment200be interpreted as having any dependency or requirement relating to any one or combination of components illustrated inFIG.2.

The network environment200includes a network202, a push notification service204, a mobile originating device (MO)206, one or more mobile terminating device (MT) (for example, mobile terminating devices208and210; indicated as MT2and MT1respectively inFIG.2). In the network environment200, devices may be embodied as a personal computer (PC), a user device, a smart phone, a smart watch, a laptop computer, a mobile phone, a mobile device, a tablet computer, a wearable computer, a personal digital assistant (PDA), a server, a compact disk (CD) player, an moving picture experts group (mpeg)-1audio layer III or mpeg-2audio layer III (MP3) player, a global positioning system (GPS) device, a video player, a handheld communications device, a workstation, a router, an access point, or any combination of these delineated devices, or any other device that communicates via wireless communications with a cell site (not shown) in order to interact with a public or private network.

In some aspects, the mobile originating device (MO)206corresponds to a computing device (alternatively referred to as the computing environment100inFIG.1). Thus, a user device may include, for example, a display(s), a power source(s) (for example, a battery), a data store(s), a speaker(s), the memory104, a buffer(s), the radio(s)116and the like. In some implementations, the MO206includes a wireless or mobile device with which a wireless telecommunication network(s) may be utilized for communication (for example, voice and/or data communication). In this regard, the user device may be any mobile computing device that communicates by way of a wireless network, for example, a 3G, 4G, 5G, LTE, CDMA, or any other type of network.

In some cases, the MO206in the network environment200may optionally utilize the network202to communicate with other computing devices (for example, a mobile device(s), a server(s), a personal computer(s), etc.) through the cell site. The network202may be a telecommunications network(s), or a portion thereof. A telecommunications network may include an array of devices or components (for example, one or more base stations), some of which are not shown. Those devices or components may form network environments similar to what is shown inFIG.2, and may also perform methods in accordance with the present disclosure. The components such as terminals, links, and nodes (as well as other components) may provide connectivity in various implementations. The network202may include multiple networks, as well as being a network of networks, but is shown in more simple form so as to not obscure other aspects of the present disclosure.

In some aspects, the mobile terminating devices208and210correspond to the computing device100inFIG.1. Thus, the user device may include, for example, a display(s), a power supply114(for example, a battery), a data store(s), a speaker(s), the memory104, a buffer(s), the radio(s)116and the like. In some implementations, the mobile terminating devices208and210include a wireless or mobile device with which the wireless telecommunication network(s) may be utilized for communication (for example, voice and/or data communication). In this regard, the user device may be any mobile computing device that communicates by way of a wireless network, for example, a 3G, 4G, 5G, LTE, CDMA, or any other type of network.

In some cases, the mobile terminating devices208and210in the network environment200may optionally utilize the network202to communicate with other computing devices (for example, a mobile device(s), a server(s), a personal computer(s), etc.) through the cell site.

The network202may be part of a telecommunication network that connects subscribers to their service provider. In some aspects, the service provider may be a telecommunications service provider, an internet service provider, or any other similar service provider that provides at least one of voice telecommunications and data services to any or all of the devices (for example, the mobile originating device206and the mobile terminating devices208, and210). For example, the network202may be associated with a telecommunications provider that provides services (for example, LTE) to the mobile terminating devices208and210. Additionally or alternatively, the network202may provide voice, short message service (SMS), and/or data services to user devices or corresponding users that are registered or subscribed to utilize the services provided by the telecommunications provider. The network202may include any communication network providing the voice, the SMS, and/or data service(s), using any one or more communication protocols, such as a 1xcircuit voice, a 3G network (for example, CDMA, CDMA2000, wideband code division multiple access (WCDMA), GSM, universal mobile telecommunications system (UMTS)), a 4G network (WiMAX, LTE, high speed downlink packet access (HSDPA)), or a 5G network. The network202may also be, in whole or in part, or have characteristics of, a self-optimizing network.

In some implementations, the network202is configured to communicate via one or more cell sites (not shown for clarity in the figures). The cell site may be configured to communicate with the devices (for example the mobile originating device206and the mobile terminating devices208,210) that are located within a geographical area defined by a transmission range and/or receiving range of radio antennas of the cell site. The geographical area may be referred to as the “coverage area” of the cell site or simply the “cell,” as used interchangeably hereinafter. The cell site may include one or more base stations, base transmitter stations, radios, antennas, antenna arrays, power amplifiers, transmitters/receivers, digital signal processors, control electronics, GPS equipment, and the like. In particular, the cell site may be configured to wirelessly communicate with devices within a defined and limited geographical area. For the purposes of the present disclosure, it may be assumed that it is undesirable and unintended by the network202that the cell site provide wireless connectivity to the devices, such as the mobile originating device206and the mobile terminating devices208and210, are geographically situated outside of the cell associated with the cell site.

The push notification service204may perform operations related to generating push notifications and promulgating these push notifications to the devices, clients and/or users. In some embodiments, the push notification service204may be implemented as one or more software (code) modules executing on suitable computer hardware, such as a server. In some aspects, the push notification service204may be physically or logically distinct from other servers that perform operations related to other aspects of the network environment200.

The push notification service204may be capable of detecting or receiving a request to generate a push notification. In some embodiments, requests may be detected based on information sent to the push notification service204by other servers or devices associated with the network environment200. For example, a communication device, such as the mobile originating device206, may communicate with the push notification service204to provide a request to generate the push notification.

The push notification service204may generate a push notification message and a push notification record based on the push notification request and store the push notification record in a data store, which may be implemented, for example, using a database or any other data storage technology and a suitable computer-readable storage medium. The push notification record may include a row in a database table, or any structured data object, that represents event information in a manner that makes a particular push notification readily retrievable by the push notification service204in response to a request from the device or the client.

The push notification service204may also promulgate push notification messages to the devices, the clients, and/or users via various channels to inform the clients and/or the users of the request. In some embodiments, the push notification service204generates a message corresponding to notification record and adds message to a message queue. The message may, but need not, contain an actual information in a push notification record. In some embodiments, the message may simply indicate an existence of the push notification record and provide information usable to route message to the client and to allow a receiving device, such the mobile terminating device208,210or the mobile terminating device210, to retrieve the push notification record from the data store. For example, message may include an identifier of the user for whom the message is intended and an identifier of the record.

Delivery of the push notification message to the client may be accomplished in a client-specific manner using the push notification service204. The push notification service204may read messages from a message queue and may generate appropriate device-specific notification messages; the notification messages may be sent via a channel (for example, a notification service) appropriate to a specific device. In some embodiments, the push-notification service204may leverage a service associated with a particular device's operating system (for example, Apple Push Notification Service, operated by Apple Inc., which supports third-party push notifications to devices running Apple's iOS operating system; Google Cloud Messaging, operated by Google Inc., which supports the third-party push notifications to devices running an Android operating system).

In response to receiving the push notification message, the receiving device may request a corresponding push notification record from a notification data store, for example, by sending a request to the push notification service204, using information contained in a received client-specific message to identify the push notification record of interest.

Turning now toFIG.3, an exemplary system300for establishing a two-way cellular network readiness check between a mobile originating device and a mobile terminating device is illustrated. At a high level, the exemplary system300includes a network302, a push notification service304, the mobile originating device (MO)306, one or more mobile terminating device (MT) for example, mobile terminating devices308, and310, referenced as MT2and MT1respectively inFIG.3). As will be described in relation toFIG.3, the push notification service304may be used in connection with the MO306to verify that the mobile terminating devices308and310are ready and able to participate in a test case. Additionally, the MO306and MTs308,310need to maintain communication with each other to exchange information about the test case.FIG.3depicts a technological solution where the MO306and MTs308,310subscribe to the push notification service304when they first start up. Using the push notification service304, the functional end-to-end test framework creates the two-way communication channel between the MO and all MTs.

During a test run, the MTs308,310are launched first. The MTs308,310contact the network302, which authenticates the MTs308,310. When the MO306is launched, the MO306contacts the network302which authenticates the MO306. To protect user data security and integrity, the network302may provide a security key to the MTs308,310and the MO306for authentication and identity checking. For example, the network302may assign the push notification service304with a security key that may be used when the push notification service304is contacted or used to generate and distribute push notifications to a mobile or other device. In such embodiments, the MTs308,310and the MO306will need the security key (or security keys) from the network302to access the push notification service304and to subscribe to the push notification service304. The MTs308,310and the MO306then contacts the push notification service304and subscribes to receive the push notifications from the push notification service304. The device operating as the MO306may operate as an MO or as an MT.

The device operating as the MO306then launches a test engine which operates on a server associated with the MO306. The MO306sends an initial request314to the network302. The initial request314sent by the MO306to the network302is a request to determine which devices operating as MTs are available to participate in the test run. The initial request314to the network302to determine availability and readiness of the MTs308,310initiates a protocol which determines which MTs of all the subscribed MTs308,310are connected to the network302.

The network302then communicates the initial request314to the push notification service304. The push notification service304will generate a push notification message and a push notification record based on the push notification request and stores the push notification record in a data store. The push notification message is to be communicated to the MO306and the MTs308,310subscribed to the push notification service304. In some instances, there may be one or more MOs subscribed to the push notification service304. Additionally, there may be one or more MTs subscribed to the push notification service304. The push notification service304distributes a push notification316to all subscribed clients, such as the MTs308,310. The devices or the clients that are acting as the MT's308,310accept this notification.

In response to the push notification message requesting the availability and readiness of the MTs308,310, the devices operating as the MT's308,310communicate their identity and a status communication322to the network302. The communication from the MTs308,310to the network302may be done using a variety of communication pathways. For example, the MTs308,310may communicate their status and identities to the network302using a standard routable representational state transfer application programming interface (REST API) message. The MO306client ignores the request316from the push notification service304and instead waits for the status communication322to be communicated to the server. The network302receives the status communication322and identity from all the MTs308,310. The status communication322indicates the MT's308and310ability to participate in the test case. To be indicated as available to participate in the test case, the MTs308,310must be connected to the network302. The network302communicates the status communication322and identity message from the MTs308,310to the push notification service304. The network302then communicates the status communication322to the push notification service304. The push notification service304will generate the push notification message and the push notification record based on the status communication322and stores the push notification record in the data store. The push notification message will then be communicated to the MO306and the MTs308,310which are subscribed to the push notification service304. The MO306receives the push notification service304with all the MTs' status and starts executing the test case. The MTs308,310ignore this push as it is directed at the MO306. The MO306assigns the first MT308as MT1, the second MT310as MT2. If a third MT is present, the MO306will assign that MT as MT3up to MTN for N number of devices present and ready to participate in the test case.

The MO306sends the REST API message containing an expectation message318for the MT1to the network302and each of the other MTs connected and ready to participate in the test case. Each test case executed has a unique ID that is used to correlate the test cases. The expectation message318contains what an expected outcome of the test case for the MT1308is. For example, the expectation message318may also contain information regarding the timing of the communication session request from the MO306to the MT1308. Such communication sessions may be a call over a wireless network, a text message, or other communication between the MO306and the MT1308.

The network302then communicates the expectation message318to the push notification service304. The push notification service304will generate the push notification message and the push notification record based on the expectation message318and stores the push notification record in the data store. The push notification message is to be communicated to the MT1308. The MT308or MT1accepts an incoming call expectation push notification. In response to the expectation push notification, the MT1308starts a timer and waits for an incoming communication session request such as a communication session request320. The MO306requests to initiate the communication session request320with the MT1308. This communication session request320may use a cellular network which may be the network302. The communication session request320may also be through any other communication avenue such as a hard wired communication network.

If the MT308or the MT1device receives the communication session request320within a pre-determined time, the test case is considered as a “PASS”. If the MT308or the MT1device receives the communication session request320within a pre-determined delayed time, the test case is not considered a pass but reports to the network302about the delay. If the MT308or the MT1device does not receive the communication session request320before the pre-determined times expires, the test case is considered a “FAIL”.

Once the success of the communication session request320is determined, the MT308or the MT1device sends a report to the network302. The report sent to the network302contains whether the communication session request320is pass, fail, or was delayed along with the test case ID. The network302then communicates the success report to the push notification service304. The push notification service304will generate the push notification message and the push notification record based on the expectation message318and stores the push notification record in a data store. The push notification message is to be communicated to the MO306. When the MO306receives a success report push notification, it indicates an outcome of the test case with the outcome of the communication session request320. A success report which indicates anything other than a pass may create an indication to send the report to a log and create a trouble ticket. The trouble ticket indicates that there may exist a problem within the communication pathways between the MO306and the MT308.

Turning now toFIG.4, a flowchart of an exemplary method400for implementing a wireless or cellular network readiness check is illustrated. At step402, the method400includes communicating of a push notification from a server to a mobile terminating device (such as the MT) in response to a request to determine a status of the mobile terminating device. The push notification of step402may be generated by the push notification service304(shown inFIG.3). At a second step404, a network connection status is received from a first mobile terminating device (such as the MT308shown inFIG.3). In a third step406, a second push notification is communicated to the mobile terminating device in response to a request to distribute a message expectation push. The message expectation push may contain information related to a test case initiated by the mobile originating device (such as the MO306shown inFIG.3). Such information may include pre-determined timing limits of the communication session request320. For example, if the communication session request320is completed between the MO and the first MT within a first time period, the test is considered a pass. If the communication session request is completed within a second, longer time period, the session is considered delayed. If the communication session request is not completed within any time period specified, the communication session request is considered to be failed. In a fourth step408, a communication session is initiated between the mobile originating device306and the mobile terminating device308or310. In a fifth step410, a communication from the mobile terminating device308,310is received indicating whether the communication session was completed within the predetermined time periods discussed above. Each of the above steps may be repeated for one or more MTs connected to the network302.

Many different arrangements of the various components depicted, as well as components not shown, are possible without departing from the scope of the claims below. Embodiments of the present disclosure have been described with an intent to be illustrative rather than be restrictive. Alternative embodiments will become apparent to readers of the present disclosure. Alternative means of implementing the aforementioned aspects may be completed without departing from the scope of the claims below. Certain features and sub-combinations of aspects of the present disclosure are of utility and may be employed without reference to other features and sub-combinations and are contemplated within the scope of the claims.