We have a customer that has both 3G and WiFi enabled. While doing data transfers they want to automatically use the most efficent means of data transfer. If the units are within range of their WiFi network they want the data transfered by WiFi, otherwise by the 3G connection. Does WM 6.1 or 6.5 support this? Is there any third party utilities that support this feature?
3G vs WiFi connections |
3 Replies
With the current availability of the Sate & Notification Broker in both .NET Compact Framework 2 & 3 it is a fairly simple matter to deal with this inside any application.
You do not need to even deal with the Connection Manager directly if that is too dfficult. If the web data service is accesable as a standard Internet uri (and all of the relevant adpaters in the terminal are assigned to The Internet internal sub-net) then a simple HttpWebRequest/HttpWebResponse will automatically trigger a connection if required using its own, internal Connection Manager code. (The same can be done if all of the adapters are placed in The Work sub-net and using a Work uri, though this can be more difficult for the WAN radio and probably requires a VPN from the network provider or other source).
The order the OS will choose for an HttpWebRequest is then based on its standard internal weighting and is
Cradle LAN radio WAN radio
However there is no direct way to sever such a connection once obtained as Dave Mohnke says. The OS will hang it up when the HttpWebResponse is complete but it will then cache the underlying connection for 10 minutes (with the default registry settings). This is allow quick re-connection if required but does not allow automatic switching between radios unless the time period between requests is longer than that. It is possible to alter the registy cache time but there must always be a pause in traffic long enough for the hang up to actually take effect.
To switch back to the LAN radio really requires monitoring of the various
SystemState.ConnectionsDesktopCount SystemState.ConnectionsNetworkCount SystemState.ConnectionsCellularCount SystemState.ConnectionsCount
objects, probably with appropriate events in the application.
This can then power up/down the WAN radio as Dave Mohnke suggests (which is very good for the battery). You can also power off the LAN radio when on the WAN radio (which is also very good for the battery), but then, obviously, the OS cannot inform you on returning to LAN RF coverage. Some other trigger will have to be used (work pattern or GPS perhaps?) to do that.
RLH
Dan, The OS doesn't have any least cost routing or best bandwidth support. I know that NetMotion's VPN client does though (see http://www.netmotionwireless.com/default.aspx?home ). Ken
WM 6.1 and WM 6.5 both have a connection manager component which is built into the os. This component, in theory, will choose the "lowest cost" connection by default. There's also a set of API's which can be used to change the "lowest cost" calculation or obtain a list of available connection paths. By default, WiFi is chosen over the Cell Radio if both are active. You should also keep in mind that once a connection is established using one radio, WM will not automatically switch the connection to the other radio if it becomes available. The connection needs to be closed and reopened. However, there are third party applications, as Ken mentioned, which will accomplish this. In general, best practice is to only have one radio active at a time. If using the WiFi, turn off the Cell (unless, of course, you're also allowing phone calls) and vice-versa. This helps to conserve the battery. Dave Mohnke