User devices often transmit electronic messages between parties. The archiving of messages, associated with user devices owned and/or maintained by a particular group (e.g., a company, an organization, etc.), can be complex, and may infringe on privacy when the archiving of messages is not authorized by a user or a group associated with the messages.
The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
Systems and/or methods, as described herein, may provide secure management of message archiving services to archive messages (e.g., short message service (SMS) messages, multimedia message service (MMS) messages, a packet-based message, etc.) received/sent by one or more user devices associated with a particular group (e.g., a client, enterprise, company, organization, or the like).
In some implementations, the message management system may receive the message archiving request and may process the message archiving request in order to activate or deactivate message archiving services and to provide messages to the client archiving server for storage. For example, the message management system may determine whether the message archiving request includes valid authorization credentials and whether the UDID(s) of the user device(s) are associated with the group ID.
As an example, assume that the message archiving request includes a group ID of “G123,” authorization credentials (e.g., a password, a key, biometrics information, etc.), an instruction to activate message archiving services for the user device having an UDID identifying a first user device (e.g., “UD-1”), an identifier or network address identifying the client archiving server, and/or authorization parameters to access the client archiving server. Further, assume that the message management system stores the same authorization credentials for the group ID of “G123” as the authorization credentials included in the message archiving request. Further, assume that the message management system stores information identifying that the UDID is associated with the group ID of “G123.” Given these assumptions, the message management system may activate the message archiving services for UD-1. For example, the message management system may update a forwarding table that identifies UD-1 as a device whose messages are to be archived.
In some implementations, UD-1 may send/receive messages to/from multiple other user devices (e.g., UD-2 through UD-N, where N≧2). The message management system may facilitate the transmission of messages between UD-1 and UD-2 through UD-N and may identify that messages sent to/from UD-1 are to be archived (e.g., since the message archiving service has been activated). For example, when a message is sent to/from UD-1, the message management system may identify that the UDID, associated with the message, is included in the forwarding table and may provide messages, sent to/from UD-1 to the client archiving server. As a result, message archiving services for user devices may be activated and/or deactivated based on determining that a message archiving request was received from an authorized party (e.g., when authorization credentials included in the message archiving request match authorization credentials stored by the message management system). Further, the message archiving services for user devices may be activated and/or deactivated for those user devices associated with a group ID included in the message archiving request.
User device 210 may include a device capable of communicating via a network, such as network 290. For example, user device 210 may correspond to a mobile communication device (e.g., a smart phone or a personal digital assistant (PDA)), a portable computer device (e.g., a laptop or a tablet computer), a desktop computing device, a gaming device, a set-top box, or another type of device that may send/receive messages via message delivery system 280. In some implementations, user device 210 may send/receive messages, such as SMS messages, MMS, messages, IP packet-based messages, instant messages, e-mail messages, etc. The messages may include a header that identifies a UDID of user device 210.
Client device 220 may include a device capable of communicating via a network, such as network 290. For example, client device 220 may correspond to a mobile communication device (e.g., a smart phone or a PDA), a portable computer device (e.g., a laptop or a tablet computer), a desktop computing device, or another type of computing device. In some implementations, client device 220 may access message servicing system 240 to manage message services for one or more user devices 210 associated with a particular group ID. For example, client device 220 may access message archiving services to provide a message archiving instruction to modify archiving services for the one or more user devices 210. Additionally, or alternatively, client device 220 may access messaging services for the one or more user devices 210 (e.g., a service to simultaneously send messages to multiple user devices 210 associated with the group ID). Additionally, or alternatively, client device 220 may provide service modification instructions to modify services that the one or more user devices 210 may access (e.g., to modify a quantity of voice-call minutes that a particular user device 210 may access, cancel service for the particular user device 210, etc.). In some implementations, client device 220 may function as user device 210 and user device 210 may function as client device 220.
Client archiving server 230 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, client archiving server 230 may receive messages from management and forwarding server 250 that are to be archived (e.g., in accordance with message archiving services). Client archiving server 230 may store the messages for later retrieval by user device 210 and/or client device 220. In some implementations, client archiving server 230 may store a key that may be used to authenticate management and forwarding server 250 when receiving the messages.
Message servicing system 240 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, message servicing system 240 may provide messaging services for messaging subscribers. In some implementations, message servicing system 240 may be accessed via a web portal hosted by message servicing system 240, and may receive, from client device 220, service requests associated with a particular group ID. Message servicing system 240 may communicate with management and forwarding server 250 and/or billing server 260 to process the service requests (e.g., message archiving instructions to activate/deactivate archiving services, instructions add or remove particular services to/from user devices 210, etc.). For example, message servicing system 240 may communicate with management and forwarding server 250 to process a message archiving instruction (e.g., by providing management and forwarding server 250 with information regarding the message archiving instruction). Additionally, or alternatively, message servicing system 240 may communicate with billing server 260 to update billing information in accordance with services that are to be added or removed for user devices 210.
Management and forwarding server 250 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, management and forwarding server 250 may receive a message archiving instruction from message servicing system 240 or from client device 220 via web portal hosted by message servicing system 240. In some implementations, management and forwarding server 250 may process the message archiving instruction based on authorization credentials included in the message archiving instruction. Additionally, or alternatively, management and forwarding server 250 may communicate with billing server 260 to identify whether UDIDs included in the message archiving instruction are associated with the group ID included in the message archiving instruction (e.g., to authorize messages associated with the UDIDs to be archived). In some implementations, management and forwarding server 250 may maintain a message forwarding table that identifies messages that are to be forwarded based on a UDID, and information regarding a particular client archiving server 230 to forward the messages. Management and forwarding server 250 may receive a message from message delivery system 280 with header information identifying a UDID of the message, lookup the UDID in the forwarding table, and forward the message to the particular client archiving server 230 based on information stored by the forwarding table.
Billing server 260 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, billing server 260 may store a list of UDIDs associated with a particular group ID. In some implementations, billing server 260 may receive and process a request, received from management and forwarding server 250, for UDIDs associated with a group ID included in a message archiving instruction. Billing server 260 may maintain billing information for an account associated with a group and may update the billing information based on changes to services made on the account (e.g., changes in services made to user devices 210 associated with the group).
MTAS 270 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, MTAS 270 may include a message policy/protocol server and may receive (e.g., from management and forwarding server 250) a list of UDIDs and instructions to activate/deactivate archiving services for user devices 210 associated with the UDIDs. MTAS 270 may provide the list of UDIDs and instructions to activate/deactivate the archiving services to message delivery system 280.
Message delivery system 280 may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, message delivery system 280 may correspond to a short message service center (SMSC) or some other type of network element to store, forward, convert, and/or deliver SMS, MMS, packet-based messages, and/or some other type of message to user device 210. In some implementations, message delivery system 280 may maintain a forwarding table to forward a copy of a message to management and forwarding server 250 based on the UDID of the message. Message delivery system 280 may add a UDID of user device 210 to the forwarding table based on receiving an instruction to activate an archiving service for user device 210. Message delivery system 280 may remove a UDID of user device 210 based on receiving an instruction to deactivate the archiving service for user device 210.
Network 290 may include one or more wired and/or wireless networks. For example, network 290 may include a cellular network (e.g., a second generation (2G) network, a third generation (3G) network, a fourth generation (4G) network, a fifth generation (5G) network, a long-term evolution (LTE) network, a global system for mobile (GSM) network, a code division multiple access (CDMA) network, an evolution-data optimized (EVDO) network, or the like), a public land mobile network (PLMN), and/or another network. Additionally, or alternatively, network 290 may include a local area network (LAN), a wide area network (WAN), a metropolitan network (MAN), the Public Switched Telephone Network (PSTN), an ad hoc network, a managed Internet Protocol (IP network, a virtual private network (VPN), an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks.
The quantity of devices and/or networks in environment is not limited to what is shown in
As shown in
In some implementations, management and forwarding server 250 may authorize message archiving instruction 305 based on the group ID and the authorization information. For example, management and forwarding server 250 may store authorization information based on the group ID and may authorize message archiving instruction 305 when the authorization information, included in message archiving instruction 305, matches authorization information stored by management and forwarding server 250.
Based on authorizing message archiving instruction 305, management and forwarding server 250 may provide group UDID list request 310 to billing server 260. In some implementations, UDID list request 310 may include the group ID included in message archiving instruction 305 and a request for a list of UDIDs associated with the group ID. In some implementations, UDID list request 310 may further include authorization information to permit management and forwarding server 250 to receive the list of UDIDs. Billing server 260 may receive UDID list request 310, authorize management and forwarding server 250 to receive the list of UDIDs (e.g., based on the authorization information included in UDID list request 310), identify the list of UDIDs based on the group ID, and provide group UDID list response 315 (e.g., a response including the list of UDIDs).
Management and forwarding server 250 may perform UDID archive list determination function 320 based on receiving group UDID list response 315. Management and forwarding server 250 may generate UDID archive list 330 including a group of UDIDs that are included in message archiving instruction 305 and also included in the UDID list of UDID list response 315. For example, assume that message archiving instruction 305 includes a list of five UDIDs (e.g., UDID 1, UDID 2, UDID 3, UDID 4, and UDID 5) and an instruction to activate message archiving services for user devices 210 corresponding to the list of the five UDIDs. Further, assume that group UDID list response 315 includes UDID 1, UDID 2, UDID 3, UDID 4, and UDID 6. Given these assumptions, UDID archive list 330 may include UDID 1, UDID 2, UDID 3, and UDID 4, but may not include UDID 5 (e.g., since UDID 5 is not associated with the group ID identified by message archiving instruction 305 indicating that messages, associated with UDID 5, may not be archived for the group associated with the group ID). In some implementations, UDID archive list 330 may also include instructions to activate and/or deactivate message archiving services for the UDIDs in accordance with message archiving instruction 350.
Management and forwarding server 250 may also perform forwarding table update function 325 to update a forwarding table that identifies messages that are to be forwarded to client archiving server 230 for storage. For example, based on an instruction to activate a message archiving service included in message archiving instruction 305, management and forwarding server 250 may add a UDID to the forwarding table, information identifying types of messages to forward, and information identifying a particular client archiving server 230 that is to receive the forwarded messages for storage. In some implementations, the forwarding table may include information identifying a particular client archiving server 230 that is to receive messages associated with a particular UDID, and authorization information used to communicate with the particular client archiving server 230 to provide the messages. An example of a message forwarding table is described below with respect to
Management and forwarding server 250 may provide UDID archive list 330 to MTAS 270. Based on receiving UDID archive list 330, MTAS 270 may store policy information that identifies whether message archiving services are active or inactive based on UDID. In some implementations, MTAS 270 may generate and provide activation/deactivation instruction 335 to message delivery system 280. In some implementations, activation/deactivation instruction 335 may include information corresponding to UDID archive list 330, such as a list of UDIDs, and instructions to activate and/or deactivate archiving services associated with the UDIDs.
Message delivery system 280 may receive activation/deactivation instruction 335, and may perform forwarding table update function 340 based on receiving activation/deactivation instruction 335. For example, message delivery system 280 may update a forwarding table to reflect instructions included in activation/deactivation instruction 335. As an example, assume that activation/deactivation instruction 335 identifies that incoming and outgoing messages for UDID 1 are to be archived and that activation/deactivation instruction 335 identifies that incoming MMS messages are no longer to be archived for UDID 2. Given these assumptions, message delivery system 280 may update the forwarding table to reflect that incoming and outgoing messages for UDID 1 are to be archived and that incoming MMS messages are no longer to be archived for UDID 2.
Message delivery system 280 may receive message 345 (e.g., from user device 210-1 destined for user device 210-2). In some implementations, message 345 may include information identifying a UDID of user device 210-1, a UDID of user device 210-2, information identifying a type of message, and/or message content. In some implementations, message delivery system 280 may perform message forwarding function 350 based on receiving message 345. For example, message delivery system 280 may look up the UDID of user device 210-1 and the UDID of user device 210-2 in the forwarding table to determine whether message 345 is to be forwarded to management and forwarding server 250 for archiving (e.g., based on a UDID and/or a message type, such as an outgoing SMS message, an incoming MMS message, etc.). In
Management and forwarding server 250 may receive message 345 and may perform message forwarding function 355 based on receiving message 345. In some implementations, management and forwarding server 250 may determine a particular client archiving server 230 to forward message 345 for storage by client archiving server 230. For example, management and forwarding server 250 may look up the UDIDs associated with message 345 (e.g., the UDIDs of user device 210-1 and user device 210-2) in a message forwarding table maintained by management and forwarding server 250 that identifies the particular client archiving server 230 is to be provided with message 345 based on UDID and/or the message type. In some implementations, the forwarding table may identify authorization information used to communicate with client archiving server 230 to provide message 345.
As an example, assume that message 345 includes information to identify a UDID of user device 210-1 and an “outgoing SMS” message typing. Further, assume that the forwarding table, maintained by management and forwarding server 250, identifies that outgoing SMS messages provided by the UDID of user device 210-1 are to be forwarded to a particular client archiving server 230. Further, assume that the forwarding table includes information that may be used to communicate with the particular client archiving server 230 to provide message 345. Given these assumption, management and forwarding server 250 may provide message 345 to the particular client archiving server 230. As a result, message archiving settings for particular UDIDs associated with a group ID may be securely updated, and messages associated with the UDIDs may be archived by a particular client archiving server 230 associated with the group ID. Further, only messages of UDIDs associated with the group ID may be archived.
While a particular series of operations and/or data flows have been described above with regards to
As shown in
Process 400 may also include requesting a group UDID list (block 420). For example, as described above with respect to group UDID list request 310, management and forwarding server 250 may provide group UDID list request 310 based on receiving and authorizing the message archiving instruction. In some implementations, UDID list request 310 may include the group ID included in message archiving instruction 305 and a request for a list of UDIDs associated with the group ID. In some implementations, UDID list request 310 may further include authorization information to permit management and forwarding server 250 to receive the list of UDIDs.
Process 400 may further include receiving a group UDID response (block 430). For example, management and forwarding server 250 may receive group UDID response 315 from billing server 260. In some implementations, group UDID response 315 may include a list of UDIDs associated with the group ID in message archiving instruction 305.
Process 400 may also include determining a UDID archive list (block 440). For example, as described above with respect to UDID archive list determination function 320, management and forwarding server 250 may generate UDID archive list 330 including a group of UDIDs that are included in message archiving instruction 305 and also included in the UDID list of UDID list response 315 (e.g., a list of UDIDs that are associated with the group ID and whose archiving settings are permitted to be modified). In some implementations, management and forwarding server 250 may provide a response to client device 220 identifying UDIDs whose message archiving settings are not permitted to be modified when those UDIDs are not associated with the group ID provided as part of message archiving instruction 305.
Process 400 may further include updating a message forwarding table (block 450). For example, as described above with respect to forwarding table update function 325, management and forwarding server 250 may update the message forwarding table that identifies messages that are to be forwarded to client archiving server 230 for storage. In some implementations, management and forwarding server 250 may update the message forwarding table to reflect archiving activation/deactivation instructions included in message archiving instruction 305. In some implementations, the forwarding table may include information identifying a particular client archiving server 230 that is to receive messages associated with a particular UDID, and authorization information used to communicate with the particular client archiving server 230 to provide the messages. An example of a message forwarding table is described below with respect to
Process 400 may also include providing the UDID archive list to an MTAS (block 460). For example, as described above, management and forwarding server 250 may provide UDID archive list 330 to MTAS 270. In some implementations, UDID archive list 330 may include instructions to activate and/or deactivate message archiving services for UDIDs included in the UDID archive list. In some implementations, MTAS 270 may direct message delivery system 280 to update a forwarding table, maintained by message delivery system 280, based on the instructions to activate and/or deactivate message archiving services for UDIDs included in the UDID archive list.
Process 400 may further include receiving a message from a message delivery server (block 470). For example, as described above, management and forwarding server 250 may receive the message from message delivery system 280 when message delivery system 280 receives the message destined from user device 210-1 to user device 210-2 and determines that a UDID of user device 210-1 and/or user device 210-2 is included in the forwarding table maintained by message delivery system 280.
Process 400 may also include looking up the UDIDs and/or the message type in the message forwarding table (block 480). For example, management and forwarding server 250 may look up the UDIDs associated with the message (e.g., the UDIDs of user device 210-1 and user device 210-2) and/or the message type in the message forwarding table maintained by management and forwarding server 250 that identifies a particular client archiving server 230 is to be provided with message 345 based on UDID and/or the message type. Additionally, or alternatively, management and forwarding server 250 may look up some other attribute associated with the message in the message forwarding table to identify the particular client archiving server 230 that is to be provided with message 345. For example, management and forwarding server 250 may look up a telephone number, a message type, a mobile device number, an international mobile equipment identifier, integrated circuit card identifier and/or some other attribute associated with the message. In
Process 400 may further include providing the message to the particular client archiving server (block 490). For example, management and forwarding server 250 may request to communicate with the particular client archiving server 230 based on a network address of the particular client archiving server 230 and/or authorization information associated with the particular client archiving server 230. In some implementations, management and forwarding server 250 may provide the message to the particular client archiving server 230 such that client archiving server 230 may store the message for future access. As a result, message archiving settings for particular UDIDs associated with a group ID may be securely updated, and messages associated with the UDIDs may be archived by a particular client archiving server 230 associated with the group ID. Further, only messages of UDIDs associated with the group ID may be archived.
As shown in
Process 500 may further include updating a forwarding table (block 520). For example, as described above with respect to forwarding table update function 340, message delivery system 280 may update a forwarding table, maintained by message delivery system 280, to reflect instructions included in activation/deactivation instruction 335. As an example, assume that activation/deactivation instruction 335 identifies that incoming and outgoing messages for UDID 1 are to be archived and that activation/deactivation instruction 335 identifies that incoming MMS messages are no longer to be archived for UDID 2. Given these assumptions, message delivery system 280 update the forwarding table to reflect that incoming and outgoing messages for UDID 1 are to be archived and that incoming MMS messages are no longer to be archived for UDID 2.
Process 500 may also include receiving messages from a user device (block 530). For example, message delivery system 280 may receive the message (e.g., from user device 210-1 destined for user device 210-2). In some implementations, the message may include information identifying a UDID of user device 210-1, a UDID of user device 210-2, information identifying a type of message, and/or message content.
Process 500 may further include looking up the UDIDs and/or the message type in the forwarding table (block 540). For example, as described above with respect to message forwarding function 350, message delivery system 280 may look up the UDID of user device 210-1 and the UDID of user device 210-2 in the forwarding table to determine whether message 345 is to be forwarded to management and forwarding server 250 for archiving (e.g., based on a UDID and/or a message type, such as an outgoing SMS message, an incoming MMS message, etc.). In some implementations, the forwarding table may store some other attribute of the message that may identify whether the message is to be provided to management and forwarding server 250.
Process 500 may also include identifying a UDID and/or message type of the message in the forwarding table and providing the message (block 550). For example, message delivery system 280 may identify that the UDID of user device 210-1 and/or user device 210-2 and/or the message type matches information stored by the forwarding table and provide the message to management and forwarding server 250. In some implementations, message delivery system 280 may identify some other attribute of the message and provide the message to the management and forwarding server based on matching attributes of the message with information stored by the forwarding table.
While
A particular instance of data structure 600 may contain different information and/or fields than another instance of data structure 600. In some implementations, data structure 600 may correspond to information included in a message forwarding table maintained by management and forwarding server 250. A portion of information stored by data structure 600 may correspond to information included in a forwarding table maintained by message delivery system 280. Information stored by data structure 600 may correspond to message archiving instructions provided by client device 220 (e.g., from a user of client device 220 via a user interface and/or a web portal having fields and/or selections to permit a user to input message archiving instructions).
In some implementations, each entry in data structure 600 may identify message archiving instructions for a particular UDID. For example, each entry may identify the UDID, message types that are to be archived, and information regarding a particular client archiving server 230 that is to receive messages (e.g., a network address of client archiving server 230 and/or authorization information to access client archiving server 230, such as a key, a password, etc.).
In the example shown in
In some implementations, data structure 600 may be stored by management and forwarding server 250 and a portion of data structure 600 may be stored by message delivery system 280. For example, message delivery system 280 may store information identifying that particular types of messages associated with particular UDIDs are to be forwarded to management and forwarding server 250. Once management and forwarding server 250 receives a message, management and forwarding server 250 may look up attributes of the message (e.g., UDIDs and/or types associated with the message) with information stored by data structure 600.
As described above, information stored by data structure 600 may correspond to message archiving instructions provided by client device 220. In some implementations, information stored by data structure 600 may be populated and/or updated when management and forwarding server 250 performs forwarding table update function 325 and/or when message delivery system 280 performs forwarding table update function 340.
While particular fields are shown in a particular format in data structure 600, in practice, data structure 600 may include additional fields, fewer fields, different fields, or differently arranged fields than are shown in
Referring to
In some implementations, selections of activation/deactivation instructions for MDNs and/or delivery instructions via interface 700 may correspond to a message archiving instruction provided to management and forwarding server 250. In some implementations, message servicing system 240 may receive the selections via message servicing system 240, generate the message archiving instruction based on the selections, and provide the message archiving instruction to management and forwarding server 250. Additionally, or alternatively, client device 220 may access management and forwarding server 250 via message servicing system 240 and may provide the selections to management and forwarding server 250. As described above, management and forwarding server 250 may instruction to activate or deactivate message archiving services for MDNs associated with the group ID without activating or deactivating message archiving services for MDNs not associated with the group ID.
While a particular example is shown in
As shown in (4), MTAS 270 may receive the UDID archive list and may update policy information and message processing instructions for message delivery system 280. As shown in (5), MTAS 270 may provide activation/deactivation instructions including instructions to activate and/or deactivate message forwarding to management and forwarding server 250. In some implementations, message delivery system 280 may update a forwarding table that identifies messages that are to be provided to management and forwarding server 250 (and subsequently provided to client archiving server 230 for archiving) based on the activation/deactivation instructions. In
While a particular example is shown in
As described above, message archiving services for UDIDs associated with respective user devices 210 may be activated and/or deactivated based on determining that a message archiving instruction is received from an authorized party (e.g., when authorization credentials included in the message archiving instruction match authorization credentials stored by management and forwarding server 250). Further, the message archiving services for UDIDs may be activated and/or deactivated for those UDIDs associated with a group ID included in the message archiving instruction.
Bus 910 may include one or more communication paths that permit communication among the components of device 900. Processor 920 may include a processor, microprocessor, or processing logic that may interpret and execute instructions. Memory 930 may include any type of dynamic storage device that may store information and instructions for execution by processor 920, and/or any type of non-volatile storage device that may store information for use by processor 920.
Input component 940 may include a mechanism that permits an operator to input information to device 900, such as a keyboard, a keypad, a button, a switch, etc. Output component 950 may include a mechanism that outputs information to the operator, such as a display, a speaker, one or more light emitting diodes (“LEDs”), etc.
Communication interface 960 may include any transceiver-like mechanism that enables device 900 to communicate with other devices and/or systems. For example, communication interface 960 may include an Ethernet interface, an optical interface, a coaxial interface, or the like. Communication interface 960 may include a wireless communication device, such as an infrared (“IR”) receiver, a Bluetooth® radio (Bluetooth is a registered trademark of Bluetooth SIG, Inc.), radio, or the like. The wireless communication device may be coupled to an external device, such as a remote control, a wireless keyboard, a mobile telephone, etc. In some embodiments, device 900 may include more than one communication interface 960. For instance, device 900 may include an optical interface and an Ethernet interface.
Device 900 may perform certain operations relating to one or more processes described above. Device 900 may perform these operations in response to processor 920 executing software instructions stored in a computer-readable medium, such as memory 930. A computer-readable medium may be defined as a non-transitory memory device. A memory device may include space within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory 930 from another computer-readable medium or from another device. The software instructions stored in memory 930 may cause processor 920 to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The foregoing description provides illustration and description, but is not intended to be exhaustive or to limit the possible implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations.
It will be apparent that different examples of the description provided above may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these examples is not limiting of the implementations. Thus, the operation and behavior of these examples were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement these examples based on the description herein.
Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of the possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one other claim, the disclosure of the possible implementations includes each dependent claim in combination with every other claim in the claim set.
No element, act, or instruction used in the present application should be construed as critical or essential unless explicitly described as such. An instance of the use of the term “and,” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Similarly, an instance of the use of the term “or,” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Also, as used herein, the article “a” is intended to include one or more items, and may be used interchangeably with the phrase “one or more.” Where only one item is intended, the terms “one,” “single,” “only,” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.