Title: A1260996310CsHeI
1(No Transcript)
2Building WWAN Solutions that work!
Thomas Vennström Erik Ramfelt System
Developers WWAN Toolkit Team Intermec
3Agenda
- Install the WWAN Toolkit
- What is the WWAN Toolkit?
- Current features of the Toolkit
- Why use the WWAN Toolkit?
- Develop a WWAN connectivity application
- Pitfalls
- Extend with Voice and SMS (if time permits)
- QA
4Install the toolkit
- Install path c\Program Files\Intermec\WWAN
Toolkit V4.5 - Power Point Presentation located in the DevCon
folder
5What is the WWAN Toolkit?
- A toolkit that provides access to the WWAN Radio
- Supports Java, CPP, .NET (VB C)
- Supports GSM/GPRS CDMA/1xRTT
- Supports 760, 761 and all future Intermec WWAN
enabled devices - Supports WM2003 Phone Edition
- Current version 4.5
6Current features of the Toolkit
- Power management
- Data connectivity (RAS Connection Manager)
- Voice calls
- SMS
- Network information (operator, signal strength,
attached etc.) - Radio information (serial, make, type etc)
- SIM Card Management
- Phone Book
7Why 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
8Develop a WWAN connectivity application(GPRS
using C)
- Development environment setup
- Start the radio and toolkit
- Stop the toolkit and radio
- Setup a connection (RAS)
- Check network status
- Connect
- Ping
- Disconnect
- Keep the connection alive
- Pitfalls
9Development environment setup
- Documentation found in the Start Menu/WWAN
Toolkit - Open the workshop solutionPATH TO SOLUTION
HERE - Pre-assembled source
- Wrapper dll reference
- Singleton reference (myToolkit)
- Event handlers
- AddText(string) help method
- Test build
10Initialize the radio and toolkit
- myToolkit.PowerOn()
- Power on the radio
- myToolkit.Setup()
- Initialize resources
- myToolkit.SimCard.PinStatus
- Check SIM PIN Status
- SimPinStatus.PinReady
- myToolkit.EnableModemEvents()
- Enable event reporting (URC)
- myToolkitRef.Network.AutomaticRegister()
- GSM only. Register to your home network.
- Try/Catch, GetLastWWANErrorString()
11Stop the radio and toolkit
- myToolkit.DisableModemEvents()
- Disable modem events
- myToolkit.Shutdown()
- Clean up resources
- myToolkitRef. PowerOff()
- Power of the radio
- Try/Catch, GetLastWWANErrorString()
12Implement
13Create a connection (RAS)Step 1 Create a
dialing Location
- myToolkit.Connections.CreateDiallingLocation(.
..) - Parameters
- string location A name for the location
- string areaCode Area code
- string countryCode Country code
- bool pulseDial Pulse or tone dialing
- string disableCallWaiting Always empty string
- string dialFormatLocal Dialing pattern for
local calls - string dialFormatLongDistance Dialing pattern
for long distance - string dialFormatInternational Dialing pattern
for international - bool overwrite True if to overwrite
- bool setAsCurrent True if to set as currently
used - Typical parameter setup
- "Mobile", "","", false, "", "g", "g", "g", true,
true
14Create a connectionStep 2 Set up a GPRS Context
- myToolkit.Connections.SetGprsContext(....)P
arameters - SetGprsContextFlags flags Always
SetGprsContextFlags.SetApn - int contextNumber 1 or 2 (MC45)
- String acessPointName The APN obtained by the
network operator - String pdpAddress Always null
(dynamically configured by op) - bool headerCompression Always false (not
supported on MC45/46) - bool dataCompression Always false (not
supported on MC45/46) - Typical parameter setup
- flags,1,internet.telia.se,null,false,false
- GPRS Only.
- Only used when network requires an APN
15Create a connectionStep 3 Setup the connection
- myToolkit.Connections.CreateRasEntry(...)
- Parameters
- string entryName Any name
- string modemName Modem name
- int baudRate Always 115200
- CreateRasEntryFlags flags CreateRasEntryFlags.No
Flags - int countryCode Only circuit switched
- Int areaCode Only circuit switched
- string phoneNumber 991 (GPRS) 777 (1xRTT)
- string extraCmds C2 (1xRTT)
- string userName Depending on operator
- string password Depending on operator
- string domain Depending on operator
- string ipAddr Depending on operator
- string dnsAddr Depending on operator
- stringdnsAltAddr Depending on operator
- string winsAddr Depending on operator
- String winsAltAddr Depending on operator
16Continued.. Modem name parameter
- On 760 modems_mc45_all.cab must be pre-installed
to utilize special modem strings - On 761 the cab is not required, same modem names
used. - Common GPRS "WANA on COM4 (No modem reset)"
- Normal (predefined) "WANA on COM4"
- PAP Authentication "Siemens MC45 on COM4 (PAP)"
- CHAP Authentication "Siemens MC45 on COM4
(CHAP)" - PAP/CHAP Authentication "Siemens MC45 on COM4
(PAP/CHAP) - When using GPRS WANA on COM4 (No modem
reset) should be used to prevent context from
being reset. - Typical parameter setup
- CreateRasEntryFlags flags CreateRasEntryFlags.No
Flags - myras, "WANA on COM4 (No modem
reset)",115200,flags,null,,991,
null,null,null,null,null,null,null,null,null
17Implement
18Check network status
- myToolkit.Network.AttachToGprs()
- Attach to the GPRS network (only on GSM/GPRS)
- myToolkit. Network.GprsAttached
- Check GPRS/1xRTT availability
- myToolkit.Network.SignalStrength
- 1-5, 0 no network
19Implement
20Connect
- myToolkit.Connections.ConnectRas(rasname)
- Connect using the name of the RAS connection
created earlier. - Wait for a connected event
- Wait for the RasConnState.RasConnStateConnecte
d event to be received in the
_RasStatusChanged(...) event handler - Remember Application.DoEvents() to pump the
message queue.
21Implement
22Ping
- Check signal strength
- Check GPRS/1xRTT status
- ActiveWwanAvailable(string ip,
int timeout, int size) - Use an IP that is reliable, typically the server
you are synchronizing with - Ping can cost money when using a GPRS connection
depending on contract
23Disconnect
- myToolkit.Connections.DisconnectRas()
- Starts the disconnection process
- Wait for a disconnected event
- Wait for the RasConnState.RasConnStateDisconne
cted event to be received in the
_RasStatusChanged(...) event handler
24Implement
25Keep the connection alive
- Handle _RasError events
- RasError.xxx constants
- Handle disconnected event
- RasConnState.RasConnStateDisconnected
- Check signal strength/attach during a
connection. - Circuit switched fallback, costs a more money,
better coverage/stability
26Pitfalls
- GPRS is not always available
- GPRS attach may require several attempts
- Circuit switched fallback
- Disconnect event is not thrown instantly
- Network depending
- Always Ping/Signal/Attach before synchronizing
27Voice Dialing
- Methods
- myToolkit.Telephony.Hangup()
- myToolkit.Telephony.Call(number)
- myToolkit.Telephony.Answer()
- Events
- myToolkit_IncomingCall(...)
- myToolkitRef_CallInProgressChanged(...)
- myToolkit_CallerId(...)
28Implement
29SMS
- myToolkit.Sms.SendMessage( centre,
number, message) - Use myToolkit.Sms.SmsCentre
- myToolkit.Sms.ReadMessage( index, out
number, out timestamp, out
smstext) - myToolkit.Sms.Count
- myToolkit.Sms.DeleteMessage(index)
- Event
- myToolkitRef_NewSmsReceived(...)
30Implement
31Questions
32Links
- WWAN Toolkit Evaluation
- http//www.intermec.com/eprise/main/Intermec/Conte
nt/Support/DevelopersSupport/IDLSupport/Software_S
howcase - Nag screen evaluation version
- Wireless Communicator
- Same link as above
- Demonstration tool for WWAN Toolkit
- Handles most of the WWAN Toolkit functionality
and some extra perks. - Free of charge, no nag screen
- Source code included when purchasing the WWAN
Toolkit - Beta versions
- http//www.intermec.com/eprise/main/Intermec/Conte
nt/Support/DevelopersSupport/IDLSupport/beta_zone
33