Title: Erik Ramfelt, Thomas Vennstr
1(No Transcript)
2Wireless Wide Area Application Development
Erik Ramfelt, Thomas Vennström, Software
engineer, WWAN Toolkit team
3Agenda
- Roaming Scenario
- Intermec networking technologies / SDKs
- LAN
- WLAN
- WWAN
- Best development practices
- Intermec Products
- QA
4Roaming use case
- Delivery pickup driver for Package delivery
company. - Picks up the unit from the docking station
- The unit has been updated with the latest
deliveries and software during the night. - The unit is also fully charged
- Driver scans each package in depot
- The package id is sent to the database through
WLAN - Driver drives away in truck
- Driver can be contacted through voice calls or
SMS - Driver enters customer site
- Customer signs of each package
- Application updates the package statuses on the
server through the customers WWAN - Application downloads new delivery and pickup
orders - Returns to the depot for end of day
- Unit is put into the docking station for charging
during the night
5Roaming scenario
- Docking station at depot
- LAN
- Depot
- WLAN
- On the road
- WWAN
- Customer site
- WLAN
- WWAN
6LAN Networking
7LAN properties
- Free
- Charges batteries
- Bandwidth
- Best speed (10/100MBit)
- - Not mobile
8Intermec Technologies / SDKs
- Low level SDKs
- NDIS driver utilisation
- (Ethernet is SYI1)
- Intermec SDKs
- NetTools
9ITC Net Tools
- Takes the Kernel IO Control calls and wraps them
up to make them easier to use. - BOOL IsEthernetAvailable(void) --
- Checks if an Ethernet adapter is present on the
device. - int GetCurrentNetworkDevice(void) --
- Determines the current NDIS device that is active
on the system. - int UnloadNetworkDevice(int nDevice,
bool bBypassDeviceCheckFALSE) -- - Unloads the NDIS device specified by the first
parameter. Normally the library checks to see if
the device is loaded prior to unloading,
parameter to allows the caller to bypass that
check. - int LoadNetworkDevice(int nDevice, bool
bBypassDeviceCheckFALSE) -- - Loads the NDIS device specified by the first
parameter. Normally the library checks to see if
that device or another device is loaded prior to
loading, parameter to allows the caller to bypass
that check. Most users SHOULD NOT bypass this
check.
10Code snippets
11WLAN Networking
12WLAN properties
- Fast
- 11 54 Mbps
- Cheap
- - Medium range
- gt 150 feet (50 meters)
- - Most often not accessible on customer site
- - Can drive high infrastructure costs
- - Limited bandwidth
- - Security issues (WEP can be hacked within
minutes)
13WLAN protocols
- Supports 802.11a
- maximum data transfer rate of 54Mbps
- an operating frequency of 5GHz
- Supports 802.11b
- maximum data transfer rate of 11Mbps
- an operating frequency of 2.4GHz
- Supports 802.11g
- maximum data transfer rate of 54Mbps
- an operating frequency of 2.4GHz
14WLAN Networking
- NDIS (?)
- Loading and unloading of the 802.11b driver is
performed by the FWL1 device Use
DeviceIOControl() calls to the driver - For loading the NDIS driver for the adapter
- IOCTL_LOAD_NDIS_MINIPORT
- For unloading the NDIS driver for the adapter
- IOCTL_UNLOAD_NDIS_MINIPORT
15WLAN Networking
- 80211API.DLL
- API support provided to alter the Network Name
(SSID), WEP keys, infrastructure modes, radio
channel, and power management modes. - Contained within 80211API.dll and is present in
the OS.
16WLAN Networking 80211API.DLL
- RadioConnect()
- Connects to the available radio module
- RadioDisconnect()
- Disconnects from the 802.11 radio module
- No longer connected or associated at all
- RadioDisassociate()
- Only disassociates from the current service.
- Is off only until woken by setting the SSID.
- GetMac()
- Gets current MAC address of the 802.11b radio.
- GetNetworkMode()
- Gets current network mode (SSID) for the 802.11b
radio. - GetSSID()
- Gets the desired SSID of the 802.11b radio
17WLAN Networking Profiles
- Supports up to four radio configuration profiles.
- Same as those set by the Wireless Network control
panel applet. - PROFILE1, PROFILE2, PROFILE3, PROFILE4
- Switch between profiles using the 80211pm.dll
- Pick a profile to configure
- Use the GetField() SetField() interface to
get/modify the radio settings to connect to a
wireless network. - Set this profile as the active profile and then
signal the API to start the authentication
process - Will currently only prompt for username, the next
version will prompt for both username and
password - For more information on configuring profiles
please request the Profile Management document
from support.
18WLAN networking 80211PM.DLL
- You need to make sure that your profile is set as
the active profile and to signal the security
supplicant to start authentication. - Use SetField to change the ACTIVE_PROFILE to the
desired profile. - Use SetField with CONFIGURE_PROFILE and NULL as
the SzValue. Using this method has the advantage
of only forcing a re-authentication if a change
was made in the profile. - CONFIGLET_API SetField(
- / in / LPCWSTR FieldName, //
field name - / in / LPCWSTR ProfileName,
- / in / LPCWSTR szValue
// buffer for returning the value - )
- CONFIGLET_API GetField(
- / in / LPCWSTR FieldName, //
field name - / in / LPCWSTR ProfileName,
- / in / DWORD dwMaxChars, //
number of characters in szValue buffer - / out/ LPWSTR szValue,
// buffer for returning the value - / out/ PDWORD pdwValueChars //
number of characters in returned string including
null - )
19WLAN Networking - ITC Net Tools
- Takes the Kernel IO Control calls and wraps them
up to make them easier to use. - BOOL Is80211Available(void) --
- Checks for the presence of an 802.11 radio in the
device (this is commonly mistaken for checking
for presence of an available 802.11 network). - int GetCurrentNetworkDevice(void) --
- Determines the current NDIS device that is active
on the system. - int LoadNetworkDevice(int nDevice, bool
bBypassDeviceCheckFALSE) -- - Loads the NDIS device specified by the first
parameter. Normally the library checks to see if
that device or another device is loaded prior to
loading, parameter to allows the caller to bypass
that check. Most users SHOULD NOT bypass this
check. - int UnloadNetworkDevice(int nDevice,
bool bBypassDeviceCheckFALSE) -- - Unloads the NDIS device specified by the first
parameter. Normally the library checks to see if
the device is loaded prior to unloading,
parameter to allows the caller to bypass that
check.
20Code snippets
- ltpower on/off WLAN drivergt
21Code snippets
- ltswitching between profilesgt
22WWAN Networking
23WWAN properties
- Circuit Switched (GSM / CDMA)
- Long range
- Rarely poor bandwidth
- Higher priority than Packet Switched
- GSM before GPRS
- - Expensive
- Billed on length of call
- - Slow
- 14.4 kbps
- High Speed CSD, dual time speed, can give 28.8
kbits/s
24WWAN properties
- Packet Switched (GPRS / 1xRTT)
- Long range
- Reasonable cost
- Billed on volume of data, not length of call
- Moderate fast
- 30-40kbits/s
- /- Always connected
- - Intermittent coverage
- - Bandwidth Issues
25Next generation
- 3G UMTS/W-CDMA
- /- Fallback to GPRS
- May run GPRS at all times
- - Complete new infrastructure
- New technology
- Transmit voice and data at the same time
- High transfer rates
- 3Mbps
- EDGE - Poor mans 3G (2.75G)
- Minor changes to current infrastructure
- High transfer rates
- 384 kbps (meets 3G standards)
26WWAN Messaging
- SMS
- Store and forward feature
- Up to 160 characters
- Received whenever the radio is powered on and
within coverage - Billed for each message, not data size
- SMS works in very low signal coverage
- Can be used to send commands to applications
27WWAN Costs
- Example of Standard tariffs
- Ca 10 first MB 0.01 / Kb
GPRS H - Ca 2.5 per additional MB 0.0025 / Kb GPRS
L - GSM ca 1 per MB 0.001 / Kb GSM
ISDN - GSM ISDN connecting 0.01
- GSM Asynch connecting 0.035
- (assuming no min charge and per second billing)
28Intermec Technologies / SDKs
- WWAN Toolkit
- Provides easy functionality for managing the
radio - Supports all WWAN radios installed on Intermec
devices - Rapid application library to get applications
connected - WWAN Toolkit NextGen
- Network switching API, for automatic switching
between - LAN
- WLAN
- WWAN (PSD and CSD)
29Why use the WWAN Toolkit?
- Easy to use
- Rapid application development
- One API
- No need to learn complex AT command sets for each
radio or any other APIs. - Cross platform
- Works on all WWAN enabled Intermec devices
- Backward compability
- Your application that was written two years ago
will still work on a new Intermec WWAN Device - Multiple languages
- C, Java, VB.NET and C
- Native OS/Device limitations
- Work arounds for OS and device limitations
- Full control
- Simple to use yet fully fledged API
30WWAN Toolkit features
- Radio power on/off and modem initialization
- Reliably start up and shut down radio
- Network information
- Signal strength, Operator name
- Available networks, Network Selection
- Data Connections
- Configure, establish and monitor dial-up
networking connections - GSM, GPRS, CDMA and/or 1xRTT
- Text Messages (SMS)
- Read, send, delete text messages
- Voice calls
31Code snippets
32Make a GPRS connection
33Make voice call (WWAN Toolkit)
34Make voice call (TAPI)
35Send SMS (WWAN Toolkit)
36Send SMS (TAPI)
37Connectivity Features (NextGen)
- Simple API, 3 methods bare minimum
- Minimal effort for establishing connections
- Automatic/manual switching between all specified
network - LAN
- WLAN
- WWAN
- Configurable through XML files
- No need to re-compile for new network parameters
38Code snippets
39Best practices
40Design considerations
- Map out the characteristics of the application
and its data handling - Consider the infrastructure
- Which network should be used where and when?
- Return on investment on network installation
- What is the typical use case scenario?
- Where is the device stored during day and night?
- Does the server allow IP switching in data
transfer? - Need to spoof IP, develop or buy current products?
41Design considerations
- Develop client-server solutions
- If server has data to deliver, it can communicate
with the client in these ways - Call the device from a certain number.
- Client will recognize the phone number and ignore
the voice call and start to connect - Send a SMS with a command
- Client will start to connect when it sees a
certain SMS message
42Network differences
- WWAN compared to LAN WLAN
- Relatively unreliable
- Conditions can change at any time
- Mobile users moving in and out of coverage
- Low bandwidth
- Best real-world performance roughly same as
land-line modem - High latency (600 ms)
- Also variable latency jitter
- Data transmission costs money
43Loss of connectivity
- On GPRS, "dial-up" connection is usually not
dropped when you lose coverage - "Dial-up" connection remains "open" since you may
come back into coverage soon (e.g. going through
tunnel) - Won't force TCP/IP connections to close just
because you lose coverage for a short time - Everything usually starts working when you regain
coverage - Becomes less certain as time spent out of
coverage increases - Network may abort your connection from it's end
if it does not see device for extended period - You are not in coverage so you cannot be notified
- When you regain coverage, your connection may
mysteriously fail to work even though signal is
good - No easy way to detect this by interrogating radio
44Detecting loss of connectivity
- Interrogate radios for signal strength
- No signal implies that data won't flow
- But good signal does not necessarily imply it
will - End-to-end check is most reliable way
- TCP does this for you, must do it yourself for
UDP - Appears as errors timeouts from Winsock and
higher level libraries such as FTP, Web Service - Should check these in any networking app
- Often neglected in these days of reliable LAN and
WLAN communication - Periodic ping of known good address is often used
- One side-effect that is resets idle timeouts in
network - Can cost money
45Regaining connectivity
- What if you are in good coverage but data isn't
flowing? - Actions you can take are (least drastic first!)
- Simply wait and retry later
- Connectivity may be regained soon, especially if
you have been out of coverage - Drop "dial-up" connection
- Wait 10-20 seconds then reconnect fixes most
problems - Drop connection and reset radio (power cycle)
- Most drastic action, but almost always works for
temporary problems - Can take a long time
- Can be combined with signal strength checks to
avoid unnecessary connection attempts that will
fail
46Improving User Experience
- Develop "occasionally connected" apps
- Allow user to continue working when disconnected
- Synchronize with server when possible
- Consider offline storage such as database or
transaction queues - Envision someone yanking the network cable in and
out - Perform data communication in background
- Implement recovery as described earlier without
asking user for guidance - Work asynchronously
- Don't lock up interface waiting for response to
network requests
47Optimizing Data
- Don't send data that isn't needed in real-time
- Send later when connected to cheaper network
- Prioritise data
- Send important data first
- Compress data before sending
- Avoid multiple round-trips
- Latency up to 600 ms for acknowledges gives poor
speed - Aim to fill packets, send data in large chunks
- Different packet size (TCPIP) may have an
significant impact
48Improving battery life
- Suspend
- 802.11 will cause all connection to be lost and
will require re-authentication if security is
being used - WWAN will not cause any of the above, events can
still be received and will wake up the terminal
from the suspend state. - Settings
- Set Power-gtBattery to Max battery runtime
- Set power to turn off device if not used for 1
minute - Power
- Leaving both radios powered on will not drain
much battery life and will dramatically speed up
the connection of the radio. - WWAN radio consumes less than 10 extra
- Note There is a difference between on and
connected
49Intermec Products
50Products
- Intermec Connection Manager (ICM)
- Application that enables manual and automatic
roaming between networks - WWAN Communicator
- Demonstration tool for WWAN
- Core
- Intermec application that lets you configure and
manage your radios - NDIS Tray
- Utility to switch between WLAN and LAN networks.
- Has FTP server built in
51Intermec Connection Manager
52ICM - Features
- Utility designed to run in background, used in
conjunction with a business application. - Monitors available connection options, selecting
connection based on predefined priorities - Provides switching between mediums so that the
business application simply connects to host - Configurable options through user interface or
programmatic - Effective power management (consumes lt 10
additional battery when searching for 802.11b
connection once every minute).
53ICM - Configuration
- Ethernet
- DHCP / Static
- 802.11
- SSID
- WEP (through WLAN profiles)
- Security Credentials (through WLAN profiles)
- Wireless Wide-Area Network
- APN (if applicable)
- Windows Mobile Dialling Configuration
- Avalanche (if applicable)
- Licensed Console
54Core
- Intermec application that lets you configure and
manage your radios. - Preinstalled to every operating system version
- Modules available for each radio
- Displays general and detailed information
- 802.11, Ethernet, BT, and WWAN
- Great test tool for network monitoring
55WWAN Communicator
- Demonstration tool for the WWAN Toolkit
- Provides all features like a normal cell phone
- Voice calls
- Send and receive messages
- Establish data connections
- Source code included in SDK
56NDIS Tray
- Utility application that is pre-installed on all
devices - Manual switching between
- LAN
- WLAN
- No network
- Comes with a FTP server
- FTP server has an extended command set and can be
used for starting applications, warm booting
device, etc.
57Q A
58Contact information
- http//www.intermec.com/developersupport
- Contains demos, software versions, and downloads
mentioned in presentation. - http//www.intermec.com/idl
- Direct access to the registration page for the
Intermec Developers Library (IDL) - http//www.microsoft.com/windowsmobile/downloads/d
efault.mspx - Download location for the latest version of
Active Sync. - Developer Downloads Embedded Tools 3.0 4.0, VS
.Net 2003, .NET CF, ASP.NET Controls, SQL CE, MS
Power Toys for Windows Mobile, 2003 2002 MS
SDKs, and more. - Frontline support 1-800-755-5505 or Knowledge
Central - http//intermec.custhelp.com/cgi-bin/intermec.cfg/
php/enduser/home.php - First stop for basic mobile questions