Abstract:
A network component comprising a processor configured to implement a method comprising: detecting a state of a mobile station and sending a state message to a connection service network using an accounting protocol wherein the state message comprises a state data indicating the state of the mobile station is disclosed. Also disclosed is a network component comprising a processor configured to implement a method comprising: receiving a message intended for a mobile station determining whether the mobile station is in an idle state and storing the message until the mobile station exits the idle state.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority to U.S. Provisional Application Ser. No. 60/825,667, filed Sep. 14, 2006 and entitled “Idle Mode Notification,” which is incorporated herein by reference in its entirety. 
     
     STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
       [0002]    Not applicable. 
       REFERENCE TO A MICROFICHE APPENDIX 
       [0003]    Not applicable. 
       BACKGROUND 
       [0004]    Several types of networks can be involved in the communication of data between users. For example, when the users are using mobile devices, such as notebook computers, the mobile devices communicate with an access network, such as a wireless access point. After the access network verifies the user&#39;s account status and identity with a connection service network, the user is free to exchange data with third party networks via the access network and/or the connection service network. 
       SUMMARY 
       [0005]    In a first embodiment, the disclosure includes a network component comprising a processor configured to implement a method comprising detecting a state of a mobile station, and sending a state message to a connection service network using an accounting protocol, wherein the state message comprises a state data indicating the state of the mobile station. 
         [0006]    In a second embodiment, the disclosure includes a network component comprising a processor configured to implement a method comprising receiving a message intended for a mobile station, determining whether the mobile station is in an idle state, and storing the message until the mobile station exits the idle state. 
         [0007]    In a third embodiment, the disclosure includes an apparatus comprising a first communication component configured to allow a network to communicate with a mobile station, a second communications component configured to communicate with a connection service network, and an accounting module comprising an accounting data associated with the mobile station and a state data associated with the mobile station, wherein the second communications component independently communicates the state data and the accounting data to the connection service network. 
         [0008]    These and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims. 
     
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts. 
           [0010]      FIG. 1  is one embodiment of a communications network framework. 
           [0011]      FIG. 2  is a flowchart of an embodiment of the state monitoring program. 
           [0012]      FIG. 3  is a flowchart of an embodiment of the message processing program. 
           [0013]      FIG. 4  is an embodiment of a state change notification message. 
           [0014]      FIG. 5  is another embodiment of a state change notification message. 
           [0015]      FIG. 6  illustrates an exemplary general-purpose computer system suitable for implementing the several embodiments of the disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    It should be understood at the outset that although an illustrative implementation of one or more embodiments are provided below, the disclosed systems and/or methods may be implemented using any number of techniques, whether currently known or in existence. The disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents. 
         [0017]    One problem that occurs in the existing networks is that the connection service network does not know the state of the mobile station. For example, when the mobile station transitions from an active state to an idle state, the connection service network is unaware of such a transition. It would be beneficial if the notification of such a transition could occur with a minimal use of bandwidth and without disrupting other processes. Consequently, a need exists in the art for a method of notifying a connection service network of the state of a mobile station. 
         [0018]    Described herein is a method for an access network to notify a connection service network of a mobile station&#39;s state changes. When the mobile station initiates a session with an access network, the access network monitors the state of the mobile station and collects accounting data regarding the mobile station&#39;s session. When the mobile station undergoes a state change, for example by entering or exiting an idle state, the access network sends a state message to the connection service network using an accounting protocol. The state message includes the state of the mobile station, but does not include the accounting data. When the mobile station&#39;s session is terminated, the access network sends an accounting message to the connection service network that includes the accounting data. By only sending a single instance of the accounting data to the connection service network and using the accounting protocol to do so, in some embodiments the access network may reduces the bandwidth usage between the access network and the connection service network and the efficiency of the accounting processes at the connection service network are improved. 
         [0019]      FIG. 1  displays an embodiment of a system  100  comprised of a plurality of mobile stations (MSs)  130 , a plurality of access service networks (ASNs)  120 , a connection service network (CSN)  110 , and a third party network  102 . The ASN  120  may contain an accounting module  122  comprised of accounting data  124 , MS state data  126 , and a State Monitoring Program  200 . Similarly, the CSN  110  may contain an accounting module  112  comprised of accounting data  114 , MS state data  116 , and a Message Processing Program  300 . Each of these components of the system  100  is described in detail below. 
         [0020]    The MSs  130  may be any devices that use the ASN  120  to access the CSN  110  and/or the third party network  102 . In one embodiment, the MSs  130  are wireless devices that communicate with the ASN  120  via a wireless network. For example, the MSs  130  may be cellular telephones, notebook computers, personal digital assistants (PDAs), or any other wireless devices. Examples of suitable wireless networks include the worldwide interoperability for microwave access (WiMAX), Wireless Fidelity (Wi-Fi), code division multiple access (CDMA), wideband CDMA (WCDMA), orthogonal frequency division multiple access (OFDMA), time division multiple access (TDMA), global system for mobile communications (GSM), enhanced data for GSM evolution (EDGE), universal mobile telecommunications system (UMTS), advanced mobile phone service (AMPS), one of the Institute for Electrical and Electronic Engineers (IEEE) 802 wireless networks, or any other wireless network. In an alternative embodiment, the MSs  130  are devices that communicate with the ASN  120  via a wired network. For example, the MSs  130  may be a notebook computer plugged into a network connection. It should be understood that the system  100  may include any number of MSs  130 , and should not be limited to the three MSs  130  displayed in  FIG. 1 . 
         [0021]    In embodiments, the MSs  130  exist in one of various states, such as an active state and an idle state. The active state may be characterized by the exchange of data between a MS  130  and the CSN  110  or the third party network  102 . For example, a MS  130  may be in the active state when the user is using the MS  130  to actively upload, download, or otherwise exchange data with the CSN  110  and/or third party network  102  via the ASN  120 . Specifically, a user may be browsing the Internet to find a location for a restaurant or downloading a picture from an email received from a friend. In contrast, the idle state may be characterized by the lack of data exchange between a MS  130  and the CSN  110  or the third party network  102 . For example, the MS  130  may be in the idle state when the user is not using the MS  130  to actively upload, download, or otherwise exchange data with the CSN  110  and/or the third party network  102 . Specifically, the user may have stopped browsing, downloading, or using an email service. The idle state may optionally include those instances where the data exchange is limited to low-priority data, such as operations, administration, and maintenance (OAM) packets, exchanged between the ASN  120  and the MS  130 . 
         [0022]    The ASN  120  is a network that allows the MSs  130  to communicate with the CSN  110  and/or third party network  102 . Specifically, the ASN  120  is a fixed point that provides wireless coverage for the plural MSs  130 . The ASN  120  is typically limited to a specific location, such as a single tower, office, or commercial location, but may also be a distributed network of such locations. The ASN  120  may communicate with the MSs  130 , the CSN  110 , and/or third party network  102  using wireless, wired, and/or optical connections and protocols. For example, the ASN  120  may communicate with the MSs  130  using, for example, Wi-Fi or WiMax, and may communicate with the CSN  110  and/or third party network  102  using a variety of protocols, including Ethernet, Internet Protocol (IP), Asynchronous Transfer Mode (ATM), or any other suitable protocol. It should be understood that the system  100  may include any number of ASNs  120 , and should not be limited to the three ASNs  120  displayed in  FIG. 1 . 
         [0023]    One of the components of the ASN  120  is the accounting module  122 . The accounting module  122  collects accounting data  124  and state data  126  associated with the MSs  130 , and transmits the accounting data  124  and the state data  126  to the CSN  110 . The accounting data  124  may include any of a variety of different types of information associated with each MS  130 , including the total time that each MS  130  spent logged onto the ASN  120 , the amount of data downloaded to each MS  130 , the amount of data uploaded from each MS  130 , the bandwidth allocated to each MS  130 , the bandwidth actually used by each MS  130  for data transfer, the type of data transferred to or from each MS  130 , and/or other factors known to persons of ordinary skill in the art. In contrast, the state data  126  may include data related to the state of each MS  130 , such as the total time that each MS  130  spent in the active state, the total time that each MS  130  spent in the idle state, a detailed record of when each MS  130  changed states, and/or other factors known to persons of ordinary skill in the art. In an embodiment, the accounting data and/or the state data sent to the CSN  120  contain less than all of the accounting data  124  and the state data  126  collected by the ASN  120 . In addition, the ASN  120  may be connected to a plurality of CSNs  120 . As such, the ASN  120  may send different accounting data and/or state data to different CSNs  110 . To assist with the collection and transmission of the accounting data  124  and the state data  126  to the CSN  110 , the accounting module  122  may comprise of a State Monitoring Program (SMP)  200 , which is discussed in detail below. 
         [0024]    The CSN  110  is a network that accounts for the resources that the MSs  130  use. Specifically, the CSN  110  is a network that collects the accounting data from a plurality of ASNs  120 , organizes the accounting data, and bills the MS users. The ASN  120  is typically limited to a specific location, such as a single server, office, or commercial location, but may also be a distributed network of such locations. The CSN  110  may communicate with the ASN  120  and/or third party network  102  using wireless, wired, and/or optical connections and protocols. For example, the ASN  120  may communicate with the ASN  120  and/or third party network  102  using a variety of protocols, including Ethernet, Internet Protocol (IP), Asynchronous Transfer Mode (ATM), or any other suitable protocol. It should be understood that the system  100  may include any number of CSNs  110 , and should not be limited to the one CSN  110  displayed in  FIG. 1 . 
         [0025]    One of the components of the CSN  110  is the accounting module  112 . In an embodiment, the accounting module  112  uses the accounting data  114  received from the ASN  120  to bill the user for the services they receive. In addition, the CSN  110  may use the state data  116  to determine whether to send messages to the MS  130 , thereby waking the MSs  130  from their idle state. To assist the CSN  120  in determining whether to send messages to the MS  130 , the accounting module  112  may comprise of a Message Processing Program (MPP)  300 , which is discussed in detail below. 
         [0026]    The third party network  102  may be any of various types of networks that exchange data with the MS  130  and/or the CSN  110 . In embodiments, the third party network  102  may be a packet switched network (PSN), an intranet, the Internet, a local area network (LAN), a public switched telephone network (PSTN), or any other network known to persons of ordinary skill in the art. Alternatively, the third party network  102  may be another ASN  120  or another CSN  110 . Persons of ordinary skill in the art are aware of other embodiments of the third party network  102 . 
         [0027]      FIG. 2  is a flowchart of one embodiment of a State Monitoring Program (SMP)  200 . The SMP  200  may monitor the state of the MSs and communicate the state of the MSs to the CSN without including any accounting data within the state messages. The SMP  200  may also allocate resources away from idle MSs and allocate resources to active MSs as the MSs enter and exit the idle state. When a MS&#39; session terminates, the SMP  200  sends a single instance of the accounting data to the CSN. The SMP  200  is generally implemented at the ASN, but may be implemented within any of the system components described herein. 
         [0028]    The SMP  200  starts when an MS initiates a session at block  202 . Generally, the MS initiates a session in the active state by performing an action. For example, a user may log onto the ASN, upload data, download data, place a telephone call, receive a telephone call, or perform some other action that indicates that the MS is in an active state. However, it is also contemplated that the user may initiate a session in the idle state. For example, the user may want to establish connectivity with the ASN to verify that the ASN&#39;s resources will be available in the future, but may not be ready to use the resources at the time of session initiation. Thus, the SMP  200  may begin when the MS initiates a session in the idle state as well. After the session is initiated, the SMP  200  proceeds to block  204 . 
         [0029]    At block  204 , the SMP  200  collects the accounting data related to the MS&#39; session. When collecting the accounting data, the SMP  200  may collect a wide variety of information related to the MS&#39; session, such as the accounting data  124  discussed above. The SMP  200  may optionally collect state data related to the MS&#39; state, if desired. The SMP  200  may collect the accounting data intermittently or continuously until the MS&#39; session terminates. The SMP  200  then proceeds to block  206 . 
         [0030]    At block  206 , the SMP  200  determines whether the MS is in an idle state. In one embodiment, the MS indicates when the MS changes states, for example by sending a message to the ASN that the MS has entered or exited an idle state. In another embodiment, the state of the MS can be detected by analyzing the MS&#39; traffic patterns to determine whether the MS is in an idle state. For example, if the user is not using the MS but the MS is powered on, then the MS is in an idle state. Alternatively, if the MS is uploading or downloading data, then the MS is in an active state and is not in an idle state. However, data transfer may not be the sole indicator of the MS&#39; state. For example, if the user is interacting with the MS without transferring any data to or from the ASN, e.g. when the user is typing an email but not checking his email, then the MS may be in an active state. Thus, as part of the determination whether the MS is in an idle state, the SMP  200  may analyze the MS to determine whether the user is actually using the MS. In addition, the SMP  200  may be configured with a timer that allows a predetermined amount of time to pass before the SMP  200  determines that the MS has entered an idle state. The timer is advantageous because the timer prevents the SMP  200  from repeatedly determining that the MS enters and exits the idle state in a short amount of time. Such repeated determinations may create a multiplicity of state messages and reduce the advantages obtained by eliminating the accounting data from the state message. If the MS is in an idle state, then the SMP  200  proceeds to block  208 . If the MS is not in an idle state, then the SMP  200  proceeds to block  220 . 
         [0031]    When the SMP  200  determines that the MS is in an idle state, the SMP  200  may stop collecting accounting data as shown at block  208 . As discussed previously, accounting data relates to any of a variety of different types of information associated with each MS. The SMP  200  may discontinue the collection of such accounting data when the MS enters the idle state. For example, a user on a notebook computer may decide to stop browsing the Internet and decide to work on some other application on their notebook computer. In such a case, the user may not be using any of the ASN&#39;s resources, and may have entered an idle state, and thus the SMP  200  may stop collecting the accounting data. After the accounting data has stopped being collected, the SMP  200  proceeds to block  210 . 
         [0032]    At block  210 , the SMP  200  may notify the CSN of the state change. When the MS enters the idle state, the ASN may notify the CSN of the MS&#39; state change, for example, by sending a state message to the CSN. An example of the state message is shown in  FIG. 4  and discussed in detail below. The state message may be sent using an accounting protocol, such as RADIUS or DIAMETER, or may be sent using any other protocol known to persons of ordinary skill in the art. In a specific example, the state message is sent from the accounting module in the ASN directly to the accounting module in the CSN. Returning to  FIG. 2 , the SMP  200  then proceeds to block  212 . 
         [0033]    At block  212 , the SMP  200  may allow a reallocation of resources. In an embodiment, the SMP  200  may allow the ASN to reallocate at least one resource away from the MS while the MS is in the idle state, thereby allowing the resources to be used by other MSs. Specifically, when the MS is in the idle state, the MS may surrender at least some of its resources, and the MS&#39; surrendered resources may be temporarily allocated to the other MSs. For example, if the user closes their Internet browser on their notebook computer but is still connected to the ASN, the notebook computer may be in an idle state. In such a case, the ASN may reallocate the bandwidth previously used by the notebook computer to another MS, such as a PDA or another notebook computer, until the user&#39;s notebook computer exits the idle state. The SMP  200  then proceeds to block  214 . 
         [0034]    At block  214 , the SMP  200  determines whether the MS has changed states. The determination of whether the MS has changed states is similar to the determination at block  206 . However, at block  214  the SMP  200  is determining whether the MS has exited the idle state, rather than determining whether the MS has entered the idle state. If the SMP  200  determines that the MS has not changed states, the SMP  200  loops back to block  214 . When the SMP  200  determines that the MS has changed states, the SMP  200  proceeds to block  216 . 
         [0035]    At block  216 , the SMP  200  notifies the CSN of the MS&#39; state change. The notification of the state change is similar to the notification at block  210 . However, at block  216  the SMP  200  is notifying the CSN that the MS has exited the idle state, rather than notifying the CSN that the MS has entered the idle state. The SMP  200  then proceeds to block  218 , where the SMP  200  may reallocate the resources back to the MS. The reallocation of resources is similar to the reallocation of resources at block  212 . However, at block  218  the SMP  200  is reallocating resources back to the MS, rather than reallocating resources away from the MS. The SMP  200  then loops back to block  204 . 
         [0036]    At block  220 , the SMP  200  determines whether the MS&#39; session has been terminated. A variety of different indicators may be used to determine when the MS&#39; session has been terminated. For example, the data transfer between the ASN and the MS may stop, an Internet browser or other application may be closed, the user may finish downloading data from the CSN or another network, or the MS or CSN may send a signal to the ASN that the session is to be terminated. If the MS&#39; session terminates, then the SMP  200  proceeds to block  222 . If the MS&#39; session does not terminate, then the SMP  200  loops back to block  204 . 
         [0037]    At block  222 , the MS&#39; accounting data is sent to the CSN. As discussed earlier, the accounting data may include a wide variety of information related to the MS&#39; session. When the MS&#39; session is terminated, the accounting data from the MS&#39; session is sent to the CSN, for example, in an accounting message. An example of an accounting message is illustrated in FIG.  FIG. 5  and discussed in further detail below. The accounting data sent at block  222  is the only instance of the transmission of accounting data from the ASN to the CSN. This accounting data may include all or only some of the accounting data collected by the ASN. For example, after 30 minutes of browsing the Internet and downloading a 500-kilobyte (KB) picture file at one Megabit per second (Mbps), the user may log off of their Internet connection on their notebook computer, thereby terminating the session. When the session of the notebook computer is terminated, the accounting data sent to the CSN may indicate that the session was 30 minutes long and that 500 KB of data was transferred, but may not indicate the data transfer rate of one Mbps. After sending the accounting data at block  222 , the SMP  200  ends. 
         [0038]      FIG. 3  is a flowchart that illustrates one embodiment of the Message Processing Program (MPP)  300 . The MPP  300  may monitor the state of the MSs, determine the priority of the MS&#39;s incoming messages, and determine whether to send the messages to the MS. The MPP  300  may be implemented in the CSN but may also be implemented in any other component or a combination of components described herein. 
         [0039]    The MPP  300  starts when a message is received for the MS as shown at block  302 . When messages are sent to a MS, they are generally routed to the CSN so that a determination can be made as to which specific ASN the MS is connected to and forward the message onto that ASN. In an embodiment, the message received for the MS is an instant message or an incoming telephone call for the user&#39;s cellular telephone. Alternatively, the message may be an email message on a user&#39;s PDA. The MPP  300  then proceeds to block  304 . 
         [0040]    At block  304 , the MPP  300  determines whether the MS associated with the message is in an idle state. As discussed above, the MS may be in an active state or idle state. The CSN records the state of each MS, for example, using a state table that lists all of the MSs and the current state of each MS. When the ASN notifies the CSN of the MS&#39; state changes, e.g. via a state message, then the CSN may update the state table such that the state table always has the current state of each MS. When the MPP  300  receives a message intended for a particular MS, then the MPP  300  may access the state table to determine whether the particular MS is in an idle state. Alternatively, the CSN may determine the MS&#39; state using any other method, such as the methods discussed at blocks  206  and  214  of the SMP  200 . If the MS associated with the message is in an idle state, then the MPP  300  proceeds to block  306 . If the MS associated with the message is not in an active state, then the MPP  300  proceeds to block  316 . 
         [0041]    At block  306 , the message may be classified into one of a plurality of different levels of importance. For example, messages may be classified as either high priority messages or low priority messages. Although the classification criteria may vary from CSN to CSN, in one embodiment instant messages and telephone calls may be classified as high priority messages, while email and advertisements may be classified as low priority messages. Alternatively, the classification can be based on one or more of the message&#39;s properties, such as the message&#39;s destination address, the message&#39;s source address, the user that produced the message, the user that will receive the message, the type of data within the message, the port that the message was received on, or any other message property known to persons of ordinary skill in the art. If desired, the CSN may be configured with a policy to help the CSN determine how to classify the messages. Such a policy may classify the message based on various combinations of the factors described herein. After classifying the message, the MPP  300  proceeds to block  308 . 
         [0042]    At block  308 , the MPP  300  determines whether the message is a high priority message. When configuring the MPP  300 , a threshold can be set such that high priority messages are sent to the MS, while low priority messages are held within a message queue until the MS exits the idle state. Setting the threshold may be an important consideration because sending a message to the MS while the MS is in the idle state may cause the MS to exit the idle state. Exiting the idle state may be undesirable if the user wants the MS to remain in an idle state or the message is unimportant. Thus, high priority messages may be defined as those messages that meet or exceed the threshold, while low priority messages are those that fail to meet the threshold. Where there are multiple priority levels, the threshold can be set between any two levels. For example, if there are five priority levels, the threshold can be set between the second and third highest priority levels such that messages that are classified in the two highest priority levels are classified as high priority messages. If the message is a high priority message, then the MPP  300  proceeds to block  316 . However, if the message is not a priority message, then the MPP  300  proceeds to block  310 . 
         [0043]    At block  310 , the message is added to the message queue. The message queue contains the messages that fail to exceed the message threshold described above. These messages may stay in the message queue until the MS changes into an active state. After adding the message to the message queue, the MPP  300  proceeds to block  312 . 
         [0044]    At block  312 , the MPP  300  determines whether the MS is in an idle state. The determination at block  312  is similar to the determination at block  304 . If the MS is in an idle state, then the MPP  300  proceeds to block  314 . If the MS is not in an idle state, then the MPP  300  determines whether another message has been received at block  314 . The reception of a message at block  314  is similar to the reception of the message at block  302 . However, the message received at block  314  may not have the same priority as the message received at block  302 , thus the MPP  300  may have to process the message received at block  314  differently than the message received at block  302 . If another message has been received, the MPP  300  loops back to block  306 . If another message has not been received, the MPP  300  loops back to block  312 . 
         [0045]    At block  316 , any unsent messages are sent to the MS. The unsent messages may include the message received at block  302  and/or any messages residing in the message queue. If the MS is in an idle mode, then the MS will be awoken from the idle mode when the MS receives the message(s). After sending any unsent messages, the MPP  300  ends. 
         [0046]      FIG. 4  illustrates one embodiment of a state message  400 . The state message  400  is a message sent from an ASN to a CSN that indicates the state of at least one MS. The state message  400  contains state data  402 , which may include at least some of the state data  126  illustrated in  FIG. 1  and discussed above. Specifically, the state data  402  contains an indication of a particular MS and an indication of the current state of the MS, e.g. whether the MS is in the idle state or the active state. Alternatively, the state data  402  can contain an indication of the MS and an indication whether the MS has exited or entered a particular state, such as the idle state. During a session, an ASN may send one or a plurality of the state messages  400  to the CSN. 
         [0047]      FIG. 5  illustrates one embodiment of an accounting message  500 . The accounting message  500  is a message sent from an ASN to a CSN that contains the accounting data for at least one MS. The accounting message  500  contains accounting data  504 , which includes at least some of the accounting data  124  illustrated in  FIG. 1  and discussed above. Specifically, the accounting data  504  contains information related to the resources consumed by the MS during the course of the MS&#39; session. The accounting message  500  may also contain state data  502 , which may include at least some of the state data  126  illustrated in  FIG. 1  and discussed above. Unlike the state message illustrated in  FIG. 4 , each ASN sends only one accounting message  500  to the CSN per MS session. 
         [0048]    The network described above may be implemented on any general-purpose network component, such as a computer, node, router, switch, or bridge, with sufficient processing power, memory resources, and network throughput capability to handle the necessary workload placed upon it.  FIG. 6  illustrates a typical, general-purpose network component suitable for implementing one or more embodiments of a node disclosed herein. The network component  380  includes a processor  382  (which may be referred to as a central processor unit or CPU) that is in communication with memory devices including secondary storage  384 , read only memory (ROM)  386 , random access memory (RAM)  388 , input/output (I/O)  390  devices, and network connectivity devices  392 . The processor may be implemented as one or more CPU chips. 
         [0049]    The secondary storage  384  is typically comprised of one or more disk drives or tape drives and is used for non-volatile storage of data and as an over-flow data storage device if RAM  388  is not large enough to hold all working data. Secondary storage  384  may be used to store programs that are loaded into RAM  388  when such programs are selected for execution. The ROM  386  is used to store instructions and perhaps data that are read during program execution. ROM  386  is a non-volatile memory device that typically has a small memory capacity relative to the larger memory capacity of secondary storage. The RAM  388  is used to store volatile data and perhaps to store instructions. Access to both ROM  386  and RAM  388  is typically faster than to secondary storage  384 . 
         [0050]    While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated in another system or certain features may be omitted, or not implemented. 
         [0051]    In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.