Vehicles can connect to networks in order to perform various functions.
This disclosure is generally directed to dynamic connectivity configuration for vehicular functions. For example, this technical solution can temporarily activate network access for authorized software updates as well as other network-based functions of a vehicle. A vehicle can enter an inactive mode, in which data transmissions of the vehicle network can be significantly limited or disabled. When the vehicle is in the inactive mode, it can be challenging or not possible to perform certain functions, such as over-the-air software updates. In order to perform authorized network-based functions, this technical solution can facilitate or otherwise cause the activation of a network connection between the vehicle and the network when the vehicle is in the inactive mode. For example, when a software update is ready for download to a computing system of the vehicle, the server can recognize the connection is unavailable, send a notification to a mobile application on the driver's mobile phone requesting temporary connectivity access, and use the phone (e.g., via a short-range wireless communication protocol such as Bluetooth) to communicate with the vehicle to switch on the network of the vehicle or to establish a limited network connection to the server. Thus, this technical solution can provide network connectivity for authorized or permitted vehicle functionalities when the vehicle is in the inactive mode.
At least one aspect is directed to a system. The system can include a data processing system including one or more processors coupled with memory. The system can identify a software update to install on a computing system in a vehicle remote from the data processing system. The system can determine that a network connection to the computing system used to provide software updates from the data processing system to the vehicle is inactive. The system can transmit, responsive to the identification of the software update for installation and the determination that the network connection to the computing system is inactive, to a mobile device associated with an identifier of the vehicle, a request to activate the network connection of the computing system to download the software update for installation on the computing system. The system can provide, via the network connection of the computing system activated responsive to the request transmitted to the mobile device, the software update to the computing system for installation.
At least one aspect is directed to a method. The method can include identifying, by a data processing system including one or more processors coupled with memory, a software update to install on a computing system in a vehicle remote from the data processing system. The method can include determining, by the data processing system, that a network connection to the computing system used to provide software updates from the data processing system to the vehicle is inactive. The method can include transmitting, by the data processing system responsive to the identification of the software update for installation and the determination that the network connection to the computing system is inactive, to a mobile device associated with an identifier of the vehicle, a request to activate the network connection of the computing system to download the software update for installation on the computing system. The method can include providing, by the data processing system via the network connection of the computing system activated responsive to the request transmitted to the mobile device, the software update to the computing system for installation.
At least one aspect is directed to a vehicle. The vehicle can include a computing system including one or more processors, coupled with memory. The vehicle can receive, via a user interface of the vehicle, a request to deactivate a network connection of the computing system. The vehicle can deactivate, responsive to the request, the network connection. The vehicle can establish a wireless communication session with a mobile device separate from the computing system of the vehicle. The vehicle can receive, via the wireless communication session, an instruction from the mobile device to activate the network connection of the computing system to download a software update from a data processing system remote from the computing system. The vehicle can download, subsequent to activation of the network connection, the software update for installation by the computing system. The vehicle can deactivate, subsequent to download of the software update, the network connection.
These and other aspects and implementations are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of various aspects and implementations, and provide an overview or framework for understanding the nature and character of the claimed aspects and implementations. The drawings provide illustration and a further understanding of the various aspects and implementations, and are incorporated in and constitute a part of this specification. The foregoing information and the following detailed description and drawings include illustrative examples and should not be considered as limiting.
The accompanying drawings are not intended to be drawn to scale. Like reference numbers and designations in the various drawings indicate like elements. For purposes of clarity, not every component can be labeled in every drawing. In the drawings:
Following below are more detailed descriptions of various concepts related to, and implementations of, methods, apparatuses, and systems of dynamic connectivity configuration for vehicular functions. The various concepts introduced above and discussed in greater detail below can be implemented in any of numerous ways.
The present disclosure is directed to systems and methods of dynamic connectivity configuration for vehicular functions, such as temporarily activating network access for authorized network-based functions of a vehicle operating in an inactive mode. The system can include devices and methods for identifying a software update for a computing system of a vehicle and temporarily allowing network connectivity to the computing system for installing the software update. In this manner, inactive mode can be suspended for predetermined, authorized network actions, such as installation of software updates or emergency alerts.
A vehicle can be equipped with an inactive mode. The inactive mode can be a user-initiated mode of operation of the vehicle in which the user (e.g., driver) chooses to suspend network connectivity to the vehicle. Suspension of network connectivity to the vehicle can preserve battery energy, reduce network bandwidth consumption, or improve network security of the vehicle, as the vehicle may not connect to outside networks and services while operating in inactive mode. However, when the vehicle is in the inactive mode, it can challenging to perform certain network-based functions, such as navigation and real-time mapping, over-the-air software updates, certain driver assist functions, remote support and service, or access certain third-party applications.
To improve or facilitate certain functions of the vehicle when in the inactive mode, while reducing or minimizing battery and network consumption and maintaining network security, this technical solution can temporarily activate predetermined or limited network traffic to facilitate the performance of a function, such as a software update.
The data repository 110 can be any memory, storage, or cache for storing information or data structures that facilitates the data processing system 102 to activate the network connection for network-based functions of the vehicle. The data repository 110 can contain any information about the system 100 and can allow that information to be accessed by any components of the data processing system 102, such as by communication methods described herein. The data repository 110 can contain at least one of the policy 112, the profile 114, the apps 116, or the threshold 118. The information or data structures (e.g., tables, lists, or spreadsheets) contained within the data repository 110 can be dynamic and can change periodically (e.g., daily or every millisecond), via an input from a user, via information from the sensor 134, via inputs from subcomponents of the data processing system 102 (e.g. the version monitor 104 or the application delivery component 108), or via an external update to the system 100, for example. Information in the data repository 110 can be stored in any kind of memory, such as a cloud or hard drive. The data repository 110 can include, for example, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), error-correcting code (ECC), read only memory (ROM), programmable read only memory (PROM), or electrically erasable read only memory (EEPROM). The data repository 110 can be accessed at any time and by any component of system 100. For example, the data repository 110 can be accessed by the system 100 at least periodically, in response to the version monitor 104 detecting a software update to install on the computing system 132, in response to a computing system 132 activating a network connection to the computing system, or in response to a change in the policy 112 or in the vehicle 130 detected by the computing system 132.
The network 101 can include any kind of communications link, cables, transmitters, receivers, transceiver, logic circuit, communication chip, communication network (e.g. a local area network (“LAN”), a wide area network (“WAN”), or an inter-network (the internet) cellular network (e.g., 3G, 4G, or 5G)), configured to allow or facilitate communication, transmission, reception, or connection with the components of the system and with outside systems. The network 101 can be a private network or a public network. The network 101 can enable communication with the data processing system 102, the computing system 132, or the mobile device 120, among others.
The computing system 132 can provide one or more functions or otherwise facilitate controlling the vehicle 130. The computing system 132 can perform several functionalities for the vehicle 130, including navigation, telemetry, communications (including phone calls, MMS, SMS, and RCS), alerting, range estimation, or recording, among others. The computing system 132 can include one or many of, for example, a first connection module 136, a second connection module 138, a database, an application manager, a gateway server, a VPN, a firewall, a file server or a computer. The computing system 132 can be referred to as a remote machine or a node. The computing system 132 can be disposed within the vehicle 130. The computing system 132 can be configured to perform functions for the network 101, the vehicle 130, or the data processing system 102. For example, the computing system 132 can interface with the data processing system 102 via the network 101 to receive network actions from the data processing system 102, such as software updates. The computing system 132 can operate according to one or more types of operating systems (e.g., WINDOWS XT, Unix, Linus, MacOS). The computing system 132 can coordinate and provide functions for the data processing system 102. For example the computing system 132 can be configured to transmit data from the sensors 134 to the data processing system 102. The computing system 132 can operate or include any of the systems of
The computing system 132 can include one or more connection modules to facilitate communications between the network 101, the mobile device 120, or another device capable of wireless communication as described herein. The one or more connection modules of the computing system 132 can include the first connection module 136 and the second connection module 138. The first connection module 136 and the second connection module 138 can enable, activate, deactivate, monitor, or control one or more communication channels of the vehicle 130. The first connection module 136 and the second connection module 138 can be configured to communicate with each other, the components of the vehicle 130, the data processing system 102. the network 101, or the mobile device 120, among others. Each connection module of the connection modules 136 and 138 can include a network connection or a communication channel to facilitate communications within the vehicle 130 and with external systems. Each connection module of the connection modules 136 and 138 can correspond to different communication parameters for controlling the one or more communication channels of the vehicle 130.
As an illustrative example, the first connection module 136 can correspond to a telecommunications module (TCM) of the vehicle 130. The TCM can facilitate, monitor, or control communications between the vehicle and external systems using a WAN such a LTE, 3G, 4G, or 5G. For example, the TCM can control communications between the vehicle 130 and a cell tower to facilitate a cellular phone call from the computing system 132 of the vehicle 130. The second connection module 138 can correspond to a vehicle access system (VAS) of the vehicle 130. The VAS can communicate with, monitor, or control a gate, door, or access for the vehicle. For example, the VAS can communicate to a gate that the vehicle 130 is approaching and open the gate for the vehicle 130. In this example, the first connection module 136 and the second connection module 138 can correspond to communications between the vehicle and different external systems. The first connection module 136 and the second connection module 138 can each correspond to communications between the vehicle and external systems, between the vehicle and internal vehicle systems, or a combination thereof.
The first connection module 136 can correspond to a first set of wireless communications and the second connection module 138 can correspond to a second set of wireless communications. As an illustrative example, the first connection module 136 can control, monitor, or communicate using a WAN or medium area network (MAN) such as WiFi, LTE, or satellite, and the second connection module 138 can control, monitor, or communicate using a LAN or PAN such as Bluetooth or near-field communication (NFC). More connection modules can be included than those described herein. Each connection module can be associated with one or more communication channels or network connections, or parameters for controlling the communication channels or network connections.
The connection between the network 101 and the computing system 132, such as between the network 101 and the first connection module 136 or the second connection module 138, can be disconnected, disabled, blocked, or otherwise disallowed in order to put the vehicle 130 in an inactive mode. For example, the computing system 132 can receive an instruction via a user interface of the vehicle 130 to cause the vehicle 130 to enter the inactive mode. Operating the vehicle 130 without a connection between the computing system 132 and the network 101 or another external network can be referred to as an inactive mode for the vehicle 130. The inactive mode can include the computing system 132 of the vehicle 130 not maintaining or blocking a network connection. The network connection can be or include a one-or two-way communication between the vehicle 130 (or components, such as the first connection module 136 or the second connection module 138) and the network 101, or the data processing system 102, among others. For example, the network connection can be the connection of the computing system 132 to a WiFi, LTE, or other wireless network.
A one-way communication can refer to a communication including only downloads or only uploads. For example, a one-way communication can include the vehicle 130 only receiving data packets including a payload from the network 101 and the vehicle 130 not transmitting information or a payload to the network 101. Due to the nature of wireless communications, a one-way communication can still include certain signals, data packets, or data frames to be transmitted in both directions. However, a one-way communication can enable the transmittal of information, payload, or data in only one direction (e.g., only downloads or only uploads) while preserving the ability of the network connection to transmit non-information related packets, such as an acknowledgement, a goodbye, or a hello, among others, to allow a handshake between the vehicle 130 and the network 101. As an example, while the vehicle 130 is in inactive mode, the network 101 can transmit data to the vehicle 130 for download, but the vehicle 130 may not upload data to the network 101. Furthermore, in this example, the vehicle 130 may transmit an “ACK” frame, a packet header, or a “GET” request without compromising the one-way communication. In this manner, data may only be transmitted one-way, while the security and reliability of the network connection is maintained, such as through a handshake protocol.
While the vehicle 130 is in inactive mode, the vehicle 130 may not access network connections such as WiFi, location services, 4G, 5G, LTE, or other outside network systems. In this manner, downloads and uploads for the computing system 132 can be stalled or paused. In some implementations, inactive mode can be caused by the network connection between the vehicle 130 and outside systems being outside of a range of connectivity. For example, if the vehicle 130 is outside of a zone of a network (e.g., LTE or WiFi), the vehicle 130 can be in inactive mode. The vehicle 130 can be in inactive mode if the computing system 132 is unable to connect with an outside system (e.g., network 101). For example, the vehicle 130 can be in inactive mode if the data processing system 102 does not receive a communication from the computing system 132 within the threshold 118. The threshold 118 can be any time threshold for the data processing system 102 to perform an action, such as making a determination of inactive mode or transmitting a request.
The user can choose to operate the vehicle 130 in inactive mode. The user of the vehicle 130 can choose to disable the network connection between the vehicle 130 and systems outside the vehicle 130 (e.g., network 101). The user can choose to disable the network connection of the computing system 132 via a user interface (e.g., a user interface 500 described herein) displaying through the computing system 132, or through the mobile device 120, among others.
The selection of inactive mode can be associated with a profile 114. The profile 114 can correspond to various data and preferences, such as the decision to operate in inactive mode. The profile 114 can include driving habits of a user associated with the profile 114. For example, the profile 114 can include average speeds, common locations, or data security settings of the user. The profile 114 can store information associated with network traffic management for the computing system 132. Network traffic management information of the profile 114 can correlate with a network connection of the computing system 132. While the vehicle 130 is in inactive mode, the system 100 can determine that a network action can be performed while in inactive mode. A network action can include a software update, an emergency communication, or an actuation of a component of the vehicle 130 (such as an alarm or horn sounding), among others, from the data processing system 102.
The policy 112 can be any set of rules or parameters for determining to allow network access to the computing system 132 for certain network actions while the vehicle 130 is in inactive mode. The policy 112 can include conditions for allowing the computing system 132 of the vehicle 130 to make a connection to the network 101 for performance of one or more network actions. The policy can be pre-configured, or a driver or user of the vehicle 130 can determine the policy 112. The user can set one or more policies 112 through the computing system 132 or the mobile device 120. The policies 112 can be different for different profiles 114. For example, a first profile can select a different policy to manage network traffic than a second profile of the same vehicle 130. The policy 112 can be time-based or schedule-based. For example, the user can select that an action prompting a network connection during inactive mode only trigger a connectivity request during certain hours. Therefore, by utilizing the policy 112, a user of the vehicle 130 can customize or select which software updates to receive while the vehicle 130 is inactive, or can customize or select which communication methods or connections modules 136 or 138 can receive or transmit communications. In this manner, one-way communication between the vehicle 130 and the network 101 can be selected to be activated for one or more of the connection modules 136 or 138 based on the policy 112.
The policy 112 can include different classifications of network actions for determining allowance of network access to the computing system 132. For example, the policy 112 can include a first classification of software updates and a second classification of software updates. The policy 112 can include that the first classification is for installation and the second classification is not for installation. The policy 112 can include that the first classification is for installation during inactive mode and the second classification is not for installation during inactive mode.
The classifications can correspond to a type of vehicle function to be performed, or a type of software update. For example, a first classification can correspond to a navigation system of the vehicle 130, and a second classification can correspond to an audio system of the vehicle 130. The first classification corresponding to the navigation system can be identified by the policy 112 to be installed and the second classification corresponding to the audio system may not be identified by the policy 112 to be installed. As an illustrative example, a user can select the policy 112 to automatically allow software updates corresponding to the navigation system of the vehicle 130 while in inactive mode, and can select the policy 112 to block all other types of software updates to the computing system 132 while in inactive mode. The policy can correspond to a time period. As an example, the user can select a policy 112 to allow software updates for installation related to the audio system of the vehicle 130 during a time period from 3 AM to 6 AM. For example, the policy 112 can allow one-way communications for a period of 1 hour, and no communications otherwise. The policy 112 can enable the activation of the network connection for one or more connection modules 136 or 138 after the elapse of a period of time. The user or system 100 may not have any policies 112 in place, in which case each software update can be individually selected for installation.
The policy 112 can determine the communication method in which to operate while the vehicle 130 is in inactive mode. For example, the policy 112 can specify that the vehicle 130 is to communicate in only a one-way communication mode while the network connection is inactive. The policy 112 can specify different communication methods for the different communication modules. For example, the policy can assign that the first connection module 136 operates in a one-way communication mode and the second connection module 138 operates in a two-way communication mode while the network connection is inactive. The policy 112 can set different levels or priorities for each communication module to operate in a one or two way mode.
The policy 112 can rank, rate, or otherwise assign a priority to each network action to determine which network actions to perform. For example, the policy 112 can assign a numeric value to each of a set of software updates and can select the software update with the highest value to perform. The highest value can refer to the largest number, or can refer to the smallest number. For example, of a set of numbers {1, 2, 3}, the highest value can be the largest number (e.g., “3”) or the smallest number (e.g., “1”). The policy 112 can assign the numeric value corresponding to the priority based at least on other considerations asserted in the policy 112 such as, a classification of the software update, a duration of the software update, a bandwidth of the software update, a performance of the vehicle affected by the software update, the system of the vehicle 130 affected by the software update, or a level of criticality indicated by the software update, among others. For example, the policy 112 can assign a value of “3” to software updates that indicate they are critical, and a value of “1” to software updates that indicate they are non-critical. In this example, the policy 112 can then select for installation the software updates with a value of “1” and may not select for installation software updates with a value of “3.” The ranking function can include one or more considerations for ranking. As an illustrative example, the policy 112 can assign a value of “3” to a software update that indicates it is critical, a value of “2” to a software update that indicates it is non-critical and will use 1 MB/s of bandwidth, a value of “2” to a software update that indicates it is non-critical and will impact headlights of the vehicle 130, and a value of “1” to a software update that indicates it is non-critical and will impact an audio system of the vehicle 130. As another example, the policy 112 can assign a value of “1” to software updates communicated through the first connection module 136 and a value of “2” to software updates communicated through the second connection module 138. In the event that one or more software updates or network actions share the same numeric value, the policy 112 can select all of the updates for installation which meet the highest numeric value.
One or more policies 112 can correspond to the sensor 134. The sensors 134 can be dispersed internally or externally to the vehicle 130 or the data processing system 102. The sensor 134 can be one or more sensors corresponding to one or more functions of the vehicle 130. The sensors 134 can include at least photosensors, speed sensors, humidity sensors, temperature sensors, magnetic sensors, air quality sensors, or contact sensors. The sensors 134 can include proximity sensors, such as a capacitive proximity sensor, an inductive proximity sensor, or an ultrasonic proximity sensor. The sensors 134 can include motion sensors, such as passive infrared (PIR) sensors or microwave motion sensors. For example, a motion sensor can detect a car (such as vehicle 130) entering or exiting a location such as a parking spot. The sensors 134 can include a camera for image recognition. For example, the camera sensor 134 can take a photo or a video of the vehicle 130. The sensors 134 can include force sensors, such as a piezoresistive pressure sensor or strain gauge. For example, the sensor 134 can be a sensor indicating that the user has fastened his seatbelt. The sensor 134 can be a photosensor for gathering data related to the illumination within a cabin of the vehicle 130.
The computing system 132 can detect a condition via the sensors 134. The condition can relate to the operation of the vehicle 130. For example, the sensors 134 can collect data indicating to the computing system 132 that the vehicle 130 is being operated differently than normally operated by the user associated with the profile 114. For example, the vehicle 130 can be being operated at outlier times for the profile 114, or at a higher speed than a typical operation associated with the profile 114. The sensors 134 indicating a condition to the computing system 132 can cause an automatic disablement of inactive mode. The sensors 134 indicating a condition to the computing system 132 can enable the computing system 132 to transmit information regarding the conditions (e.g., data from the sensors 134) of the vehicle 130 to the data processing system 102.
The version monitor 104, the connection manager 106, the application delivery component 108, the mobile device 120, or the computing system 132 can each include at least one processing unit or other logic device such as a programmable logic array engine, or module configured to communicate with the data repository 110 or database. The version monitor 104, the connection manager 106, or the application delivery component 108 can be separate components, a single component, or part of the data processing system 102. The system and its components, such as the data processing system 102, can include hardware elements, such as one or more processors, logic devices, or circuits.
The data processing system 102 can store, transmit, receive, or display information that can facilitate temporarily activating network access for authorized software updates. The data processing system 102 can communicate with internal subcomponents (described herein) or external components of the vehicle 130 or the mobile device 120. The data processing system 102 can, for example, store data about the system in the data repository 110. The data processing system 102 can, for example, transmit information received by the data repository 110 to the connection manager 106. Transmittal by the data processing system 102 can occur by a hardwire connection (e.g., cabling, copper wire, or fiber optics) or via a wireless connection (e.g., WiFi, Bluetooth, local area network (LAN)). The data processing system 102 can transmit information from the vehicle 130 via a wireless connection (e.g., the network 101) when such means are activated (e.g., inactive mode is not enabled or the network connection has been temporarily allowed by the user). The data processing system 102 can include a network of subcomponents (e.g., the version monitor 104, the connection manager 106, the application delivery component 108, or the data repository 110) which communicate with each other as described herein. The data processing system 102 can be coupled with a memory (e.g., data repository 110). The data processing system 102 can be located remotely from the vehicle 130 and accessed by an external computing device over the network 101.
The data processing system 102 can communicate with the vehicle 130 via the network 101. The vehicle 130 (e.g., vehicle 130 depicted in
The data processing system 102 can include the version monitor 104 designed, constructed and operational to receive, identify, obtain, or otherwise access one or more network actions on the computing system 132. The version monitor 104 can be any combination of hardware and software for identifying, determining, processing, or receiving one or more network actions for the computing system 132. The network actions can include one or more software updates for installation. The version monitor 104 can identify that one or more software updates are available for download for the vehicle 130. The version monitor 104 can receive periodic updates of software installations from a remote server over the network 101. The version monitor 104 can log software updates for installation. For example, the version monitor 104 can identify the current version of one or more software applications or operating systems installed on the computing system 132 and can identify the latest version to be installed. The version monitor 104 can determine which, if any, of software updates to install. The version monitor 104 can choose one or more software updates for installation based on at least the policy 112, the profile 114, or the sensor 134.
The connection manager 106 can be any combination of hardware and software, operating on the data processing system 102, to determine that the network connection to the computing system 132 is inactive. Determining that the network connection to the computing system 132 is inactive can refer to the connection manager 106 determining that the vehicle 130 is operating in inactive mode or that a connection to the vehicle via network 101 is otherwise unavailable. Determining that the network connection is inactive can include determining that one or more of the connection modules 136 or 138 is inactive or operating in a one-way communication mode. The connection manager 106 can determine that the vehicle 130 is operating in inactive mode responsive to the version monitor 104 identifying at least one software update for installation on the computing system 132. The connection manager 106 can determine that the vehicle 130 is operating in the inactive mode as opposed to being outside a service area. In other words, the connection manager 106 can determine that the computing system 132 is not connected to the network due to an action of the user (such as selecting inactive mode), as opposed to the computing system 132 not being connected to the network due to the vehicle 130 being outside a range of connectivity of the network.
The connection manager 106 can determine that the network connection for the computing system 132 is in inactive mode based on at least a time period starting at the transmittal of a communication from the data processing system 102 to the vehicle 130 exceeding the threshold 118. The data processing system 102 can transmit a communication over the network 101 to the computing system 132. As a part of a transmission protocol such as WiFi, 4G, 5G, etc., the data processing system 102 can expect to receive an acknowledgement of the transmission or a response to the transmission from the computing system 132. The response or acknowledgement can be a data packet, data frame, signal, or other communication sent wirelessly from the computing system 132 to the data processing system 102 via the network 101. The data processing system 102 can wait for a threshold 118 period of time for the computing system 132 to indicate receipt of the transmission or a response to the transmission. Upon the elapse of the threshold 118, the connection manager 106 can determine that the computing system 132 is in inactive mode.
The connection manager 106 can determine that the network connection for the computing system 132 is in inactive mode by the last location transmitted by the computing system 132. When in active mode, the computing system 132 can periodically transmit a location indicator of the vehicle 130. The location indicator can include coordinates, geolocation, or other location information related to the vehicle 130. The location indicator may indicate to the connection manager 106 that the vehicle 130 was last located in an area with network access (e.g., cellular signal availability or WiFi availability). The connection manager 106 can determine, based on the vehicle 130 being located in an area with network access and based on the last communication received from the computing system 132, that the vehicle 130 is in inactive mode. For example, if the computing system 132 transmits a first communication including a location indicator indicating that the vehicle 130 is in an area with network access, the connection manager 106 can determine, after the elapse of the threshold 118 period of time without a second communication from the computing system 132, that the vehicle 130 is in inactive mode.
The connection manager 106 can determine that the network connection for the computing system 132 is in inactive mode from an indication of inactive mode transmitted by the computing system 132 prior to entering inactive mode. A user can select to operate the vehicle in the inactive mode. Prior to entering inactive mode, the computing system 132 can transmit an indication of inactive mode to the data processing system 102. The indication of inactive mode can include data packets, data frames, or another communication to indicate to the data processing system 102 that the vehicle 130 is entering inactive mode. The computing system 132 can wait after transmitting the indication of inactive mode. The computing system 132 can wait for acknowledgement of receipt of the indication of inactive mode from the data processing system 102 before entering the inactive mode. The computing system 132 can wait for the threshold 118 period of time after transmitting the indication of inactive mode before entering inactive mode. The connection manager 106 can determine, from the indication of inactive mode that the vehicle 130 is in inactive mode. The data processing system 102 can transmit an acknowledgement of receipt of the indication of inactive mode to the computing system 132. Upon leaving inactive mode, the computing system 132 can transmit an indication of active mode to the data processing system 102 to indicate network connectivity has been restored to the vehicle 130.
The connection manager 106 can determine that the network connection for the computing system 132 is inactive by no longer receiving location or other updates from the vehicle 130 to the data processing system 102 via the network 101. For example, the data processing system 102 can receive location updates, error reports, or other data from the vehicle 130 periodically or on a scheduled basis. In this example, if the data processing system 102 does not receive the routine location update from the vehicle 130, the connection manager 106 can determine that the network connection is inactive.
The connection manager 106 can determine that the network connection for the computing system 132 is in inactive mode from a third party application operating on the computing system 132. For example, a third party application operating on the computing system 132 may not be able to communicate with an external server when the network connection is inactive. The external server can indicate to the data processing system 102 that it is unable to establish a connection with the third party application operating on the computing system 132. The connection manager 106 can determine that the network connection is in inactive mode from the indication from the external server.
The connection manager 106 can cause the vehicle 130 to activate or establish a connection to the network 101 in order to perform a function. The connection manger 106 can cause the vehicle 130 to establish the connection responsive to determining that the vehicle is operating in inactive mode. The connection manager 106 can establish the connection with various parameters or attributes, such as a type of connection, duration of the connection, type of data allowed over the connection, or a limit on an amount of data allowed over the connection. The connection manager 106 can select the attributes of the connection based on the type of function to be performed, and configure the connection with the selected attributes.
To activate the connection, the connection manager 106 can identify the mobile device 120. The mobile device 120 can be linked (e.g., communicatively coupled) with the computing system 132. The mobile device 120 can be associated with a user of the vehicle 130. The mobile device can be associated with the profile 114 of the user. The mobile device 120 can be associated with the profile 114 by at least a prior pairing of the mobile device 120 to the vehicle 130. For example, the mobile device 120 can connect to the computing system 132 via a wired or wireless connection. The computing system 132 can store the mobile device 120 in association with the profile 114 of the user in the data repository 110 subsequent to the connection. The mobile device 120 can be associated with the profile 114 through a user input. For example, the user associated with the profile 114 can input, though a display device of the computing system 132 or the mobile device 120, the mobile device 120 as being associated with the profile 114. The association can be stored in the data repository 110. The connection manager 106 can identify the mobile device 120 through a look-up in the data repository 110. For example, the connection manager 106 can parse the data repository 110 for the mobile device 120 associated with the current user operating the vehicle 130, or with a user present in the vehicle 130. The connection manager 106 can transmit an instruction to the identified mobile device 120. The connection manager 106 can transmit the instruction to the mobile device 120 over the network 101.
In an illustrative example, the instruction can cause the mobile device 120 to automatically activate the network connection. The instruction can cause the mobile device 120 to establish a local communication session with the computing system 132. The local communication session can be a PAN or LAN, such as Zigbee or BLE. The connection manager 106 can automatically connect with the computing system 132 by operating through the mobile device 120 and the established communication session. Through the communication session and the mobile device 120, the connection manager 106 can restore network connectivity.
In another illustrative example, the instruction can cause the mobile device 120 to provide a prompt to the user of the mobile device 120. The prompt can display on a display system of the mobile device 120. The prompt can instruct the user to activate network connectivity of the vehicle 130. For example, the prompt can instruct the user to activate network connectivity through a user interface of the computing system 132.
The connection manager 106 can activate one or more types of network connections to the computing system 132. For example, the connection manager 106 can activate a one-way or a two-way communication channel of the network connection. A one-way communication channel can be used to either download to or upload from the computing system 132. For example, a one-way communication channel established by the connection manager 106 can be used to download the software updates for installation. A two-way communication channel can be used to both download to and upload from the computing system 132. For example, a two-way communication channel established by the connection manager 106 can be used to download the software updates for installation and to upload error reports from the vehicle 130 to the data processing system 102.
The connection manager 106 can limit the duration of the network connection. The connection manager 106 can limit the duration of the network connection based on time. For example, the connection manager 106 can enable activation of the network connection between the computing system 132 and the data processing system 102 for an hour, twelve hours, or two days. Subsequent to the elapse of the duration, the connection manager 106 or the computing system 132 can terminate the connection. The connection manager 106 can enable activation of the network connection until a network function is complete. For example, the connection manager 106 can enable the network connection until the software updates have been installed. Upon installation of the network updates, the connection manager 106 can terminate the network connection. The connection manager 106 can terminate the network connection of the computing system 132 or the established session between the mobile device 120 and the computing system 132 with receipt of an instruction from the version monitor 104 that the software update has been installed.
The connection manager 106 can activate the network connection for some types of communication protocols and not activate the network connection for other types of communication protocols. For example, the connection manager 106 can activate a WiFi network for download of the software updates, but may not activate a GPS network. The connection manager 106 can impose constraints on the data packets transmitted through the activated network connection. The connection manager 106 can limit or constrain the types of data packets transmitted over the network connection. For example, the connection manager 106 can allow packets associated with a WiFi network from the data processing system 102 but disallow packets associated with a 4G-LTE network. The connection manager 106 can allow packets conforming to a transport control protocol/internet protocol (TCP/IP) but disallow packets conforming to a user datagram protocol (UDP). The connection manager 106 can limit or constrain an amount of data transmitted over the network connection. For example, the connection manager 106 can cap the transmission data at 2 GB. The connection manager 106 can impose different limits and constraints for upload and download network traffic. For example, the connection manager 106 can limit download data to 2 GB and limit upload data to 20 MB. The connection manager can limit the download data to 2 GB of data transmitted via WiFi, and 1 GB of data transmitted via 4G-LTE. The connection manager 106 can base the network connection restraints on the software updates to be installed. For example, the connection manager 106 can limit the amount of data to be transmitted to the size of the software update to be installed.
In some cases, more than one software update can be identified by the version monitor 104. When more than one software update is identified by the version monitor 104, the connection manager 106 can download each update concurrently, or can choose an order of download. The connection manager 106 can order the download of the software updates based on at least a ranking, a classification, or a size of each software update. For example, the connection manager 106 can download a first software update prior to a second software update with a lower numeric value as described herein. The connection manager 106 can download a first software update prior to a second software update larger (e.g., in MB, GB) than the first.
Responsive to a software update being selected for installation, the application delivery component 108 can transmit a request to activate the network connection of the computing system 132. The application delivery component 108 can be any combination of hardware and software, operating on the data processing system 102, to transmit a request to activate the network connection to download the software update for installation on the computing system 132. The application delivery component 108 can transmit the request responsive to the identification of the software update by the version monitor 104, responsive to the determination that the network connection to the computing system 132 is inactive by the connection manager 106, or responsive to a determination that one or more of the software updates identified are conforming to the policy 112 by the connection manager 106.
The application delivery component 108 can transmit the request to the mobile device 120. The mobile device 120 can be associated with the user or the profile 114. The mobile device 120 can include a display that presents an application, such as application (e.g., app) 116. The application delivery component 108 can transmit the request to the app 116 operating on the mobile device 120. The request can indicate, via the app 116, that one or more software updates are available for installation on the computing system 132. The request can indicate that the installation may not occur while the vehicle 130 is in inactive mode. The request can prompt the user associated with the mobile device 120 to temporarily authorize network connectivity for the vehicle 130 to enable installation of the one or more software updates.
The user can accept the request to activate the network connection of the computing system 132. The user can accept the request by interacting with the app 116 presented on the mobile device 120. Responsive to acceptance of the request, the connection manager 106 can activate the network connection to enable installation of the software update.
In some cases, a response to the request may not be received by the data processing system 102. This can be due, for example, to the user not having access to the mobile device 120, the mobile device 120 being off, or the mobile device 120 being outside of a network over which the request is transferred. For example, the mobile device 120 can be outside of a range of cellular service. Responsive to a period of time after the transmittal of the request exceeding the threshold 118, the application delivery component 108 can transmit a second request to the mobile device 120 for activation of the network connection.
The request can be denied by the user of the mobile device 120. The mobile device 120 can transmit a response to the data processing system 102 indicating a denial of the request to activate the network connection. Responsive to receiving the indication that activation of the network connection is denied, the application delivery component 108 can transmit a second request to the mobile device 120, subsequent to exceeding the threshold 118 period of time. For example, the application delivery component 108 can transmit a second request ten minutes, twelve hours, or one day after transmitting the first request and receiving a denial. The application delivery component 108 can send a different request for each software update identified, or can send one request listing each software update. The user can select, via the app 116 through the mobile device 120, which of the software updates listed in the request to install. The user can select, via the app 116, a period of time to allow the computing system 132 to enable a network connection. The period of time can be in minutes, hours, days, etc., or responsive to the completion of installation of the software updates indicated in the request.
When a software update does not satisfy the policy 112, the application delivery component 108 may not transmit a request for the software update not satisfying the policy to the mobile device 120. In this event, the computing system 132 or the connection manager 106 may not activate the network connection.
Activation of the network connection can refer to only allowing communications which enable the installation of the software updates. The connection manager 106 can enable activation of the network connection to allow communication of data packets between the data processing system 102 and the computing system 132 that are associated with the software update. The connection manager 106 can prevent communications of other data packets that are not associated with the software update. The connection manager 106 can prevent the data packets not associated with the software update through the policy 112. The connection manager 106 can enable the transmittal of data packets over WiFi with a header or payload indicating the software update, and can block transmittal of data packets with a head or payload not indicating the software update. The connection manager 106 can block packets by filtering the packets based on a source or destination address of the packets. The connection manager 106 can block packets using a firewall, by dropping packets, or by rejecting packets. For example, a firewall can be configured by the policy 112 to block packets based on the packets' priority. The connection manager 106 can log blocked packets in the data repository 110. In this manner, network or data security can be maintained while allowing the vehicle 130 to receive software updates.
The application 116 can instruct the mobile device 120 to activate the network connection via a wireless communication session established between the mobile device 120 and the computing system 132. For example, the application 116 can turn on a wireless signal connectivity of the mobile device 120 (e.g., Bluetooth or other LAN or PAN) to establish a wireless communication session between the mobile device 120 and the computing system 132. The mobile device 120 can control the computing system 132 via the established communication system. The user can control the computing system 132 via the application 116 on the mobile device 120. In some cases, the mobile device 120 can turn off the inactive mode of the vehicle 130 via the established communication session. The mobile device 120 can enable network connectivity for the computing system 132 via the established communication session. While larger area networks such as WiFi and LTE can be blocked during inactive mode, a PAN or smaller LAN such as Bluetooth can connect to the computing system 132 via the mobile device 120. In this manner, the user can locally control data security settings of the vehicle 130. Responsive to the activation of the network connection of the computing system 132, the application delivery component 108 can provision the software update to the computing system 132 for installation.
The one or more software updates indicated in the response from the mobile device 120 can be installed on the computing system 132 responsive to activating the network connection. The installation of the software updates can be pushed to the computing system 132 over the network 101 by the data processing system 102 during the time period of the network connection activation. Subsequent to a download of the software update by the computing system 132, the version monitor 104 can provide an instruction to terminate the network connection. The version monitor 104 can provide the instruction to terminate the network connection subsequent to installation of the software update.
Thus, by identifying a software update, the data processing system 102 can determine that the network connection is inactive and transmit a request to temporarily activate the network connection for installation of the software update. The system 100 can improve vehicle functionality while preserving network management settings for a user through temporary and controlled network traffic granted by the user for specific network actions.
At ACT 210, the data processing system can determine that the network is inactive. The connection manager 106 can determine that the network is inactive. The network can be a network connection between the computing system 132 and the network 101, the data processing system 102, or another external system. The network can be inactive at least responsive to the user selecting inactive mode, or the vehicle 130 being outside of a network range. In some cases, when the network of the computing system 132 is inactive, the computing system 132 may not automatically receive regular updates, provide location information, transmit error or log info to the data processing system 102, or perform other functionalities of the computing system 132 over the network 101.
At ACT 215, the data processing system can transmit, to a mobile device, a request to activate the network to download the software update. The application delivery component 108 can transmit a request to a mobile device associated with a user of the vehicle, such as the mobile device 120. The request can include the one or more network actions to be installed, an approximate duration of the download, the size of the download, among others. The user associated with the mobile device can make selections based on the request. For example, the user can select a subset of the network actions for installation. For example, the user can select a duration of time for the network connection to be activated. The user can accept the request to activate the network connection through an application on the user's mobile device.
At ACT 220, the data processing system can provide the software update to the computing system. The data processing system can provide the software update to the computing system via the application delivery component 108, responsive to activation of the network connection. The network can be activated responsive to an acceptance of the request for network connectivity. The application delivery component 108 can transmit the software update to the computing system 132 via the activated network. The computing system 132 can download the software update.
One or more processors coupled with memory can identify the software update. One or more processors coupled with memory can include the version monitor 104, as described herein. The version monitor 104 can identify, receive, or search for software updates for installation on the computing system. The version monitor 104 can query a remote server for software updates, can receive periodic notices of software updates, or can have a software update directly transmitted to it by a remote server.
The version monitor 104 can identify the software for updates based on one or more policies established by a user of the vehicle or the system. The version monitor 104 can identify software updates which conform to the policy to select the software update for installation. For example, the policy can create classifications of software updates. The classifications can be based on a type of software update (e.g., critical, user-interface related), size of update (e.g., in MB or GB), vehicle function (e.g., audio, navigation, batteries), or time for download. For example, the version monitor 104 can select for installation a software update which corresponds to a vehicle function such as the navigation system, based on a policy allowing for selection of software updates related to the navigation system. The version monitor 104 can identify and block a second software update if the version monitor 104 determines that the second software update does not comply with the policy. For example, a first software update can be in a first classification allowed by the policy. A second software update can be in a second classification not allowed by the policy. The version monitor 104 can allow the first software update for installation and can block the second software update for installation. The policy can be established by the data processing system. For example, the data processing system can establish a policy to identify for installation all software updates related to battery life.
The version monitor 104 can identify other network actions. For example, the version monitor 104 can (responsive to the policy) identify a network action to generate a control instruction to actuate an alarm of the vehicle. The version monitor 104 can identify a network action responsive to one or more sensors of the vehicle. For example, one or more sensors of the vehicle can indicate to the computing system that a network action can be taken. The computing system can then establish network connectivity to perform the network action. As an illustrative example, the sensors of the car can indicate that the vehicle is heating above a threshold temperature. The computing system can enable the network connectivity to receive a network action to communicate the location of the vehicle to a local fire department.
At ACT 310, the data processing system can determine if the vehicle network is online. The computing system of the vehicle may not receive software updates and other communications if the vehicle network is inactive. The connection manager 106 can determine if the vehicle network is online or active. The connection manager 106 can determine that the vehicle network is active if the connection manager 106 receives communications from the computing system. In some embodiments, if the connection manager 106 does not receive a communication from the computing system for a threshold period of time, the connection manager 106 can determine that the vehicle is inactive. For example, the data processing system can determine that the vehicle network is inactive if the data processing system does not receive a communication from the computing system for a time period exceeding one hour. The data processing system can determine that the vehicle network is inactive (e.g., not online) by no longer receiving a transmission of the vehicle's location from the computing system. The data processing system can determine that the vehicle network is inactive from a communication sent from the computing system prior to disconnection of the vehicle network. For example, the computing system can transmit a BYE frame or other indication to the data processing system that the computing system is disconnecting the vehicle network.
At ACT 315, the data processing system can transmit a request to a mobile device, responsive to the determination that the vehicle network is inactive. The application delivery component 108 can transmit the request to a mobile device associated with a user of the vehicle, such as the mobile device 120. The mobile device can have an integrated user interface and display screen, as well as the ability to generate a PAN or LAN, such as a Bluetooth connection. The request can ask the user of the mobile device to enable the network connection for the computing system to download the software update. The request can include a mechanism for response via the mobile device, such as buttons, a drop down menu, or a reply text box.
In some implementations, the data processing system transmitting the request can include within or associated with the request, an instruction package. The instruction package can be a software instruction package or a software agent that, when executed by the mobile device, can cause the mobile device to instruct the vehicle to activate the network connection. Activation of the network connection by the request can include activation of a one-way communication. The one-way communication can allows communication of data packets between the data processing system and the computing system that are associated with the software update, and prevents communications of other data packets that are not associated with the software update.
At ACT 325, the data processing system determines if the request has been accepted. The data processing system can receive a response from the mobile device indicating whether the request has been accepted. Accepting the request can refer to the user authorizing temporary connectivity to the computing system of the vehicle. Temporary connectivity can refer to the computing system of the vehicle allowing some or all network traffic to the computing system. Authorization of temporary connectivity can be limited. For example, the temporary connectivity can only authorize the download of one or more software updates accepted by the user in the request. In this way, other unauthorized network access may not be permitted during inactive mode. With the acceptance of the request, the data processing system can determine if a communication channel is active.
At ACT 320, the data processing system determines if the time period has elapsed, responsive to the request not being accepted. The time period can be a threshold amount of time in which the user of the mobile device has to provide a response to the request transmitted by the data processing system to allow temporary connectivity to the computing system of the vehicle. In some cases, if the user denies the request or does not respond to the request in the threshold time period, the data processing system can again transmit a request to the mobile device (ACT 315).
At ACT 330, the data processing system can determine if a communication channel is active. The data processing system can determine that a one-way communication channel is active. The communication channel being active can refer to one or more of the connection modules of the vehicle is active or includes an active network connection. Determining if the communication channel is active can include establishing a connection between the mobile device of the user and the computing system. The data processing system can enable some or all network connectivity to the computing system for a period of time to download the software updates. In this manner, the vehicle network can be temporarily active to allow for the download of the identified software updates.
At ACT 335, the data processing system provides the software update via the vehicle network. The data processing system can, responsive to the vehicle network being active (ACT 310 or ACT 330) transmit the software update to the computing system via the vehicle network. Subsequent to the download of the software update, the data processing system can terminate the vehicle connection. For example, the computing system can return to no connectivity after the download of the software update.
For example, the battery cell 420 can include at least one lithium-ion battery cell. In lithium-ion battery cells, lithium ions can transfer between a positive electrode and a negative electrode during charging and discharging of the battery cell. For example, the battery cell anode can include lithium or graphite, and the battery cell cathode can include a lithium-based oxide material. The electrolyte material can be disposed in the battery cell 420 to separate the anode and cathode from each other and to facilitate transfer of lithium ions between the anode and cathode. It should be noted that battery cell 420 can also take the form of a solid state battery cell developed using solid electrodes and solid electrolytes.
The computing system 700 can be coupled via the bus 705 to a display 735, such as a liquid crystal display, or active matrix display, for displaying information to a user such as a driver of the electric vehicle 130 or other end user. An input device 730, such as a keyboard or voice interface can be coupled to the bus 705 for communicating information and commands to the processor 710. The input device 730 can include a touch screen display 735. The input device 730 can also include a cursor control, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor 710 and for controlling cursor movement on the display 735.
The processes, systems and methods described herein can be implemented by the computing system 700 in response to the processor 710 executing an arrangement of instructions contained in main memory 715. Such instructions can be read into main memory 715 from another computer-readable medium, such as the storage device 725. Execution of the arrangement of instructions contained in main memory 715 causes the computing system 700 to perform the illustrative processes described herein. One or more processors in a multi-processing arrangement can also be employed to execute the instructions contained in main memory 715. Hard-wired circuitry can be used in place of or in combination with software instructions together with the systems and methods described herein. Systems and methods described herein are not limited to any specific combination of hardware circuitry and software.
Although an example computing system has been described in
Some of the description herein emphasizes the structural independence of the aspects of the system components or groupings of operations and responsibilities of these system components. Other groupings that execute similar overall operations are within the scope of the present application. Modules can be implemented in hardware or as computer instructions on a non-transient computer readable storage medium, and modules can be distributed across various hardware or computer based components.
The systems described above can provide multiple ones of any or each of those components and these components can be provided on either a standalone system or on multiple instantiation in a distributed system. In addition, the systems and methods described above can be provided as one or more computer-readable programs or executable instructions embodied on or in one or more articles of manufacture. The article of manufacture can be cloud storage, a hard disk, a CD-ROM, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs can be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, or in any byte code language such as JAVA. The software programs or executable instructions can be stored on or in one or more articles of manufacture as object code.
Example and non-limiting module implementation elements include sensors providing any value determined herein, sensors providing any value that is a precursor to a value determined herein, datalink or network hardware including communication chips, oscillating crystals, communication links, cables, twisted pair wiring, coaxial wiring, shielded wiring, transmitters, receivers, or transceivers, logic circuits, hard-wired logic circuits, reconfigurable logic circuits in a particular non-transient state configured according to the module specification, any actuator including at least an electrical, hydraulic, or pneumatic actuator, a solenoid, an op-amp, analog control elements (springs, filters, integrators, adders, dividers, gain elements), or digital control elements.
The subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. The subject matter described in this specification can be implemented as one or more computer programs, e.g., one or more circuits of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, data processing apparatuses. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. While a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices include cloud storage). The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
The terms “computing device”, “component” or “data processing apparatus” or the like encompass various apparatuses, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, app, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program can correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatuses can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Devices suitable for storing computer program instructions and data can include non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
The subject matter described herein can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this specification, or a combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
While operations are depicted in the drawings in a particular order, such operations are not required to be performed in the particular order shown or in sequential order, and all illustrated operations are not required to be performed. Actions described herein can be performed in a different order.
Having now described some illustrative implementations, it is apparent that the foregoing is illustrative and not limiting, having been presented by way of example. In particular, although many of the examples presented herein involve specific combinations of method acts or system elements, those acts and those elements can be combined in other ways to accomplish the same objectives. Acts, elements and features discussed in connection with one implementation are not intended to be excluded from a similar role in other implementations or implementations.
The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including” “comprising” “having” “containing” “involving” “characterized by” “characterized in that” and variations thereof herein, is meant to encompass the items listed thereafter, equivalents thereof, and additional items, as well as alternate implementations consisting of the items listed thereafter exclusively. In one implementation, the systems and methods described herein consist of one, each combination of more than one, or all of the described elements, acts, or components.
Any references to implementations or elements or acts of the systems and methods herein referred to in the singular can also embrace implementations including a plurality of these elements, and any references in plural to any implementation or element or act herein can also embrace implementations including only a single element. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements to single or plural configurations. References to any act or element being based on any information, act or element can include implementations where the act or element is based at least in part on any information, act, or element.
Any implementation disclosed herein can be combined with any other implementation or embodiment, and references to “an implementation,” “some implementations,” “one implementation” or the like are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the implementation can be included in at least one implementation or embodiment. Such terms as used herein are not necessarily all referring to the same implementation. Any implementation can be combined with any other implementation, inclusively or exclusively, in any manner consistent with the aspects and implementations disclosed herein.
References to “or” can be construed as inclusive so that any terms described using “or” can indicate any of a single, more than one, and all of the described terms. References to at least one of a conjunctive list of terms can be construed as an inclusive OR to indicate any of a single, more than one, and all of the described terms. For example, a reference to “at least one of ‘A’ and ‘B’” can include only ‘A’, only ‘B’, as well as both ‘A’ and ‘B’. Such references used in conjunction with “comprising” or other open terminology can include additional items.
Where technical features in the drawings, detailed description or any claim are followed by reference signs, the reference signs have been included to increase the intelligibility of the drawings, detailed description, and claims. Accordingly, neither the reference signs nor their absence have any limiting effect on the scope of any claim elements.
Modifications of described elements and acts such as variations in sizes, dimensions, structures, shapes and proportions of the various elements, values of parameters, mounting arrangements, use of materials, colors, orientations can occur without materially departing from the teachings and advantages of the subject matter disclosed herein. For example, elements shown as integrally formed can be constructed of multiple parts or elements, the position of elements can be reversed or otherwise varied, and the nature or number of discrete elements or positions can be altered or varied. Other substitutions, modifications, changes and omissions can also be made in the design, operating conditions and arrangement of the disclosed elements and operations without departing from the scope of the present disclosure.
Further relative parallel, perpendicular, vertical or other positioning or orientation descriptions include variations within +/−10% or +/−10 degrees of pure vertical, parallel or perpendicular positioning. References to “approximately,” “substantially” or other terms of degree include variations of +/−10% from the given measurement, unit, or range unless explicitly indicated otherwise. Coupled elements can be electrically, mechanically, or physically coupled with one another directly or with intervening elements. Scope of the systems and methods described herein is thus indicated by the appended claims, rather than the foregoing description, and changes that come within the meaning and range of equivalency of the claims are embraced therein.