Beam device architecture

A communications system provides access to services when direct Internet connectivity is not practical. The system includes a beam modem and a beam API server. The beam modem receives a web request from a client device through a short range interface, modifies the request, and transmits the modified web request to the beam API server via a cellular connection. The beam API server then extracts an endpoint address and request data from the web request and determines an external web service from the endpoint address. The server transmits the request data to the external web service and, after receiving a response to the request data, reduces the size of the response data and sends it back to the beam modem via the cellular connection. The beam modem converts the response data to client device readable form and transmits it to the client device via the short range interface.

TECHNICAL FIELD

This application relates generally to telecommunications, and particularly to systems and methods for providing access to data services in severely network-constrained environments.

BACKGROUND

In many parts of the world, people have become accustomed to nearly constant data connectivity through Wi-Fi, cellular, or other connections. Indeed, many consider connection to certain electronic services as essential. This is especially true when traveling away from home in an unfamiliar place. In these situations, travel applications provide guidance essential to creating an enjoyable experience for the traveler.

However, there are many regions in which data connectivity is limited and/or prohibitively expensive. For example, in some areas like China, it may be difficult to buy a local subscriber identification module (SIM) or card. A SIM card is an integrated circuit chip that securely stores the international mobile subscriber identity (IMSI) number and its related key, which are used to identify and authenticate subscribers on mobile telephony devices (such as mobile phones and computers). Without a local SIM card, users may not be able to access data networks in these areas.

Also, in some areas like Cuba, the Internet is characterized by a low number of connections, limited bandwidth, censorship, and high cost. The Internet in Cuba has stagnated since its introduction in the late 1990s because of lack of funding, tight government restrictions, the U.S. embargo, and high costs. Similarly, the Internet in some parts of Africa is limited by a lower penetration rate when compared to the rest of the world. Indeed, most African countries currently have very limited internet availability. Additionally, the network infrastructure that does exist on the continent is concentrated in South Africa, Morocco, Egypt and smaller economies like Mauritius and Seychelles.

SUMMARY

The present disclosure provides systems and methods to provide access to services that otherwise would require an Internet connection. A communications system for providing access to services includes a client device, a beam modem communicatively coupled to the client device, and a beam application programming interface (API) server communicatively coupled to the beam modem. The client device and beam modem are connected via short range transceivers. The beam modem connects to the beam API server via a cellular transceiver in the beam device. The client device is programmed to generate a web request consisting of an endpoint address and request data, encrypt the web request, and transmit the encrypted web request to the beam modem via the short range transceiver in the client device. The beam modem is programmed to receive the encrypted web request via the short range transceiver in the beam modem, decrypt the encrypted web request, add hypertext transfer protocol (HTTP) headers to the web request to create a modified web request, and transmit the modified web request to the beam API server via the cellular transceiver. The beam API server is programmed to receive the modified web request, determine an external web service based at least in part on the endpoint address in the request, transmit the request data to the external web service, and receive response data from the external web service in response to the request data. After receiving the response data, the beam API server is programmed to reduce the size of the response data by (1) removing unnecessary data, (2) minifying the response data, and (3) compressing the response data to produce reduced response data. The beam API server then transmits the reduced response data to the beam modem. After receiving the reduced response data, the beam modem is further programmed to decompress the reduced response data to produce decompressed response data, encrypt the decompressed response data and transmit the decompressed response data to the client device via the second short range transceiver.

DETAILED DESCRIPTION

FIG. 1is an exemplary embodiment of the beam modem or gateway100. As shown inFIG. 1, the beam modem100may include a primary housing101and a secondary housing102. In this example, the secondary housing102is a physical design feature and does not contain any of the electrical components of the beam modem100. In other embodiments, the secondary housing102may include electrical components of the beam modem100including, for example, antennas or batteries. The primary housing101may be made of two parts101A and101B as shown. In this example, the two parts101A and101B are for manufacturing convenience. In the embodiment shown inFIG. 1, the primary housing101encloses a printed circuit board (PCB) and the internal components of the beam modem100.

The beam modem100components may include a short range transceiver (such as a Bluetooth Low Energy (BLE) system on a chip (SoC)), a cellular transceiver/modem, an antenna used for amplifying the signals of the modem (that may be adhesive-backed or glued on the inside of the housing101), and a subscriber identity module or subscriber identification module (SIM) and SIM card (for operating on cellular networks). Additional components of the beam modem100may include a charging module103(a charging port or wireless charging unit), a charger (such as an integrated circuit (IC) designed to charge the battery from voltage provided by the charging port), a battery (such as a high-capacity Li—Po battery), current filtering circuitry (such as a system of passive components (inductors, capacitors) designed to condition the power going to the modem), a latching power circuit (for example, an IC which connects and disconnects power from battery to the device based on presses of an external interface), an external interface104(such as a button) that serves as both a way to turn the device on/off and indicate the modem status (for example, with an LED that indicates status), a voltage regulator that converts battery voltage to a voltage usable for the BLE SoC, transistors used for driving a high-voltage LED in the external interface through the low-voltage BLE SoC, a programming header used for updating the firmware on the BLE SoC, and/or a resistor divider (a connection of two resistors used to convert high voltage of the battery into voltage range measurable by the BLE SoC).

FIG. 2is an exemplary embodiment of the beam modem or gateway100of the present disclosure as shown inFIG. 1, with one part of the secondary housing101B removed to reveal the PCB105inside.FIG. 2also illustrates the integration of electrical components106described above on the PCB105. The short range transceiver in the beam modem100may be a Bluetooth, ZigBee, or infrared transceiver or the like. In one example, the short range transceiver is a BLE SoC such as a Rigado Bluetooth 4.1 Module (BMD-200-B-R). BLE may also be known as Bluetooth Smart or Version 4.0+ of the Bluetooth specification. BLE is a low-power and application-friendly version of Bluetooth. In one example, the cellular transceiver or modem is a GSM Module such as the Telit HE910DAT204R701. The SIM module may include a Nano-SIM holder such as the 732-5954-1-ND from Wurth Electronics, Inc. The charger may be an IC such as the MCP73832T-2ACI/OTTR-ND from Microchip Technology.

FIG. 3illustrates an example of a system300in which a beam modem301enables communication between a client device302and a beam API server303via a network304such as the Internet to provide access to services that otherwise would otherwise be unavailable. The network304represents communication pathways between the client device302(e.g., consumers) and the beam API server303. The network can also utilize dedicated or private communication links (e.g. wide area networks (WANs), metropolitan area networks (MANs), or local area networks (LANs)) that are not necessarily part of the Internet. The network uses standard communications technologies and/or protocols.

The client devices302are used for interacting with the beam API server303. A client device302can be any device that is—or incorporates—a computer such as a smartphone, tablet, smartwatch, laptop computer, notebook or the like. A computer is a device having one or more general or special purpose processors, memory, storage, and networking components (either wired or wireless). The client device302executes an operating system, for example, a Microsoft Windows-compatible operating system (OS), Apple OS X or iOS, a Linux distribution, or Google's Android OS. There are several ways for a client device302to interact with the beam system. First, the client device302may include a dedicated application for accessing the beam API server303. Further, third-party applications enable the interaction through, for example, an SDK used with third-party applications that allows the third-party applications to access the beam API server303. Additionally, the beam software may be included on the system level of the client device operating system (similar to that for a Bluetooth headset or Bluetooth speakers). In this way any application (e.g., dedicated, third-party, or system applications like web browsers) can have access to the beam system provided by client device's302operating system.

The beam API server303communicates with external web services (not shown) and transfers information between the client device302and the external web services directly (communication path305) at times when the client device302has direct network connectivity such as Internet connectivity. The beam API server303communicates with the external web services and modifies and transfers information between the client device302and the external web services via the beam modem301when the client device302does not have network connection such as Internet connectivity.

Examples of external web services include third party web services such as accommodation reservation systems, dining reservation systems, rideshare reservation systems, retail systems, and the like. The external web services may include online booking systems that present web pages or other web content that form the basic interface visible to users. Users use their respective client devices302to access information and provide data to the external web services.

When traveling in an area in which network connection is unavailable or unreliable or in which network connection is prohibitively expensive or inconvenient, the system shown inFIG. 3allows a client device302to connect to external web services without a direct network connection to the client device302. As shown inFIG. 3, in one example, the system includes a client device302, a beam modem301, and a beam API server303. The client device302includes short range transceiver like a BLE transceiver. The beam modem301communicates with the client device302via a short range transceiver. The beam modem301also includes a cellular transceiver/modem. The beam modem301communicates with the beam API server303via the cellular modem. The beam modem301can be configured specifically for the needs of the area in which the user is traveling. For example, if the user is traveling to Cuba, the beam modem301may be configured to connect to local cellular networks including containing a location-specific SIM card. Also, the beam modem301may include a worldwide SIM card which can be configured for any country or region. In one embodiment, the client device302includes a SIM card from a different country from the country where the beam device301is being used. Similarly, the client device302may also have a SIM card from a different country from the SIM card used in the beam device301. In another embodiment, the client device302may include a SIM card from a country, and the beam modem301may include a worldwide SIM card which can be configured for any country or region.

When the client device302needs to get information from an external web service but does not have connection to the network304, it communicates with the beam modem301using the short range transceivers. The client device302is programmed to generate a web request that includes an endpoint address (such as an IP address) for the external web service and request data. The client device302is also programmed to send the web request to the beam modem301. The client device302may include a dedicated application for communicating with the beam modem301and/or beam API server303. The client device302may also encrypt the web request for transmission to the beam modem301.

The beam modem301is programmed to receive the web request via a short range transceiver and decrypt the web request if necessary. As described above, the web request includes an endpoint address for the external web service and request data. To transfer the contents of the web request to the beam API server303, the beam modem301may add transfer protocol headers to the web request to enable transmission on the network304. For example, the beam modem may add hypertext transfer protocol (HTTP) headers to the web request to create a modified web request. In other examples, the beam modem301is programmed to add transmission control protocol (TCP) headers to the web request to create a modified web request. Adding HTTP headers is advantageous because HTTP requests are more universally accepted. However, HTTP requests are also more data intensive than TCP requests. Accordingly, in some embodiments the system300includes a beam modem301configured to add TCP headers to the web request and a beam API server configured to receive TCP requests.

After creating the modified web request, the beam modem301transmits the modified web request to the beam API sever303via its cellular modem and a network304. The beam API server303is programmed to receive the modified web request, extract the (1) endpoint address and (2) request data from the web request, and determine an external web service based at least in part on the endpoint address. The beam API server303is programmed to then transmit the request data to the external web service and receive response data from the external web service in response to the request data. After that, the beam API server303is programmed to reduce the size of the response data by (1) removing unnecessary data, (2) minifying the response data, and (3) compressing the response data to produce reduced response data. The reduction in size of the response data ensures that the limited data connection between the beam API server303and the beam modem301is used efficiently.

In some examples, removing unnecessary data may include removing some of the results that the external web service sends in response to the request data. For example, if the request data is a search, and the external web service returns 100 search results each with 20 fields, the beam API server303may remove all but 10 of the search results and all but 5 of the fields in each search result. The beam API server303may determine which search results and fields to keep based on the type of search, the type or identity of the external web service, information about the user, information about the current location of the user, and the like. In another example, the beam API server303may remove data-intensive fields, such as images and videos, from the response data.

Additionally, the beam API server303may aggregate responses from the external web services before reducing the aggregated responses. For example, a single request for information may result in multiple rounds of back and forth communication between the beam API server303and the external web services. To minimize traffic between the beam API server303and the beam modem301and client device302, the beam API server aggregates the back and forth communications with the external web service, isolates the data responsive to the request data, and removes the extraneous information before sending the reduced response data to the beam modem301. Additionally, if the external web service sends periodic or frequent updates in response to request, the beam API server303may be programmed to reduce the rate at which the updates are sent by sending updates only at specific time intervals or upon specific events. Indeed, logic in the beam API server303may be configured to only send updates at certain time intervals so that the external web service does not need to be in constant contact with the client device302. The client device302is accordingly programmed (via an application for example) to expect the reduced data responses provided by the beam API server303.

One example of the beam API server303reducing frequent updates is use with a vehicle request service such as Uber™ or Lyft™. Vehicle request services include online transportation networks that allow consumers with connected devices to submit vehicle requests which are assigned to a driver and alert the driver to the location of the customer. After a vehicle request is received by an external vehicle request web service, the vehicle request service may send frequent updates to apprise the client of the location of the assigned driver's vehicle. On many networks, the amount of data used for these updates is insignificant. In other situations, the amount of data required for these frequent updates is undesirable. The beam API server303may be programmed to send updates on the vehicle location at certain intervals (e.g., every 2 minutes or every 1 mile driven by the requested vehicle) or at certain events (e.g., check points along the way or at arrival).

In some examples, removing unnecessary data may include removing unnecessary HTTP headers. In addition to a response header, the HTTP response may include general headers and the entity headers that may be unnecessary for the beam API server303to communicate the response data to the beam modem301. Also, the HTTP request response may have multiple optional headers that are not necessary to respond to the request data from the client device302. For example, web servers, frameworks and applications often set optional response headers that reveal software in use and version information. Also, headers beginning with “X-” are non-standard headers and are optional and may be removed if not responsive to request data from the client device302. The beam API server303may pare down the response headers to just the response headers necessary for the response.

The beam API server303is also programmed to reduce the size of the response data by minifying the response data. Minification removes all unnecessary characters from the response code without changing its functionality. Examples of these unnecessary characters include white space characters, new line characters, comments, and sometimes block delimiters, which are used to add readability to the code but are not required for it to execute. The minified code reduces the amount of data that needs to be transferred.

The beam API server303is also programmed to reduce the size of the response data by compressing the response data to produce reduced response data. The beam API server303may be programmed to compress the response data using a key map of the response data, and the beam modem may be programmed to decompress the compressed response data using the key map. One example of this is key-map compression of Java Script Object Notation (JSON) code. JSON is a lightweight data-interchange format that is easy for humans to read and write. JSON can be used as a data interchange format, just like XML and compared to XML, JSON has several advantages. JSON is simple, it has a self-documenting format, and it is much shorter because there is no data configuration overhead. However, JSON heavily relies on quotes and key names that are often repeated. Key mapping JSON compression algorithms can solve these problems and reduce the size of a JSON response. For example, the beam API server303may compress JSON code by removing the need to constantly repeat key names. Using this compression algorithm, the following JSON:

In addition, the beam API server303may compress JSON code by reducing the number of characters used to represent a generic homogeneous collection including by removing keys from the structure creating a header on index 0 with each property name and/or by assuming that there are duplicated entries. Using this kind of compression algorithm, the following JSON:

In the case that the structure of the JSON response is known, a YAML (Yet Another Markup Language) file may be used to describe how to mask/eliminate fields from the response. When the structure is unknown, certain critical fields are selected and reformed into a new response structure. In some embodiments, the external web service being accessed may provide the server303with the YAML file that determines how content from the service is to be compressed.

Also, the beam API server303, may be programmed to compress the response data by zipping the response data, and the beam modem may be programmed to decompress the compressed response data by unzipping the response data. The beam API server303may use GZip or another zipping utility.

After the beam API server303has reduced the response data, it transmits the reduced response data to the beam modem301via the network304and cellular modem/transceiver in the beam modem301. The beam modem301is programmed to receive the reduced response data via the cellular transceiver and decompress the reduced response data to produce decompressed response data. The beam modem301may then encrypt the decompressed response data and transmit the decompressed response data to the client device302via the short range transceiver in the beam modem301.

The client device302may also be programmed to transfer client information to the beam API server303when the client device302has a network (e.g., Internet) connection. The communication between the beam API server303and the client device302when the client device302has a network connection is shown as communication path305inFIG. 3. The beam API server303may be programmed to use the client information to respond to a request for information from an external web service in response to request data transmitted to the external web service. For example, the client device302may directly transmit personal information to the beam API server303including preferences, log in information for external web services (e.g., ID and password), and travel destinations when the client device302has an Internet connection. The beam API server303may also have additional web service specific information stored such as which fields are important to the client.

The personal information and other stored data on the beam API server303may be used to respond to requests from the external web services as part of supplying the response to the request data from the client device302when the client device does not have an Internet connection. For example, if the client device302sends a request for the location of a site stored in a “favorite locations” area at the external web service, the external web service to which the request is routed may respond by requesting a user name and password to access the account under which the “favorite locations” are stored. To prevent the beam API server303from having to send a query back to the client device302to get the requested information, this information may be stored on the beam API server303before the client travels to a location with limited network access. In addition, the user may transmit the client information to the beam API server303using other devices than the client device302. For example, a user may use a personal computer to transmit the client information to the beam API server303instead of the client device302.

In one embodiment, the beam API server303is programmed to transfer data supplemental to the request data to the client device302when the client device302has a network304(such as the Internet) connection. The communication between the beam API server303and the client device302when the client device302has a network connection is shown as communication path305inFIG. 3. The client device302may be programmed to use the supplemental data to augment the decompressed response data from the beam modem. One example of this pre-caching of data on the client device302is map data. Before a trip, when the user has a good connection to the Internet, the beam API server303receives information about where the user will be traveling and communicates with the client device302to store map data for the travel location on the client device302. Then, when the user is traveling in the specified location and sends a web request for location data, the beam API server303only has to transmit data that has not already been pre-cached such as the location of a restaurant or point of interest, but does not have to transmit map data to enable navigation on the client device302.

In some embodiments, an application on the client device302constrains or limits the web requests to a predetermined list of external web services, filters out requests for web services, and/or limits the types of requests sent to an external web service. The client device302thereby filters requests that are data-intensive or would require data-intensive responses and thereby saves data traffic that would otherwise result in insufficient-information responses or request/response errors. The client device302may limit the web requests to external web services for which (1) the client device302has transferred client information to the beam API server303when the client device302has a network304connection and/or (2) the beam API server303has transferred supplemental data to the client device302when the client device302has a network304connection.

In one example, before a trip, a user enters a destination in the client device302(or another device) and selects services—such as maps and messaging—that the user wants to have access too. Since the client device302still has network communication, it is able to connect to the beam API server303via the network connection305. The client device302transmits the destination information and the selected service information to the beam API server303. The beam API server303connects to the external web services for the selected services (e.g., maps and messaging) and determines how to provide access to the selected services while reducing data transit between the client device302and the beam API server303when the user arrives at the destination. The beam API server303determines what information can be stored on the beam API server303to assist with responses to the external web services and obtains that information from the client device302(from stored information or by prompting the client device302to query the user) or other sources. The beam API server303also determines what information can be pre-cached on the client device302to provide access to the selected services and reduce data transit between the client device302and the beam API server303when the user arrives at the destination.

Additionally, the client device302and/or beam API server303may determine beforehand what services to make available when the user arrives at the destination. The beam API server303may transmit this information to the client device302via network connection305. In addition to the examples described above, the client device302and/or beam API server303may determine what services to make available based on the amount of data a request and/or response to the external web service would require. Similarly, the client device302and/or beam API server303may determine certain types of requests within an external web service to make available based on the amount of data the certain types of requests and corresponding responses to would require. Also, the client device302and/or beam API server303may determine what services to make available based on the beam API server's303ability to modify the response from the external web service to reduced its size.

FIG. 4is a block diagram of an embodiment of the beam modem401. As shown inFIG. 4, the beam modem401is communicatively coupled to the client device402. This two-way communication may be accomplished with a short range communication protocol like BLE as previously described. The short range transceiver410in the beam modem401is illustrated inFIG. 4. The web request service415and web response service416are the interface of the transceiver410in the beam modem401. The web request service415and web response service416are responsible to broadcast available services, parameters, and characteristics (such as read only, write only, read/write, and/or notify).

In an example in which the transceiver410is a Bluetooth transceiver, the web request service415and web response service416establish and maintain the bidirectional data communication between the beam modem401and the client device402. The creation of a connection between the beam modem401and the client device402may be an asymmetric procedure by which an advertiser announces through the advertising channels that it is a connectable device, while the other device (referred to as an initiator) listens for such advertisements. When an initiator finds an advertiser, it may transmit a connection request message to the advertiser, which creates a point-to-point connection between the two devices. Both devices can then communicate by using the physical data channels. BLE defines two device roles at the link layer for a created connection: the master and the slave. These are the devices that act as initiator and advertiser during the connection creation, respectively.

The transceiver410may include control logic420such as that in a BLE SoC for example. Alternatively, the beam modem401may have control logic outside of the transceiver410. Similarly, the beam modem401may include an HTTP layer module421to enable the beam modem401to make HTTP requests. The beam modem401may also include a TCP layer module to enable the beam modem401to make TCP requests. The beam modem401also may include a cellular modem425to enable cellular communication as well as a modem driver423(that provides generic modem requirements including high level commands (e.g., open port, wait amount of time, get response) and transform TCP requests to a set of AT commands) and an I/O driver424specific to the cellular modem425selected.

In one example, client device402prepares a web request consisting of an endpoint address (e.g., IP address) and request data to be transferred and sends it to a beam modem401via a BLE connection. The web request service415may be in an encrypted form. The BLE transceiver410in the beam modem401receives the data, decrypts it and adds the necessary HTTP headers and forwards it to the cellular modem425in the beam modem401in a modem-specific format. The cellular modem425makes the connection to the cellular network, connects to the specified endpoint and sends the request data and waits for the end-point to send a response. The endpoint's response is sent by the modem425back to the BLE transceiver410, where it is parsed (reassembled back into format the client device402can understand), encrypted and sent back to the client device402via the web response BLE service416. In one embodiment, the beam modem401components may be integrated into the client device402to enable data saving and/or battery saving. In the integrated example, the communication between the client device402and the beam modem401is via hard-wired connections in the client device402instead of via a short range system.

FIG. 5illustrates a system500in which a beam modem501communicates with external web services510-515via a beam API server503in a limited-data network504. The external web services510-515may include messaging services, accommodation reservation systems, dining reservation systems, rideshare reservation systems, retail systems, and the like. In this example, the beam modem501is communicatively coupled to a client device (not shown) via a short range transceiver. The beam modem501also includes a cellular transceiver for connecting to the network504and thereby to the beam API server503.

The beam modem501is programmed to receive a web request consisting of an endpoint address and request data from the client device via the short range transceiver and the then add HTTP headers to the web request to create a modified web request. In one example, the web request is a SMS get/post request, and the external web service510is an SMS gateway. The beam modem501is also programmed to transmit the modified web request to the beam API server503via the cellular transceiver. After receiving the modified web request, the beam API server503is programmed to determine an external web service510-515based at least in part on the endpoint address. After determining the appropriate external web service510-515, the beam API server503transmits the request data to the external web service510-515and receives response data from the external web service510-515in response to the request data. After receiving the response data, the beam API server503reduces the size of the response data by (1) removing unnecessary data, (2) minifying the response data, and/or (3) compressing the response data to produce reduced response data. The beam API server503then transmits the reduced response data to the beam modem501.

After the beam modem501receives the reduced response data, the beam modem501is programmed to decompress the reduced response data to produce decompressed response data, encrypt the decompressed response data and transmit the decompressed response data to the client device via the short range transceiver.

In one example of a request from the beam modem501, a user of a client device issues a web request that is transmitted to the beam API server503. The beam API server503uses the contents of the request to determine which external web service510-515to consult for data, and forwards the request to that service510-515. In the case of an SMS get/post request, the request is routed to an external SMS gateway510. The beam API server503receives response data from the requested service and aggressively compresses it. The reduced size response is returned to and decoded on the beam modem501.

FIGS. 6aand 6billustrate an exemplary method of addressing, routing, and data traffic control using the client device602, beam modem601and beam API server603. As shown inFIG. 6a, a client device602generates a web request610consisting of an endpoint address and request data. The client device602then encrypts the web request615and transmits the encrypted web request620to a beam modem601via a short range transceiver.

The beam modem601receives the encrypted web request620via a short range transceiver and decrypts the encrypted web request625. The beam modem601then adds hypertext transfer protocol (HTTP) headers to the web request630to create a modified web request and transmits635the modified web request to a beam API server603via a cellular transceiver.

The beam API server603receives the modified web request635and determines640an external web service607based at least in part on the endpoint address. The beam API sever603then transmits the request data645to the external web service607. In response to the request data, the beam API server603receives response data650from the external web service607. The method then continues as shown inFIG. 6b. The step of receiving the response data650from the external web service607is repeated inFIG. 6bto show continuity betweenFIGS. 6aand 6bbut does not indicate that this step must be repeated. The beam API server603then reduces the size of the response data by (1) removing unnecessary data655, (2) minifying the response data660, and/or (3) compressing the response data665to produce reduced response data. The beam API server603then transmits the reduced response data670to the beam modem601.

After beam modem601receives the reduced response data670via the cellular transceiver, it decompresses the reduced response data675to produce decompressed response data. The beam modem601then encrypts the decompressed response data680and transmits the decompressed response data685to the client device602via the short range transceiver in the beam modem601.

FIG. 7illustrates another exemplary method of addressing, routing, and data traffic control with the client device602, beam modem601and beam API server603that may be used in addition to and/or in conjunction with the methods illustrated inFIGS. 6aand 6b. When the client device602has a network (e.g., Internet) connection, the client device602may transfer client information701directly to the beam API server603. Dotted line703indicates the presence of a network connection between the client device602and the beam API server603without the beam modem601. Above the dotted line703, there is a network connection between the client device602and the beam API server603without the beam modem601(for example before the user arrives in an area with limited network connectivity). Below the dotted line703, there is limited network connection between the client device602and the beam API server603without the beam modem601(for example after the user arrives in an area with limited network connectivity).

After the client device602transfers client information701directly to the beam API server603, the beam API server603then stores702the client information. Then, once the user has arrived in an area with limited network connectivity, the method proceeds as shown inFIG. 6afrom the step of the client device602generating a web request610to the step of the beam API sever603transmitting the request data645to the external web service607. At this point, the external web service607may send back one or more queries750to the beam API server603. The beam API server603uses the client information701previously stored702to respond755to the queries750. For example, client information701may include personal information including preferences, log in information for external web services (e.g., ID and password), and travel destinations. The client information701may also include additional web service607specific information such as which fields that the web service uses which are important to the client.

In one example of this method, if the client device602sends a request for a favorite location stored at an external web service607, the external web service607to which the request is routed may respond by requesting a user name and password to access the account under which the favorite is stored. The external web service607sends one or more queries750back to the beam API server603, and the beam API server603sends one or more query responses755back to the external web service607with the user name and password.

The query750and query response755steps may be repeated until the external web service607has received the information it needs to respond to the request data645. At this point, the external web service607transmits the response data650as shown inFIGS. 6aand 6b, the beam API server603receives response data650from the external web service607, and the method then continues as shown inFIG. 6b.

FIG. 8illustrates another exemplary method of addressing, routing, and data traffic control with the client device602, beam modem601and beam API server603that may be used in addition to and/or in conjunction with the methods illustrated inFIGS. 6aand 6b. When the client device602has a network (e.g., Internet) connection, the beam API server603may transfer supplemental information801directly to the client device602(without using the beam API modem601) that may be used to supplement or help respond to the request data645. Dotted line803indicates the presence of a network connection between the client device602and the beam API server603without the beam modem601. Above the dotted line803, there is a network connection between the client device602and the beam API server603without the beam modem601(for example before the user arrives in an area with limited network connectivity). Below the dotted line803, there is limited network connection between the client device602and the beam API server603without the beam modem601(for example after the user arrives in an area with limited network connectivity).

After the beam API server603transfers the supplemental information801directly to the client device602, the client device602then stores, or pre-caches, the supplemental information802. Then, once the user has arrived in an area with limited network connectivity, the method proceeds as shown inFIG. 6afrom the step of the client device602generating a web request610. Because the client device602has stored the supplemental information802, the client device602may generate a web request610that does not include a request that would require the supplemental information802(or a portion of the supplemental information) in response. Alternatively, or in addition, the beam API server603may parse the web request635to determine what portion of the request information is already stored on the client device602. The beam API server603then may ask the external web service607(in a request for data645) only for the portion of the requested information that is not already stored on the client device602. Also, the beam API server603may parse the response data650from the external web service607to determine the portion of the response data650not already stored on the client device602. The method then proceeds as shown inFIG. 6b. Once the client device602receives the decompressed response data685, it combines it with the stored supplemental information802.

In one example of this method, the stored supplemental information on the client device602is map data. Before a trip, when the user has a good connection to the Internet, the beam API server603receives information about where the user will be traveling and communicates with the client device602to store map data for the travel location on the client device602. Then, when the user is traveling in the specified location and sends a web request for location data, the beam API server603only has to transmit data that has not already be pre-cached such as the location of a restaurant or point of interest, but does not have to transmit map data to enable navigation on the client device602.

Additional Considerations