Transfer of digital data to mobile software systems

The disclosure includes a system and method for communicating digital data from a mobile client device to a mobile system. The system includes a processor and a memory storing instructions that, when executed, cause the system to: obtain journey context data that includes data describing a future journey; determine digital data to transmit to the mobile system based on the journey context data; detect a presence of the mobile system; verify that the digital data is valid for the mobile system based on the journey context data; and send the digital data to the mobile system responsive to detecting the presence of the mobile system and the digital data being valid for the mobile system.

BACKGROUND

The specification relates to transferring digital data between mobile systems. In particular, the specification relates to communicating digital data between multiple mobile systems and applying the digital data in the multiple mobile systems.

In-vehicle services such as navigation service and infotainment service may be improved over time by updating the services using digital data transferred from other devices or servers. For example, digital data may be transmitted to a vehicle and used for many purposes including updating the services in the vehicle. However, the transmission of digital data to the vehicle may be a challenge. For example, the transmission of digital data to the vehicle may drain the vehicle's battery, causing a failure to start the vehicle. In another example, a transmission of digital data to a vehicle during the operation of that vehicle may interfere with and may be disruptive to other higher priority communications to the vehicle.

SUMMARY

According to one innovative aspect of the subject matter described in this disclosure, a system for communicating digital data from a mobile client device to a mobile system includes a processor and a memory storing instructions that, when executed, cause the system to: obtain journey context data that includes data describing a future journey; determine digital data to transmit to the mobile system based on the journey context data; detect a presence of the mobile system; verify that the digital data is valid for the mobile system based on the journey context data; and send the digital data to the mobile system responsive to detecting the presence of the mobile system and the digital data being valid for the mobile system.

According to another innovative aspect of the subject matter described in this disclosure, a system for communicating digital data from a storage system to a mobile system includes a processor and a memory storing instructions that, when executed, cause the system to: receive data describing a list of first mobile systems and a second mobile system; determine digital data to transfer from a storage system to the second mobile system; detect a first network availability between the storage system and one or more first mobile systems from the list; transfer the digital data from the storage system to the one or more first mobile systems responsive to detecting the first network availability; detect a second network availability between the second mobile system and at least one first mobile system from the one or more first mobile systems; verify that the digital data is valid for the second mobile system based on journey context data associated with the second mobile system; and transfer the digital data from the at least one first mobile system to the second mobile system responsive to detecting the second network availability and the digital data being valid for the second mobile system.

According to yet another innovative aspect of the subject matter described in this disclosure, a system for communicating digital data from a mobile system to a storage system includes a processor and a memory storing instructions that, when executed, cause the system to: receive data describing a list of first mobile systems and a second mobile system; determine digital data to transfer from the second mobile system to a storage system; detect a first network availability between the second mobile system and one or more first mobile systems from the list; transfer the digital data from the second mobile system to the one or more first mobile systems responsive to detecting the first network availability; detect a second network availability between the storage system and at least one first mobile system from the one or more first mobile systems; verify that the digital data is valid for the at least one first mobile system; transfer the digital data from the at least one first mobile system to the storage system responsive to detecting the second network availability and the digital data being valid for the at least one first mobile system; and verify that the transferred digital data is valid for the storage system.

In general, yet another innovative aspect of the subject matter described in this disclosure may be embodied in methods that include: obtaining journey context data that includes data describing a future journey; determining digital data to transmit to a mobile system based on the journey context data; detecting a presence of the mobile system; verifying that the digital data is valid for the mobile system based on the journey context data; and sending the digital data to the mobile system responsive to detecting the presence of the mobile system and the digital data being valid for the mobile system.

In general, yet another innovative aspect of the subject matter described in this disclosure may be embodied in methods that include: receiving data describing a list of first mobile systems and a second mobile system; determining digital data to transfer from a storage system to the second mobile system; detecting a first network availability between the storage system and one or more first mobile systems from the list; transferring the digital data from the storage system to the one or more first mobile systems responsive to detecting the first network availability; detecting a second network availability between the second mobile system and at least one first mobile system from the one or more first mobile systems; verifying that the digital data is valid for the second mobile system based on journey context data associated with the second mobile system; and transferring the digital data from the at least one first mobile system to the second mobile system responsive to detecting the second network availability and the digital data being valid for the second mobile system.

In general, yet another innovative aspect of the subject matter described in this disclosure may be embodied in methods that include: receiving data describing a list of first mobile systems and a second mobile system; determining digital data to transfer from the second mobile system to a storage system; detecting a first network availability between the second mobile system and one or more first mobile systems from the list; transferring the digital data from the second mobile system to the one or more first mobile systems responsive to detecting the first network availability; detecting a second network availability between the storage system and at least one first mobile system from the one or more first mobile systems; verifying that the digital data is valid for the at least one first mobile system; transferring the digital data from the at least one first mobile system to the storage system responsive to detecting the second network availability and the digital data being valid for the at least one first mobile system; and verifying that the transferred digital data is valid for the storage system.

Other aspects include corresponding methods, systems, apparatus, and computer program products for these and other innovative aspects.

These and other implementations may each optionally include one or more of the following operations and features. For instance, the features include: determining time-sensitive digital data based on an estimated departure time and/or an estimated arrival time associated with the future journey; the time-sensitive digital data being associated with an expiration time and being valid at least during a time period between the estimated departure time and the estimated arrival time; determining that a current time is before the expiration time of the time-sensitive digital data; verifying that the time-sensitive digital data is valid for the mobile system responsive to the current time being before the expiration time; determining location-based digital data based on an estimated route associated with the future journey; determining a current location associated with the mobile client device; determining that the current location is along the estimated route; verifying that the location-based digital data is valid for the mobile system responsive to the current location being along the estimated route; the mobile system including a vehicle; the at least one first mobile system including at least one mobile computing device and the second mobile system including a vehicle; and the at least one first mobile system including at least one first vehicle and the second mobile system including a second vehicle; the digital data including software update data; and the software update data being transferred from the second mobile system to the storage system responsive to detecting the second mobile system being in a key-off state.

For instance, the operations include: storing the digital data on different mobile client devices; sending the digital data from the different mobile client devices to the mobile system simultaneously; receiving new mobile system data from the mobile system; and forwarding the new mobile system data to a data log server; determining a state of a battery management system in the second mobile system; and performing software update on the second mobile system based on the software update data.

Throughout the disclosure, the term “digital data” may be used to represent any digital data undergoing the transfer operations described herein. The digital data may include, but is not limited to, update data used to update vehicle services, data to be shared between two or more entities (e.g., storage systems, mobile systems, mobile client systems, etc.), and data to be transferred between two or more entities.

The disclosure is particularly advantageous in a number of respects. For example, when a mobile client device (e.g., a smartphone) has access to a network (e.g., the Internet), the system described herein may use the mobile client device to obtain digital data for a mobile system (e.g., a vehicle) from a service server. The system may store the digital data on a storage device associated with the mobile client device. The system may also customize the digital data for the mobile system using journey context data describing an estimated future journey. In response to detecting the presence of the mobile system in proximity to the mobile client device, the system may transmit the digital data from the mobile client device to the mobile system for updating services in the mobile system.

In some examples, the digital data may be stored on multiple mobile client devices and transmitted to the mobile system simultaneously from the multiple mobile client devices to achieve a faster data transfer speed. The simultaneous transmission of digital data to the mobile system is beneficial when there is a large amount of digital data to transmit to the mobile system.

In some examples, the system described herein may also receive new mobile system data (e.g., new vehicle data) from the mobile system and may forward the new mobile system data to a data log server. The advantages of the system described herein are provided by way of example, and the system may have numerous other advantages.

DETAILED DESCRIPTION

System Overview

FIG. 1illustrates a block diagram of some implementations of a system100for updating services in a mobile system using a mobile client device. The system100includes a social network server101, a data log server109, a client device103, a mobile client device188, a mobile system123, a calendar server177, and a service server107. The system100may include other servers or devices not shown inFIG. 1including, for example, a traffic server for providing traffic data, a weather server for providing weather data, and a map server for providing map data, etc.

In some implementations, these entities of the system100may be communicatively coupled via a network105. For example, the social network server101may be communicatively coupled to the network105via a signal line104. The data log server109may be communicatively coupled to the network105via a signal line112. The client device103may be communicatively coupled to the network105via a signal line114. The mobile client device188may be communicatively coupled to the network105via a signal line118. The calendar server177may be communicatively coupled to the network105via a signal line110. The service server107may be communicatively coupled to the network105via a signal line106.

WhileFIG. 1illustrates one social network server101, one data log server109, one client device103, one mobile client device188, one mobile system123, one calendar server177, and one service server107, the disclosure applies to a system architecture including one or more social network servers101, one or more data log servers109, one or more client devices103, one or more mobile client devices188, one or more mobile systems123, one or more calendar servers177, and one or more service servers107. Furthermore, althoughFIG. 1illustrates one network105coupled to the entities of the system100, in practice one or more networks105can be connected to these entities.

The network105can be a conventional type, wired or wireless, and may have numerous different configurations including a star configuration, token ring configuration, or other configurations. Furthermore, the network105may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), or other interconnected data paths across which multiple devices may communicate. In some implementations, the network105may be a peer-to-peer network. The network105may also be coupled to or includes portions of a telecommunications network for sending data in a variety of different communication protocols. In some implementations, the network105includes Bluetooth® communication networks or a cellular communications network for sending and receiving data including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail, etc.

The client device103may be a computing device that includes a memory and a processor, for example, a laptop computer, a desktop computer, a tablet computer, a mobile telephone, a personal digital assistant (“PDA”), a mobile e-mail device, a portable game player, a portable music player, a television with one or more processors embedded therein or coupled thereto, or other electronic device capable of accessing the network105. A user may interact with the client device103.

The mobile client device188may be a mobile computing device that includes a memory and a processor, for example, a laptop computer, a tablet computer, a mobile telephone (e.g., a smartphone), a personal digital assistant (“PDA”), a mobile e-mail device, a portable game player, a portable music player, or another mobile electronic device capable of accessing the network105. A user may interact with the mobile client device188. The mobile client device188may be communicatively coupled to the mobile system123via a signal line108. In some implementations, the mobile client device188may be a device similar to the mobile system123. For example, the mobile client device188includes a vehicle.

In some implementations, the mobile client device188may be directly coupled to the network105via the signal line118for communication with other entities in the system100. In some other implementations, the mobile client device188may be communicatively coupled to the client device103via a signal line102. The mobile client device188may access the network105via the client device103for communication with other entities in the system100. For example, the mobile client device188may be a smartphone coupled to a desktop computer using a universal serial bus (USB) line. The desktop computer may receive calendar data from the calendar server177via the network105and may forward the calendar data to the mobile client device188. Additionally or alternatively, the mobile client device188may send mobile system data to the client device103, causing the client device103to forward the mobile system data to the data log server109via the network105. As illustrated inFIG. 1, the mobile client device188includes a device update application181and a storage185. The mobile client device188may additionally include one or more sensors such as a global positioning system (GPS), a pedometer, an accelerator, and other types of sensors.

The device update application181may include code and routines for processing updates on the mobile client device188. In some implementations, the device update application181can be implemented using hardware including a field-programmable gate array (“FPGA”) or an application-specific integrated circuit (“ASIC”). In some other implementations, the device update application181can be implemented using a combination of hardware and software. The device update application181may be stored in a combination of the devices and servers, or in one of the devices or servers. The device update application181is described in more detail below with reference toFIGS. 2 and 4-5B.

The storage185can be a non-transitory storage medium that stores data for providing the functionality described herein. The storage185may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory devices. In some implementations, the storage185also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis.

The mobile system123may be a mobile communication node. For example, the mobile system123may be a vehicle (e.g., an automobile, a bus, an airplane, a boat), a bionic implant, or any other mobile system. In some implementations, the mobile system123may include a computing device that includes a memory and a processor. A user may interact with the mobile system123. In some implementations, the mobile system123may include a mobile client device. For example, the mobile system123may include a tablet, a smartphone, and another type of computing device.

In some implementations, the mobile system123may include one or more sensors (not shown), such as a navigation sensor (e.g., a GPS sensor), an infrared detector, a motion detector, a thermostat, a sound detector, and any other type of sensors. For example, the mobile system123may include sensors for measuring one or more of a current time, a current location (e.g., a latitude, longitude, and altitude of a location), an acceleration of a vehicle, a velocity of a vehicle, a fuel tank level, and a battery level of a vehicle, etc.

As illustrated inFIG. 1, the mobile system123includes a system update application125and a storage127. The system update application125may include code and routines for processing updates on the mobile system123. In some implementations, the system update application125can be implemented using hardware including an FPGA or an ASIC. In some other implementations, the system update application125can be implemented using a combination of hardware and software. The system update application125may be stored in a combination of the devices and servers, or in one of the devices or servers. The system update application125is described below in more detail with reference toFIGS. 3 and 6.

The storage127can be a non-transitory storage medium that stores data for providing the functionality described herein. The storage127may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory devices. In some implementations, the storage127also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis.

The social network server101can be a hardware server that includes a processor, a memory, and network communication capabilities. The social network server101sends and receives data to and from other entities of the system100via the network105. The social network server101includes a social network application111. A social network can be a type of social structure where the users may be connected by a common feature. The common feature includes relationships/connections, e.g., friendship, family, work, an interest, etc. The common features may be provided by one or more social networking systems including explicitly defined relationships and relationships implied by social connections with other online users, where the relationships form a social graph. In some examples, the social graph can reflect a mapping of these users and how they can be related.

The social network server101and the social network application111can be representative of one social network and that there may be multiple social networks coupled to the network105, each having its own server, application, and social graph. For example, a first social network may be more directed to business networking, a second may be more directed to or centered on academics, a third may be more directed to local business, a fourth may be directed to dating, and others may be of general interest or a specific focus.

The service server107can be a hardware server that includes a processor, a memory, and network communication capabilities. The service server107may send and receive data to and from other entities of the system100via the network105. In some implementations, the service server107may provide various services to the mobile system123. For example, the service server107may provide one or more of navigation service, infotainment service, and software update service to the mobile system123. In some implementations, the service server107sends digital data (e.g., navigation updates, infotainment updates, software updates, advertisement updates, etc.) to the mobile client device188, causing the mobile client device188to forward the digital data to the mobile system123.

The data log server109can be a hardware server that includes a processor, a memory, and network communication capabilities. The data log server109may send and receive data to and from other entities of the system100via the network105. For example, the data log server109receives data describing new mobile system data (e.g., new vehicle data) from the mobile client device188and stores the new mobile system data in a storage device associated with the data log server109. In another example, the data log server109sends historical journey data associated with the mobile system123to the mobile client device188.

The calendar server177can be a hardware server that includes a processor, a memory, and network communication capabilities. The calendar server177sends and receives data to and from other entities of the system100via the network105. For example, the calendar server177sends data describing a user's calendar to the mobile client device188with permission from the user.

Example Device Update Application

Referring now toFIG. 2, an example of the device update application181is shown in more detail.FIG. 2is a block diagram of the mobile client device188that includes the device update application181, a processor225, a communication unit245, the storage185, and a memory227according to some examples. The components of the mobile client device188are communicatively coupled by a bus220. The storage185may be communicatively coupled to the bus220via a signal line242.

The processor225includes an arithmetic logic unit, a microprocessor, a general-purpose controller, or some other processor array to perform computations and provide electronic display signals to a display device. The processor225is coupled to the bus220for communication with the other components via a signal line238. The processor225processes data signals and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. AlthoughFIG. 2includes a single processor225, multiple processors225may be included. Other processors, operating systems, sensors, displays, and physical configurations may be possible.

The memory227stores instructions or data that may be executed by the processor225. The memory227is coupled to the bus220for communication with the other components via a signal line244. The instructions or data may include code for performing the techniques described herein. The memory227may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory device. In some implementations, the memory227also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis.

As illustrated inFIG. 2, the memory227stores digital data281, user input data283, and mobile system data285. The memory227may also store other data for providing the functionality described herein. The digital data281may include, but is not limited to, digital data describing updates for the mobile system123, data to be shared with the mobile system123, and data to be transferred to the mobile system123. For example, the digital data281includes one or more of software program updates, navigation updates (e.g., map updates), traffic updates, road information updates (e.g., road construction updates), and infotainment updates (e.g., music updates, podcast updates, video updates, advertisement updates including deals, coupons, and restaurant recommendations). Other example digital data is possible.

The user input data283may include data inputted by the user. The mobile system data285may include data associated with the mobile system123. For example, the mobile system data285includes an identifier identifying the mobile system123(e.g., a vehicle identification number), one or more users associated with the mobile system123(e.g., a driver in a vehicle, a passenger in the vehicle), historical journey data associated with a user operating the vehicle (e.g., start points, destinations, durations, routes associated with historical journeys), and other vehicle data associated with the vehicle.

The communication unit245transmits and receives data to and from at least one of the mobile system123, the client device103, and other servers101,107,109,177in the system100. The communication unit245is coupled to the bus220via a signal line246. In some implementations, the communication unit245includes a port for direct physical connection to the network105or to another communication channel. For example, the communication unit245includes a USB, SD, CAT-5, or similar port for wired communication with other entities in the system100. In some implementations, the communication unit245includes a wireless transceiver for exchanging data with other entities in the system100or other communication channels using one or more wireless communication methods, including IEEE 802.11, IEEE 802.16, Bluetooth®, or another suitable wireless communication method.

In some implementations, the communication unit245includes a cellular communications transceiver for sending and receiving data over a cellular communications network including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail, or another suitable type of electronic communication. In some implementations, the communication unit245includes a wired port and a wireless transceiver. The communication unit245also provides other conventional connections to the network105for distribution of files or media objects using standard network protocols including TCP/IP, HTTP, HTTPS, and SMTP, etc.

In the illustrated implementation shown inFIG. 2, the device update application181includes a communication module202, a journey estimation module204, an update determination module206, a device detection module208, a verification module210, a user interface module212, and a data forwarding module214. These modules of the device update application181are communicatively coupled to each other via the bus220. For simplicity and illustration purposes only, the functionality of the various modules in the device update application181are described below with reference to a vehicle, which is an example of the mobile system123. The description also applies to other example mobile systems.

In some implementations, modules of the device update application181can be stored in a single server or device. In some other implementations, modules of the device update application181can be distributed and stored across multiple servers or devices. Furthermore, the separation of various components, modules, and servers in the implementations described herein should not be understood as requiring such separation in all implementations. In some implementations, the described components, modules, devices, or servers can generally be integrated together in a single component, module, device, or server.

In some implementations, each of the modules202,204,206,208,210,212, and214in the device update application181can be a set of instructions executable by the processor225to provide the functionality described below. In some other implementations, each of the modules202,204,206,208,210,212, and214can be stored in the memory227of the mobile client device188and can be accessible and executable by the processor225. Each of the modules202,204,206,208,210,212, and214may be adapted for cooperation and communication with the processor225and other components of the mobile client device188.

The communication module202can be software including routines for handling communications between the device update application181and other components of the mobile client device188. The communication module202may be communicatively coupled to the bus220via a signal line222. The communication module202sends and receives data, via the communication unit245, to and from one or more of the mobile system123, the client device103, the social network server101, the data log server109, the service server107, and the calendar server177. For example, the communication module202receives, via the communication unit245, social network data from the social network server101and sends the social network data to the journey estimation module204. In another example, the communication module202receives digital data from the verification module210and sends the digital data to the vehicle via the communication unit245.

In some implementations, the communication module202receives data from components of the device update application181and stores the data in one or more of the storage185and the memory227. In some implementations, the communication module202retrieves data from the storage185or the memory227and sends the data to one or more components of the device update application181. In some implementations, the communication module202may handle communications between components of the device update application181. For example, the communication module202receives journey context data from the journey estimation module204and sends the journey context data to the update determination module206.

The journey estimation module204can be software including routines for estimating a future journey for a user. The journey estimation module204may be communicatively coupled to the bus220via a signal line224. In some implementations, the journey estimation module204receives historical journey data associated with the vehicle or a user operating on the vehicle from the memory227, the storage185, or the data log server109. The user may be a driver or a passenger of the vehicle. The journey estimation module204estimates a future journey for the vehicle based on the historical journey data. For example, the journey estimation module204estimates journey context data describing the estimated future journey based on the historical journey data. In a further example, if the historical journey data indicates that the user usually drives the vehicle to work from home between 8:00 AM and 8:30 AM on weekdays, the journey estimation module204estimates a future journey for the vehicle as a journey departing from home to work with a departure time of 8:00 AM in the next morning.

In some implementations, the journey context data includes an estimated start point, an estimated destination, an estimated departure time, an estimated route, an estimated duration, and an estimated arrival time at the destination, etc. The journey context data may include other data associated with the estimated future journey such as one or more users estimated to participate in the future journey (e.g., a driver and one or more passengers potentially engaging in the estimated future journey) and a purpose or a goal of the estimated future journey (e.g., picking up a person from an airport, a vacation trip, a trip for shopping, etc.). In some other implementations, at least part of the journey context data is not obtained from estimation. For example, a user may manually input journey context data for a future journey including, but not limited to, a departure time, a destination, one or more participants in the future journey, etc. In another example, the journey context data may include identity data related to a mobile system123(e.g., a vehicle identifier, a model and a make of the vehicle) that the user uses to take the future journey or identity data related to a mobile client device188(e.g., data identifying a smartphone) that the user brings along during the future journey. In another implementation, journey context data which is journey related may be newly created or modified during a journey. Other example journey context data are possible.

In some implementations, the journey estimation module204receives time synchronicity data from the memory227or from a GPS sensor in the mobile client device188. The journey estimation module204determines a synchronized local time associated with the vehicle based on the time synchronicity data. The journey estimation module204receives one or more of weather data from a weather server (not shown), calendar data from the calendar server177, and social network data from the social network server101. The journey estimation module204estimates a future journey for the vehicle based on one or more of the synchronized local time, the weather data, the calendar data, and the social network data. The journey estimation module204generates journey context data describing the estimated future journey. For example, if the calendar data indicates that the user has a doctor appointment at9:00AM in the next morning and a travel time from home to the doctor's office is less than half an hour, the journey estimation module204may estimate a future journey for the user as a journey from home to the doctor's office with an estimated departure time of 8:30 AM in the next morning.

The time synchronicity data can be data used to synchronize a device time with a universal time. For example, the time synchronicity data can be configured to synchronize a local time associated with a vehicle or a mobile client device with a universal time. In some implementations, a local time may be synchronized with the Coordinated Universal Time (UTC) defined by International Telecommunications Union Recommendation (ITU-R TF.460-6) according to a corresponding local time zone. In some other implementations, a local time may be synchronized by timekeeping technologies including GPS satellites and a network time protocol (NTP). The network time protocol may include a networking protocol for clock synchronization between computer systems over packet-switched variable-latency data networks.

In some implementations, the journey estimation module204sends the journey context data describing the estimated future journey to one or more of the update determination module206and the verification module210. In some other implementations, the journey estimation module204stores the journey context data in the storage185or the memory227.

The update determination module206can be software including routines for determining digital data such as digital data for the vehicle. The update determination module206may be communicatively coupled to the bus220via a signal line226. In some implementations, the update determination module206receives journey context data describing an estimated future journey from the journey estimation module204, where the journey context data includes an estimated start point, an estimated destination, an estimated route, an estimated departure time, and an estimated arrival time associated with the estimated future journey.

The update determination module206determines digital data for the vehicle based on the journey context data. For example, assume the journey context data indicates that the user may take a journey to a particular destination in the next five hours. The update determination module206determines digital data for the vehicle that includes navigation information for the future journey, recent road construction information associated with the estimated route of the future journey, recommended restaurants along the estimated route, deals and coupons for stores along the estimated route, and entertainment content data customized for one or more users estimated to participate in the future journey, etc.

In some implementations, the digital data may include software program updates for updating one or more software programs installed in the vehicle. In some implementations, the digital data includes time-sensitive digital data associated with an expiration time. The time-sensitive digital data may expire after the expiration time. For example, the time-sensitive digital data includes time-sensitive deals for stores or restaurants along the estimated route of the future journey, where the time-sensitive deals are valid at least during a time period between the estimated departure time and the estimated arrival time. In some implementations, the digital data includes location-based digital data. For example, the digital data includes road construction information associated with the estimated route of the future journey. In some implementations, the digital data includes content data customized for one or more users that are likely to participate in the estimated future journey. For example, if the journey context data indicates that a child will be onboard in the vehicle during the estimated journey, the digital data may include the child's favorite cartoons. Example content data includes, but is not limited to, videos, movies, audio books, TV shows, podcasts, and music, etc.

In some implementations, the update determination module206retrieves the digital data from one or more servers (e.g., the service server107) while the mobile client device188has access to the network105. The update determination module206may also receive user input data via a user interface presented on a display device coupled to the mobile client device188. The update determination module206stores the digital data and the user input data in the storage185. In response to the device detection module208detecting the presence of the vehicle in proximity to the mobile client device188, the update determination module206sends the digital data and the user input data to the verification module210for verifying the digital data and transmitting the digital data to the vehicle. For example, the update determination module206on the mobile client device188determines the digital data and retrieves the digital data for the vehicle from the service server107while the mobile client device188has access to a Wi-Fi network at home. The mobile client device188temporarily stores the digital data in the storage185prior to a journey so that the mobile client device188may send the digital data to the vehicle when the user carrying the mobile client device188starts the journey.

The device detection module208can be software including routines for detecting the presence of the vehicle. The device detection module208may be communicatively coupled to the bus220via a signal line280. In some implementations, the device detection module208scans for the vehicle in the surrounding environment. If the vehicle is in proximity to the mobile client device188, the device detection module208detects the presence of the vehicle. For example, if the user carrying the mobile client device188is onboard in the vehicle, the device detection module208stored on the mobile client device188detects the presence of the vehicle. In some examples, the mobile client device188and the vehicle are at the same location when the device detection module208detects the presence of the vehicle.

Alternatively or additionally, the device detection module208receives a user input indicating the vehicle is in proximity to the mobile client device188. For example, when the user has entered the vehicle, the user may issue a command on the mobile client device188for transferring the digital data from the mobile client device188to the vehicle. The device detection module208detects that the vehicle is in proximity to the mobile client device188based on the user command.

The device detection module208authenticates the vehicle using one or more authentication procedures. For example, the device detection module208on the mobile client device188may receive a beacon signal from the vehicle and authenticates the vehicle based on the beacon signal. The beacon signal may include an identifier of the vehicle. The device detection module208establishes a communication link between the mobile client device188and the vehicle for sending the digital data to the vehicle and receiving new mobile system data from the vehicle. In some implementations, the communication link includes a wireless connection (e.g., Bluetooth®, NFC, etc.). In some other implementations, the communication link includes a wired connection (e.g., a connection using a USB line, a connection using a cable, etc.).

In some implementations, the device detection module208may cooperate with a system detection module306stored in the vehicle for detecting the presence of the vehicle, authenticating the vehicle, and establishing a communication link between the mobile client device188and the vehicle.

The verification module210can be software including routines for verifying digital data for the vehicle. The verification module210may be communicatively coupled to the bus220via a signal line228. In some implementations, the verification module210determines a current time based on the time synchronicity data. The verification module210receives location data from a GPS sensor coupled to the mobile client device188or the vehicle. The verification module210determines a current location of the mobile client device188or the vehicle based on the location data. The verification module210receives journey context data from the journey estimation module204. The verification module210verifies whether the digital data is still valid for the vehicle based on one or more of the current time, the current location, and the journey context data as described below in more detail.

In some implementations, the digital data includes time-sensitive digital data that expires after an expiration time. The verification module210verifies whether the time-sensitive digital data is still valid for the vehicle based on the current time and the expiration time. For example, the verification module210determines that the current time is before the expiration time of the time-sensitive digital data, and verifies that the time-sensitive digital data is still valid for the vehicle responsive to the current time being before the expiration time. If the current time is after the expiration time, the verification module210determines that the time-sensitive digital data has expired and is invalid. The expired digital data may not be transmitted to the vehicle.

In a further example, the journey estimation module204may estimate a future journey describing that the user may drive the vehicle to a shopping mall in the next morning based on the user's calendar data. The update determination module206may determine time-sensitive deals for the user that may expire after 12:00 PM in the next day and may store the time-sensitive deals in the mobile client device188prior to the start of the journey. If the user carrying the mobile client device188enters the vehicle and departs from home before 12:00 PM in the next day, the verification module210determines that the time-sensitive deals are valid at the time when the user starts the vehicle. In this case, data describing the time-sensitive deals may be transmitted from the mobile client device188to the vehicle at the time when the user starts the vehicle. However, if the user enters the vehicle and departs from home after 12:00 PM in the next day, the verification module210determines that the time-sensitive deals have expired. In this case, the invalid time-sensitive deals may not be sent to the vehicle.

In some implementations, the digital data includes location-based digital data that is customized for the estimated journey. The verification module210verifies whether the location-based digital data is still valid for the vehicle based on the current location. For example, the verification module210determines that the current location is along the estimated route of the journey and verifies that the location-based digital data is still valid for the vehicle responsive to the current location being along the estimated route of the journey.

In a further example, the journey estimation module204may estimate a route associated with a future journey for the user. The update determination module206may determine location-based digital data for the vehicle that includes road construction information along the estimated route. The update determination module206stores the location-based digital data in the mobile client device188before the start of the journey. At the time of travel, if the user drives the vehicle along the estimated route, the update determination module206determines that the location-based digital data is still valid. In this case, the location-based digital data may be transmitted from the mobile client device188to the vehicle. However, if the user does not drive along the estimated route, the update determination module206determines that the location-based digital data is invalid. In this case, the location-based digital data may not be transmitted to the vehicle.

In some implementations, the digital data includes content data customized for one or more users that are likely to participate in the journey. At the time when the journey starts, the verification module210verifies whether the digital data is valid for the vehicle by determining whether the one or more users are actually participating in the journey. For example, if a first user from the one or more users does not participate in the journey, the verification module210determines that content data customized for the first user is invalid for the vehicle. However, if the first user participates in the journey, the verification module210determines that the content data customized for the first user is valid for the vehicle.

If the digital data is valid for the vehicle, the verification module210sends the digital data to the vehicle. For example, the digital data may include a series of updates having different data sizes, and the verification module210may determine an order to transmit the series of updates to the vehicle based on the different data sizes. The verification module210may transmit an update with a smaller size before another update with a larger size.

In some implementations, at least part of the digital data may be transmitted to the vehicle when the user carrying the mobile client device188enters the vehicle. In some implementations, at least part of the digital data may be transmitted to the vehicle when the user starts the vehicle. In some implementations, at least part of the digital data may be transmitted to the vehicle when the journey starts. Alternatively or additionally, at least part of the digital data may be transmitted to the vehicle based on a progress of the journey. For example, digital data associated with a location may be transmitted to the vehicle before the vehicle arrives at the location, so that the vehicle may present the digital data to the user prior to arriving at the location. In some implementations, different portions of the digital data are stored in different mobile client devices188. The different portions of the digital data may be transmitted to the vehicle simultaneously from the different mobile client devices to achieve a faster data transfer speed rather than using a single mobile client device to transfer the digital data.

If the digital data is not valid, the verification module210does not send the digital data to the vehicle. In some implementations, a first portion of the digital data is valid and a second portion of the digital data is invalid, the verification module210only sends the first portion of the digital data to the vehicle.

The user interface module212can be software including routines for generating graphical data for providing user interfaces. The user interface module212may be communicatively coupled to the bus220via a signal line230. In some implementations, the user interface module212generates graphical data for providing a user interface that allows a user to input data via the user interface. The user interface module212sends the graphical data to a display coupled to the mobile client device188for presenting the user interface to the user. The user interface module212may generate graphical data for providing other user interfaces to the user.

The data forwarding module214can be software including routines for forwarding mobile system data from the mobile client device188to the data log server109. The data forwarding module214may be communicatively coupled to the bus220via a signal line235. In some implementations, the data forwarding module214determines whether there is new mobile system data (e.g., new vehicle data) in the vehicle. If there is new mobile system data in the vehicle, the data forwarding module214retrieves the new mobile system data from the vehicle and forwards the new mobile system data to the data log server109so that the data log server109stores the new mobile system data in a storage device associated with the data log server109.

Example mobile system data associated with a vehicle (or example vehicle data) includes, but is not limited to, charging configuration data for the vehicle, location data describing a current location of the vehicle, a synchronized local time, and vehicle usage data describing historical usage of the vehicle (e.g., historical journey data including routes, start points, destinations, durations, departure times, arrival times, directions, etc. associated with historical journeys).

In some implementations, the data forwarding module214receives the new mobile system data from the vehicle before or after the verification module210sends the digital data to the vehicle. In some other implementations, the data forwarding module214receives the new mobile system data from the vehicle while the verification module210sends the digital data to the vehicle simultaneously.

An example use of the device update application181is described herein. The device update application181allows a user to push digital data from the mobile client device188to a vehicle and to pull vehicle data from the vehicle. When the mobile client device188has access to the network105prior to a start of a journey (e.g., the mobile client device188has access to the Internet from a home network), the device update application181determines digital data for the vehicle based on the journey context data describing the journey. The device update application181retrieves the digital data from one or more servers and stores the digital data in the mobile client device188prior to the start of the journey. When the user gets into the vehicle and starts the vehicle, the device update application181detects the presence of the vehicle. The device update application181verifies that the digital data is valid for the vehicle and transmits the digital data to the vehicle.

In some implementations, the device update application181may use the journey context data to optimize the data pushing process from the mobile client device188to the vehicle. For example, the device update application181may determine digital data matching the journey context data and may push the matching digital data to the vehicle.

If there are multiple users with multiple mobile client devices188onboard in the vehicle, the multiple mobile client devices188may transmit respective digital data to the vehicle simultaneously. If the vehicle has new vehicle data, the vehicle may transmit the new vehicle data to the mobile client device188. The mobile client device188may forward the new vehicle data to the data log server109when the mobile client device188has access to the network105again.

Example System Update Application

Referring now toFIG. 3, an example of the system update application125is shown in more detail.FIG. 3is a block diagram of the mobile system123that includes the system update application125, a processor325, a communication unit345, the storage127, and a memory327according to some examples. The components of the mobile system123are communicatively coupled by a bus320. The storage127is communicatively coupled to the bus320via a signal line342.

The processor325may have structure similar to the processor225and may provide functionality similar to the processor225. The processor325is coupled to the bus320for communication with the other components via a signal line338. The memory327may have structure similar to the memory227and may provide functionality similar to the memory227. The memory327is coupled to the bus320for communication with the other components via a signal line344. The communication unit345may have structure similar to the communication unit245and may provide functionality similar to the communication unit245. The communication unit345is coupled to the bus320for communication with the other components via a signal line346. The description for the processor325, the memory327, and the communication unit345will not be repeated here.

In the illustrated implementation shown inFIG. 3, the system update application125includes a communication module302, a data log module304, a system detection module306, a data upload module308, an update implementation module310, and a user interface module312. These components of the system update application125are communicatively coupled to each other via the bus320.

In some implementations, modules of the system update application125can be stored in a single server or device. In some other implementations, modules of the system update application125can be distributed and stored across multiple servers or devices. Furthermore, the separation of various components, modules, and servers in the implementations described herein should not be understood as requiring such separation in all implementations. In some implementations, the described components, modules, devices, or servers can generally be integrated together in a single component, module, device, or server.

In some implementations, each of the modules302,304,306,308,310, and312in the system update application125can be a set of instructions executable by the processor325to provide the functionality described below. In some other implementations, each of the modules302,304,306,308,310, and312can be stored in the memory327of the mobile system123and can be accessible and executable by the processor325. Each of the modules302,304,306,308,310, and312may be adapted for cooperation and communication with the processor325and other components of the mobile system123.

The communication module302can be software including routines for handling communications between the system update application125and other components of the mobile system123. The communication module302may be communicatively coupled to the bus320via a signal line322. The communication module302sends and receives data, via the communication unit345, to and from the mobile client device188. For example, the communication module302receives, via the communication unit345, digital data from the mobile client device188and sends the digital data to the update implementation module310. In another example, the communication module302receives new mobile system data from the data upload module308and sends the new mobile system data to the mobile client device188via the communication unit345.

In some implementations, the communication module302receives data from components of the system update application125and stores the data in one or more of the storage127and the memory327. In some implementations, the communication module302retrieves data from the storage127or the memory327and sends the data to one or more components of the system update application125. In some implementations, the communication module302may handle communications between components of the system update application125.

The data log module304can be software including routines for aggregating mobile system data associated with the mobile system123. The data log module304may be communicatively coupled to the bus320via a signal line324. In some implementations, the data log module304records mobile system data (e.g., vehicle data) associated with the mobile system123. The data log module304stores the mobile system data in the storage127. Additionally or alternatively, the data log module304may send the mobile system data to the data upload module308, causing the data upload module308to upload the mobile system data to the mobile client device188.

The system detection module306can be software including routines for detecting the presence of the mobile client device188. The system detection module306may be communicatively coupled to the bus320via a signal line326. In some implementations, the system detection module306scans for the mobile client device188in the surrounding environment. If the mobile client device188is in proximity to the mobile system123, the system detection module306detects the presence of the mobile client device188. For example, if the user carrying the mobile client device188is onboard in the mobile system123, the system detection module306detects the presence of the mobile client device188. Alternatively or additionally, the system detection module306receives a user input indicating the mobile client device188is in proximity to the mobile system123. The system detection module306detects the presence of the mobile client device188based on the user input.

The system detection module306may cooperate with the device detection module208to authenticate the one or more mobile client devices188using one or more authentication procedures. For example, the system detection module306on the mobile system123may receive a beacon signal from the mobile client device188and authenticates the mobile client device188based on the beacon signal. The beacon signal may include an identifier of the mobile client device188. The system detection module306may cooperate with the device detection module208to establish a communication link between the mobile client device188and the mobile system123. In some implementations, the communication link includes a wireless connection (e.g., Bluetooth®, NFC, etc.). In some other implementations, the communication link includes a wired connection (e.g., a connection using a USB line, a connection using a cable).

The data upload module308can be software including routines for uploading mobile system data to the mobile client device188. The data upload module308may be communicatively coupled to the bus320via a signal line380. In some implementations, the data upload module308receives mobile system data from the data log module304. In some other implementations, the data upload module308retrieves the mobile system data from the storage127. Responsive to the system detection module306detecting the presence of the mobile client device188, the data upload module308sends the mobile system data to the mobile client device188. For example, the data upload module308determines new mobile system data associated with the mobile system123and uploads the new mobile system data to the mobile client device188.

The update implementation module310can be software including routines for implementing updates in the mobile system123. The update implementation module310may be communicatively coupled to the bus320via a signal line328. In some implementations, the update implementation module310receives digital data (e.g., update data describing updates) from the mobile client device188and applies the updates in the mobile system123. For example, the digital data includes software program updates, and the update implementation module310applies the software program updates to upgrade software programs installed in the mobile system123. In another example, the digital data includes one or more of time-sensitive updates (e.g., deals, coupons, etc.) and location-based updates (e.g., updated navigation information to a destination, recent road construction information along a route, etc.). The update implementation module310provides one or more of the time-sensitive updates and the location-based updates to a user operating on the mobile system123using a speaker system or a display device coupled to the mobile system123. In yet another example, the digital data includes entertainment content data (e.g., movies, music, etc.) customized for one or more users onboard in the mobile system123, and the update implementation module310provides the entertainment content data to the one or more users.

The user interface module312can be software including routines for generating graphical data for providing user interfaces. The user interface module312may be communicatively coupled to the bus320via a signal line330. In some implementations, the user interface module312generates graphical data for providing a user interface that allows a user to input data via the user interface. The user interface module312sends the graphical data to a display device coupled to the mobile system123for presenting the user interface to the user. The user interface module312may generate graphical data for providing other user interfaces to the user.

An example use of the system100includes transferring digital data from storage systems to mobile systems123. Example storage systems may include, but are not limited to, the social network server101, the data log server109, the service server107, the calendar server177, and any other systems including one or more storage devices. In some implementations, the storage systems may be stationary storage systems.

In some implementations, an update application in the system100(e.g., an application similar to a system update application125or a device update application181) may receive data describing a list of first mobile systems123and a second mobile system123. The update application determines digital data to transfer from a storage system to the second mobile system123. The digital data includes software update data and other suitable digital data described herein. In some implementations, the list of first mobile systems123may include one or more mobile client devices188(e.g., smartphones). Alternatively or additionally, the list of mobile systems123includes one or more vehicles. The second mobile system123may include a vehicle.

The update application detects a first network availability between the storage system and one or more first mobile systems123from the list of first mobile systems123. For example, the update application detects that the one or more first mobile systems123have access to the network105and is connected to the storage system via the network105. Responsive to detecting the first network availability, the update application transfers the digital data from the storage system to the one or more first mobile systems123. The update application detects a second network availability between the second mobile system123and at least one first mobile system123from the one or more first mobile systems123. For example, the update application detects that the at least one first mobile system123is in proximity to the second mobile system123and is capable of communicating data with the second mobile system123. In another example, the update application detects that the at least one first mobile system123is capable of establishing communication links with the second mobile system123. The update application verifies that the digital data is valid for the second mobile system123based on journey context data associated with the second mobile system123. In some examples, the update application verifies that the digital data is valid for the at least one first mobile system123based on journey context data associated with the at least one first mobile system123. Responsive to detecting the second network availability and the digital data being valid, the update application transfers the digital data from the at least one first mobile system123to the second mobile system123.

Another example use of the system100includes transferring digital data from mobile systems123to storage systems. In some implementations, the update application receives data describing a list of first mobile systems123and a second mobile system123. The update application determines digital data to transfer from the second mobile system123to a storage system. In some implementations, the digital data may include mobile system data associated with the second mobile system123. Alternatively or additionally, the digital data includes software update data.

The update application detects a first network availability between the second mobile system123and one or more first mobile systems123from the list of first mobile systems123. For example, the update application detects that each of the one or more first mobile systems123is capable of establishing communication links with the second mobile system123. Responsive to detecting the first network availability, the second mobile system123transfers the digital data from the second mobile system123to the one or more first mobile systems123.

The update application detects a second network availability between the storage system and at least one first mobile system123from the one or more first mobile systems123. For example, the update application detects that the at least one first mobile system123has access to the network105and is capable of communicating with the storage system via the network105. The update application verifies that the digital data is valid for the at least one first mobile system123based on journey context data associated with the at least one first mobile system123. Responsive to detecting the second network availability and the digital data being valid, the update application transfers the digital data from the at least one first mobile system123to the storage system. The update application verifies that the transferred digital data is valid for the storage system.

In some implementations, the digital data such as the software update data is transferred from the second mobile system123to the storage system responsive to detecting the second mobile system123being in a key-off state. The update application determines a state of a battery management system in the second mobile system123. For example, the update application determines that a state of charge for a battery in a vehicle is at least 80% full. In another example, the update application determines that the battery has sufficient power for performing software update (e.g., the state of charge of the battery being above a predetermined threshold). The update application performs software update on the second mobile system123based on the state of charge of the battery. In some implementations, the update application also performs software update on the one or more first mobile systems123.

Methods

Referring now toFIG. 4, an example of a method400for communicating digital data from the mobile client device188to the mobile system123is described. In some implementations, the method400may be performed by modules of the device update application181stored on the mobile client device188. For example, the journey estimation module204estimates402journey context data that includes data describing an estimated departure time associated with an estimated future journey. The update determination module206determines404digital data to transmit to the mobile system123based on the journey context data. The device detection module208detects406the presence of the mobile system123. The verification module210determines408a current time based on time synchronicity data. The verification module210verifies410that the digital data is valid for the mobile system123based on the journey context data and the current time. The verification module210sends412the digital data to the mobile system123responsive to detecting the presence of the mobile system123and the digital data being valid for the mobile system123.

FIGS. 5A and 5Bare flowcharts of another example method500for communicating digital data from the mobile client device188to the mobile system123. In some implementations, the method500may be performed by modules of the device update application181stored on the mobile client device188. Referring toFIG. 5A, the communication module202receives502historical journey data from the data log server109or the storage185. The journey estimation module204estimates504journey context data associated with an estimated future journey based on the historical journey data. The journey context data includes an estimated departure time, an estimated arrival time, an estimated destination, and an estimated route associated with the estimated future journey. The update determination module206determines506digital data for the mobile system123based on the journey context data. The communication module202receives508user input data. The update determination module206stores510the digital data and the user input data on the mobile client device188. The device detection module208detects512the presence of the mobile system123. The device detection module208authenticates514the mobile system123.

Referring toFIG. 5B, the device detection module208establishes516a communication link between the mobile client device188and the mobile system123. The verification module210determines518a current time based on time synchronicity data. The verification module210receives520location data describing a current location. The verification module210determines522whether the digital data is valid for the mobile system123based on one or more of the current time, the current location, and the journey context data. If the digital data is valid, the method500moves to block526. Otherwise, the method500moves to block524. At block524, the verification module210transmits524the user input data from the mobile client device188to the mobile system123. At block526, the verification module210transmits the digital data and the user input data from the mobile client device188to the mobile system123.

FIG. 6is a flowchart of an example method600for communicating new mobile system data from the mobile system123to the mobile client device188. In some implementations, the method600may be performed by modules of the system update application125stored on the mobile system123. For example, the system detection module306detects602the presence of the mobile client device188. The system detection module306authenticates604the mobile client device188. The system detection module306establishes606a communication link between the mobile client device188and the mobile system123. The data upload module308determines608new mobile system data associated with the mobile system123. The data upload module308uploads610the new mobile system data to the mobile client device188.

Reference in the specification to “some implementations” or “some instances” means that a particular feature, structure, or characteristic described in connection with the implementations or instances can be included in at least one implementation of the description. The appearances of the phrase “in some implementations” in various places in the specification are not necessarily all referring to the same implementations.

The specification can take the form of some entirely hardware implementations, some entirely software implementations or some implementations containing both hardware and software elements. In some preferred implementations, the specification is implemented in software, which includes, but is not limited to, firmware, resident software, microcode, etc.