Intermec Technologies 2610CF 2610CF User Manual CN2Busermanual

Intermec Technologies Corporation 2610CF CN2Busermanual

User Manual 3 of 3

CN2B Mobile Computer User’s Manual 1257ProgrammingThe following programming information pertains to the CN2B Mobile Computer:• Creating CAB Files  (page 126)• Customization and Lockdown  (page 140)• FTP Server  (page 141)• Kernel I/O Controls  (page 150)• Network Selection APIs  (page 161)• Notifications (page 181)• Reboot Functions  (page 182)• Remapping the Keypad  (page 182)
Chapter 7 — Programming126 CN2B Mobile Computer User’s ManualCreating CAB FilesThe Windows CE operating system uses a .CAB file to install an applica-tion on a Windows CE-based device. A .CAB file is composed of multiple files that are compressed into one file. Compressing multiple files into one file provides the following benefits:• All application files are present.• A partial installation is prevented.• The application can be installed from several sources, such as a desktop computer or a Web site.Use the CAB Wizard application (CABWIZ.EXE) to generate a .CAB file for your application.Creating Device-Specific CAB FilesDo the following to create a device-specific .CAB file for an application, in the order provided:1Create an .INF file with Windows CE-specific modifications (see below).2Optional Create a SETUP.DLL file to provide custom control of the installation process (page 136).3Use the CAB Wizard to create the .CAB file, using the .INF file, the optional SETUP.DLL file, and the device-specific application files as parameters (page 139).Creating an .INF FileAn .INF file specifies information about an application for the CAB Wiz-ard. Below are the sections of an .INF file:[Version]This specifies the file creator, version, and other relevant information.•Signature:“signature_name”“$Windows NT$”•Provider:“INF_creator”The company name of the application, such as “Microsoft.”•CESignature“$Windows CE$”Example[Version]Signature = “$Windows NT$”Provider = “Intermec”CESignature = “$Windows CE$”Required? Yes
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 127[CEStrings]This specifies string substitutions for the application name and the default installation directory.•AppName:app_nameName of the application. Other instances of %AppName% in the .INF file are replaced with this string value, such as RP32.•InstallDir:default_install_dirDefault installation directory on the device. Other instances of %Install-Dir% in the .INF file are replaced with this string value. Example: \SDMMC_Disk\%AppName%Example[CEStrings]AppName=“Game Pack”InstallDir=%CE1%\%AppName%[Strings]This section is optional and defines one or more string keys. A string key represents a string of printable characters.•string_key:valueString of letters, digits, or other printable characters. Enclose value in double quotation marks ““”” if the corresponding string key is used in an item that requires double quotation marks. No string_keys is okay.Example[Strings]reg_path = Software\Intermec\My Test App[CEDevice]Describes the targeted application platform. All keys are optional. If a key is nonexistent or has no data, Windows CE does not perform any checking with the exception being UnsupportedPlatforms. If the UnsupportedPlatforms key exists but no data, the previous value is not overridden.•ProcessorType:processor_typeThe value that is returned by SYSTEMINFO.dwProcessorType.For example, the value for the ARM CPU is 2577•UnsupportedPlatforms:platform_family_nameThis lists known unsupported platform family names. If the name speci-fied in the [CEDevice.xxx] section is different from [CEDevice], both platform_family_name values are unsupported for the microprocessor specified by xxx. The unsupported platform family names list is appended to the previous list. Application Manager does not display the Required? YesRequired? NoRequired? Yes
Chapter 7 — Programming128 CN2B Mobile Computer User’s Manualapplication for an unsupported platform. Also, a user is warned during the setup process if the .CAB file is copied to an unsupported device.Example[CEDevice]UnsupportedPlatforms = pltfrm1 ; pltfrm1 is unsupported[CEDevice.SH3]UnsupportedPlatforms = ; pltfrm1 is still unsupported•VersionMin:minor_versionNumeric value returned by OSVERSIONINFO.dwVersionMinor. The .CAB file is valid for the currently connected device if the version of this device is greater than or equal to VersionMin.•VersionMax:major_versionNumeric value returned by OSVERSIONINFO.dwVersionMajor. The .CAB file is valid for the currently connected device if the version of this device is less than or equal to VersionMax.•BuildMin:build_numberNumeric value returned by OSVERSIONINFO.dwBuildNumber. The .CAB file is valid for the currently connected device if the version of this device is greater than or equal to BuildMin.•BuildMax:build_numberNumeric value returned by OSVERSIONINFO.dwBuildNumber. The .CAB file is valid for the currently connected device if the version of this device is less than or equal to BuildMax.ExampleThis shows three [CEDevice] sections: one giving basic information for any CPU and two specific to the SH3 and the MIPS microprocessors.[CEDevice] ; A “template” for all platformsUnsupportedPlatforms = pltfrm1; Does not support pltfrm1; The following specifies version 1.0 devices only.VersionMin = 1.0VersionMax = 1.0[CEDevice.ARM]; Inherits all [CEDevice] settings; This will create a .CAB file specific to ARM devices.ProcessorType = 2577; ARM .cab file is valid for ARM microprocessors.UnsupportedPlatforms = ; pltfrm1 is still unsupported; The following overrides the version settings so that no version checking is performed.VersionMin =VersionMax =[CEDevice.MIPS] ; Inherits all [CEDevice] settings; This will create a .CAB file specific to “MIPS” devices.ProcessorType = 4000; MIPS .CAB file is valid for MIPS microprocessor.UnsupportedPlatforms =pltfrm2; pltfrm1, pltfrm2 unsupported for MIPs .CAB file.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 129[DefaultInstall]This describes the default installation of your application. Note that under this section, you will list items expanded upon later in this description.•Copyfiles:copyfile_list_sectionMaps to files defined later in the .INF file, such as Files.App, Files.Font, and Files.Bitmaps.•AddReg:add_registry_sectionExample: RegSettings.All•CEShortcuts:shortcut_list_sectionString that identifies one more section that defines shortcuts to a file, as defined in the [CEShortcuts] section.•CESetupDLL:setup_DLLOptimal string that specifies a SETUP.DLL file. It is written by the Independent Software Vendor (ISV) and contains customized functions for operations during installation and removal of the application. The file must be specified in the [SourceDisksFiles] section.•CESelfRegister:self_reg_DLL_filenameString that identifies files that self-register by exporting the DllRegis-terServer and DllUnregisterServer Component Object Model (COM) functions. Specify these files in the [SourceDiskFiles] section. During installation, if installation on the device fails to call the file’s exported DllRegisterServer function, the file’s exported DllUnregisterServer function is not called during removal.Example[DefaultInstall]AddReg = RegSettings.AllCEShortcuts = Shortcuts.All[SourceDiskNames]This section describes the name and path of the disk on which your appli-cation resides.•disk_ordinal:disk_label,,path1=,“App files” , C:\Appsoft\RP32\...2=,“Font files”,,C:\RpTools\...3=,“CE Tools” ,,C:\windows ce tools...•CESignature: “$Windows CE$”Note: To create the two CPU-specific .CAB files for the SETUP.INF file in the previous example, run the CAB Wizard with the “/cpu arm mips” parameter.Required? YesRequired? Yes
Chapter 7 — Programming130 CN2B Mobile Computer User’s ManualExample[SourceDisksNames]; Required section 1 = ,“Common files”,,C:\app\common; Using an absolute path[SourceDisksNames.SH3]2 = ,“SH3 files”,,sh3; Using a relative path[SourceDisksNames.MIPS]2 = ,“MIPS files”,,mips; Using a relative path[SourceDiskFiles]This describes the name and path of the files in which your application resides.•filename:disk_number[,subdir]RPM.EXE  = 1,c:\appsoft\...WCESTART.INI = 1RPMCE212.INI = 1TAHOMA.TTF  = 2Example[SourceDisksFiles]; Required sectionbegin.wav = 1 end.wav = 1 sample.hlp = 1 [SourceDisksFiles.SH3] sample.exe = 2; Uses the SourceDisksNames.SH3 identification of 2.[SourceDisksFiles.MIPS] sample.exe = 2; Uses the SourceDisksNames.MIPS identification of 2.[DestinationDirs]This describes the names and paths of the destination directories for the application on the target device. Note Windows CE does not support directory identifiers.•file_list_section:0,subdirString that identifies the destination directory. The following list shows the string substitutions supported by Windows CE. Use these only for the beginning of the path. \%CE1% \Program Files%CE2% \Windows%CE3% \My Documents%CE4% \Windows\Startup%CE5% \My Documents%CE6% \Program Files\Accessories%CE7% \Program Files\Communication%CE8% \Program Files\GamesRequired? YesNote: [,subdir] is relative to the location of the INF file.Required? Yes
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 131%CE9% \Program Files\Pocket Outlook%CE10% \Program Files\Office%CE11% \Windows\Start Menu\Programs%CE12% \Windows\Start Menu\Programs\Accessories%CE13% \Windows\Start Menu\Programs\Communications%CE14% \Windows\Start Menu\Programs\Games%CE15% \Windows\Fonts%CE16% \Windows\Recent%CE17% \Windows\Start Menu%InstallDir%Contains the path to the target directory selected during installation. It is declared in the [CEStrings] section%AppName%Contains the application name defined in the [CEStrings] section.Example[DestinationDirs] Files.Common  = 0,%CE1%\My Subdir; \Program Files\My Subdir Files.Shared  = 0,%CE2%; \Windows[CopyFiles]This section, under the [DefaultInstall] section, describes the default files to copy to the target device. Within the [DefaultInstall] section, files were listed that must be defined elsewhere in the INF file. This section identifies that mapping and may contain flags.•copyfile_list_section:destination_filename,[source_filename]The source_filename parameter is optional if it is the same as destination_filename.•copyfile_list_section:flagsThe numeric value that specifies an action to do while copying files. The following table shows values supported by Windows CE.Required? YesFlag Value DescriptionCOPYFLG_WARN_IF_SKIP 0x00000001 Warn user if skipping a file is attempted after error.COPYFLG_NOSKIP 0x00000002 Do not allow a user to skip copying a file.COPYFLG_NO_OVERWRITE 0x00000010 Do not overwrite files in destination directory.COPYFLG_REPLACEONLY 0x00000400 Copy the source file to the destination directory only if the file is already in the destination directory.CE_COPYFLG_NO_DATE_DIALOG 0x20000000 Do not copy files if the target file is newer.CE_COPYFLG_NODATECHECK 0x40000000 Ignore date while overwriting the target file.CE_COPYFLG_SHARED 0x80000000 Create a reference when a shared DLL is counted.
Chapter 7 — Programming132 CN2B Mobile Computer User’s ManualExample[DefaultInstall.SH3] CopyFiles = Files.Common, Files.SH3 [DefaultInstall.MIPS] CopyFiles = Files.Common, Files.MIPS[AddReg]This section, under the [DefaultInstall] section, is optional and describes the keys and values that the .CAB file adds to the device registry. Within the [DefaultInstall] section, a reference may have been made to this sec-tion, such as “AddReg=RegSettings.All”. This section defines the options for that setting.•add_registry_section:registry_root_stringString that specifies the registry root location. The following list shows the values supported by Windows CE.• HKCR Same as HKEY_CLASSES_ROOT• HKCU Same as HKEY_CURRENT_USER• HKLM Same as HKEY_LOCAL_MACHINE•add_registry_section:value_nameRegistry value name. If empty, the “default” registry value name is used.•add_registry_section:flagsNumeric value that specifies information about the registry key. The fol-lowing table shows the values that are supported by Window CE.ExampleAddReg = RegSettings.All [RegSettings.All] HKLM,%reg_path%,,0x00000000,alpha; <default> = “alpha” HKLM,%reg_path%,test,0x00010001,3; Test = 3 HKLM,%reg_path%\new,another,0x00010001,6; New\another = 6Required? NoFlag Value DescriptionFLG_ADDREG_NOCLOBBER 0x00000002 If the registry key exists, do not overwrite it. Can be used with any of the other flags in this table.FLG_ADDREG_TYPE_SZ 0x00000000 REG_SZ registry data type.FLG_ADDREG_TYPE_MULTI_SZ 0x00010000 REG_MULTI_SZ registry data type. Value field that follows can be a list of strings separated by commas.FLG_ADDREG_TYPE_BINARY 0x00000001 REG_BINARY registry data type. Value field that fol-lows must be a list of numeric values separated by com-mas, one byte per field, and must not use the 0x hexadecimal prefix.FLG_ADDREG_TYPE_DWORD 0x00010001 REG_DWORD data type. The noncompatible format in the Win32 Setup .INF documentation is supported.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 133[CEShortCuts]This section, a Windows CE-specific section under the [DefaultInstall] section, is optional and describes the shortcuts that the installation applica-tion creates on the device. Within the [DefaultInstall] section, a reference may have been made to this section, such as “ShortCuts.All”. This section defines the options for that setting.•shortcut_list_section:shortcut_filenameString that identifies the shortcut name. It does not require the .LNK extension.•shortcut_list_section:shortcut_type_flagNumeric value. Zero or empty represents a shortcut to a file; any non-zero numeric value represents a shortcut to a folder.•shortcut_list_section:target_file_pathString value that specifies the destination location. Use the target file name for a file, such as MyApp.exe, that must be defined in a file copy list. For a path, use a file_list_section name defined in the [Destination-Dirs] section, such as DefaultDestDir, or the %InstallDir% string.•shortcut_list_section:standard_destination_pathOptional string value. A standard %CEx% path or %InstallDir%. If no value is specified, the shortcut_list_section name of the current section or the DefaultDestDir value from the [DestinationDirs] section is used.ExampleCEShortcuts = Shortcuts.All [Shortcuts.All] Sample App,0,sample.exe; Uses the path in DestinationDirs. Sample App,0,sam-ple.exe,%InstallDir%; The path is explicitly specified.Sample .INF File[Version]; Required section Signature = “$Windows NT$” Provider = “Intermec Technologies Corporation” CESignature = “$Windows CE$”;[CEDevice];ProcessorType = [DefaultInstall]; Required section CopyFiles = Files.App, Files.Fonts, Files.BitMaps, Files.Intl, Files.Tele-comNcsCE, Files.Windows, Files.Import, Files.Export, Files.Work, Files.Data-base, Files.WinCE AddReg = RegSettings.All ;CEShortcuts = Shortcuts.All[SourceDisksNames]; Required section 1 = ,“App files” ,,c:\appsoft\... 2 = ,”Font files” ,,c:\WinNT\Fonts 3 = ,”CE Tools”  ,,c:\windows ce tools\wce400\700ie\mfc\lib\x86 [SourceDisksFiles]; Required section rpm.exe   = 1,C:\Appsoft\program\wce400\WCEX86Rel700 Required? No
Chapter 7 — Programming134 CN2B Mobile Computer User’s Manualwcestart.ini = 1 rpmce212.ini = 1 intermec.bmp = 1 rpmlogo.bmp = 1 rpmname.bmp = 1 import.bmp  = 1 export.bmp  = 1 clock.bmp  = 1 printer.bmp = 1 filecopy.bmp = 1 readme.txt  = 1 lang_eng.bin = 1 rpmdata.dbd = 1,database\wce1 tahoma.ttf  = 2 mfcce212.dll = 3 olece212.dll = 3 olece211.dll = 1,c:\windows ce tools\wce400\NMSD61102.11\mfc\lib\x86rdm45wce.dll = 1,c:\rptools\rdm45wce\4_50\lib\wce400\wcex86rel picfmt.dll  = 1,c:\rptools\picfmt\1_00\wce400\wcex86rel6110 fmtctrl.dll = 1,c:\rptools\fmtctrl\1_00\wce400\wcex86rel6110 ugrid.dll  = 1,c:\rptools\ugrid\1_00\wce400\wcex86rel6110 simple.dll  = 1,c:\rptools\pspbm0c\1_00\wce400\wcex86rel psink.dll = 1,c:\rptools\psink\1_00\wce400\WCEX86RelMinDependency pslpwce.dll =1,c:\rptools\pslpm0c\1_00\wce400\WCEX86RelMinDependency npcpport.dll = 1,c:\rptools\cedk\212_03\installable drivers\printer\npcp ;dexcom.dll  = 1,c:\rptools\psdxm0c\1_00\x86 ncsce.exe  = 1,c:\rptools\ncsce\1_04 nrinet.dll  = 1,c:\rptools\ncsce\1_04 [DestinationDirs];Required section ;Shortcuts.All = 0,%CE3%  ; \Windows\Desktop Files.App= 0,%InstallDir% Files.DataBase= 0,%InstallDir%\DataBase Files.BitMaps= 0,%InstallDir%\Bitmaps Files.Fonts= 0,%InstallDir%\Fonts Files.Intl= 0,%InstallDir%\Intl Files.TelecomNcsCE= 0,%InstallDir%\Telecom\NcsCE Files.Windows= 0,%InstallDir%\Windows Files.Import= 0,%InstallDir%\Import Files.Export= 0,%InstallDir%\Export Files.Work= 0,%InstallDir%\WorkFiles.WinCE= 0,\storage_card\wince[CEStrings]; Required section AppName = Rp32 InstallDir = \storage_card\%AppName% [Strings]; Optional section ;[Shortcuts.All] ;Sample App,0,sample.exe; Uses the path in DestinationDirs. ;Sample App,0,sample.exe,%InstallDir%; The path is explicitly specified.[Files.App] rpm.exe,,,0 rpm.ini,rpmce212.ini,,0 mfcce212.dll,,,0 olece212.dll,,,0 olece211.dll,,,0 rdm45wce.dll,,,0
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 135picfmt.dll,,,0 fmtctrl.dll,,,0 ugrid.dll,,,0 simple.dll,,,0 psink.dll,,,0 pslpwce.dll,,,0 npcpport.dll,,,0 ;dexcom.dll,,,0[Files.DataBase]rpmdata.dbd,,,0[Files.Fonts] tahoma.ttf,,,0[Files.BitMaps] intermec.bmp,,,0 rpmlogo.bmp,,,0 rpmname.bmp,,,0 import.bmp,,,0 export.bmp,,,0 clock.bmp,,,0 printer.bmp,,,0 filecopy.bmp,,,0[Files.Intl] lang_eng.bin,,,0[Files.TelecomNcsCE] ncsce.exe,,,0 nrinet.dll,,,0 [Files.Windows]readme.txt,,,0[Files.Import]readme.txt,,,0[Files.Export]readme.txt,,,0[Files.Work]readme.txt,,,0[Files.WinCE]wcestart.ini,,,0[RegSettings.All] HKLM,”SOFTWARE\Microsoft\Shell\AutoHide”,,0x00010001,1; Autohide the taskbar HKLM,”SOFTWARE\Microsoft\Shell\OnTop”,,0x00010001,0; Shell is not on top HKLM,”SOFTWARE\Microsoft\Clock”,SHOW_CLOCK,0x00010001,0; Clock is not on taskbar
Chapter 7 — Programming136 CN2B Mobile Computer User’s ManualUsing Installation Functions in SETUP.DLLSETUP.DLL is an optional file that enables you to perform custom opera-tions during installation and removal of your application. The following list shows the functions that are exported by SETUP.DLL.After the CAB File ExtractionCab files that need to cause a warm reset after cab extraction need to create the __RESETMEPLEASE__.TXT file in the “\Windows” directory. The preferred method to create this file is within the DllMain portion of the SETUP.DLL file. It looks like this:#include <windows.h>#include <Tlhelp32.h>#include <winioctl.h>#include <ce_setup.h>   // in the public SDK dir#define IOCTL_TERMINAL_RESET CTL_CODE (FILE_DEVICE_UNKNOWN,FILE_ANY_ACCESS, 2050, METHOD_NEITHER)BOOL APIENTRY DllMain( HANDLE h, DWORD reason, LPVOID lpReserved ){return TRUE;} // DllMain//************************************************************************// $DOCBEGIN$// BOOL IsProcessRunning( TCHAR * pname );//// Description: Get process table snapshot, look for pname running.//// Arguments: pname - pointer to name of program to look for.// for example, app.exe.//// Returns: TRUE - process is running.//          FALSE - process is not running.// $DOCEND$//************************************************************************Install_Init Called before installation begins. Use this function to check the application version when reinstall-ing an application and to determine if a dependent application is present.Install_Exit Called after installation is complete. Use this function to handle errors that occur during applica-tion installation.Uninstall_Init Called before the removal process begins. Use this function to close the application, if the applica-tion is running.Uninstall_Exit Called after the removal process is complete. Use this function to save database information to a file and delete the database and to tell the user where the user data files are stored and how to reinstall the application.Note: Use [DefaultInstall] > CESelfRegister (page 129) in the .INF file to point to SETUP.DLL.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 137BOOL IsProcessRunning( TCHAR * pname ) {HANDLE hProcList;PROCESSENTRY32 peProcess;DWORD thDeviceProcessID;TCHAR lpname[MAX_PATH];if ( !pname || !*pname ) return FALSE;_tcscpy( lpname, pname );_tcslwr( lpname );hProcList = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );if ( hProcList == INVALID_HANDLE_VALUE ) {return FALSE;} // end ifmemset( &peProcess, 0, sizeof(peProcess) );peProcess.dwSize = sizeof(peProcess);if ( !Process32First( hProcList, &peProcess ) ) {CloseToolhelp32Snapshot( hProcList );return FALSE;} // end ifthDeviceProcessID = 0;do {_tcslwr( peProcess.szExeFile );if ( _tcsstr( peProcess.szExeFile, lpname ) ) {thDeviceProcessID = peProcess.th32ProcessID;break;} // end if} while ( Process32Next( hProcList, &peProcess ) );if ( ( GetLastError() == ERROR_NO_MORE_FILES ) && ( thDeviceProcessID == 0 ) ) {CloseToolhelp32Snapshot( hProcList );return FALSE;} // end ifCloseToolhelp32Snapshot( hProcList );return TRUE;} // IsProcessRunningcodeINSTALL_INIT Install_Init(HWND hwndParent,BOOL fFirstCall, BOOL fPreviouslyInstalled, LPCTSTR pszInstallDir ) {return codeINSTALL_INIT_CONTINUE;}codeINSTALL_EXIT Install_Exit (HWND hwndParent, LPCTSTR pszInstallDir,
Chapter 7 — Programming138 CN2B Mobile Computer User’s ManualWORD cFailedDirs, WORD cFailedFiles, WORD cFailedRegKeys, WORD cFailedRegVals,    WORD cFailedShortcuts ) {HANDLE h;TCHAR srcfile[MAX_PATH];TCHAR dstfile[MAX_PATH];if (cFailedDirs || cFailedFiles || cFailedRegKeys || cFailedRegVals || cFailedShortcuts)return codeINSTALL_EXIT_UNINSTALL;if ( IsProcessRunning( L”autocab.exe” ) ){h = CreateFile( L”\\Windows\\__resetmeplease__.txt”,(GENERIC_READ | GENERIC_WRITE), 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN, NULL );if ( h != INVALID_HANDLE_VALUE )CloseHandle( h );else{// Couldn’t create the file.  If it failed because the file already exists, it is not fatal. // Otherwise, notify user of the inability to reset the device and they will have to// perform it manually after all of the installations are complete.} // end if}else{DWORD dret;h = CreateFile( L”SYI1:”, (GENERIC_WRITE | GENERIC_READ), 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL );// Force a warm start NOW.if ( h != INVALID_HANDLE_VALUE ){DeviceIoControl( h, IOCTL_TERMINAL_RESET, NULL, 0, NULL, 0, &dret, NULL);// Won’t return, but we’ll show clean up anywayCloseHandle( h );}else{// Couldn’t access SYSIO. Notify user.} // end if} // end ifreturn codeINSTALL_EXIT_DONE;}codeUNINSTALL_INIT Uninstall_Init(HWND hwndParent,
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 139LPCTSTR pszInstallDir ) {// TODO: Perform the reverse of INSTALL_INIT herereturn codeUNINSTALL_INIT_CONTINUE;}codeUNINSTALL_EXIT Uninstall_Exit(HWND hwndParent) {// TODO: Perform the reverse of INSTALL_EXIT herereturn codeUNINSTALL_EXIT_DONE;}The system software looks for the following directory structure and files on the installed media card whether it be a Secure Digital card or embedded flash file system. No other folders need exist.\2577\autorun.exe\2577\autorun.dat\2577\autocab.exe\2577\autocab.dat\cabfiles\*.cabCreating CAB Files with CAB WizardAfter you create the .INF file and the optional SETUP.DLL file, use the CAB Wizard to create the .CAB file. The command-line syntax for the CAB Wizard is as follows:cabwiz.exe “inf_file” [/dest dest_directory] [/err error_file] [/cpu cpu_type [cpu_type]]A batch file, located in <program> directory, with the following com-mands, works well:cabwiz.exe c:\appsoft\<program>\<inf_file_name>cd \appsoft\<program>“inf_file” The SETUP.INF file path.dest_directory The destination directory for the .CAB files. If no directory is specified, the .CAB files are created in the “inf_file” directory.error_file The file name for a log file that contains all warnings and errors that are encountered when the .CAB files are compiled. If no file name is specified, errors are displayed in message boxes. If a file name is used, the CAB Wizard runs without the user interface (UI); this is useful for automated builds.cpu_type Creates a .CAB file for each specified microprocessor tag, which is a label used in the Win32 SETUP.INF file to differentiate between different microprocessor types. The /cpu parameter, fol-lowed by multiple cpu_type values, must be the last qualifier in the command line.
Chapter 7 — Programming140 CN2B Mobile Computer User’s ManualExampleThis example creates .CAB files for the ARM and MIPS microprocessors, assuming the Win32 SETUP.INF file contains the ARM and MIPS tags:cabwiz.exe “c:\myfile.inf” /err myfile.err /cpu arm mipsTroubleshooting the CAB WizardTo identify and avoid problems that might occur when using the CAB Wizard, follow these guidelines:•Use %% for a percent sign (%) character when using this character in an .INF file string, as specified in Win32 documentation. This does not work under the [Strings] section.• Do not use .INF or .CAB files created for Windows CE to install appli-cations on Windows-based desktop platforms.• Ensure the MAKECAB.EXE and CABWIZ.DDF files, included with Windows CE, are in the same directory as CABWIZ.EXE.• Use the full path to call CABWIZ.EXE.• Do not create a .CAB file with the MAKECAB.EXE file included with Windows CE. You must use CABWIZ.EXE, which uses MAKE-CAB.EXE to generate the .CAB files for Windows CE.•Do not set the read-only attribute for .CAB files.Customization and LockdownPocket PC (Windows Mobile) is a hardware specification created by Microsoft Corporation. Devices that wish to carry the Pocket PC logo must meet the minimum hardware requirements set in the Pocket PC specifica-tion. Manufacturers are free to add extra hardware functionality.Pocket PC devices also use a specialized version of the CE operating system. This operating system is built from Windows CE 4.2 but contains custom-izations, most notably the lack of a desktop and the addition of the Today Screen.To carry the Pocket PC logo, all devices must be tested at an Independent Test Laboratory. The ITL testing is done based on Microsoft requirements. The test lab then reports the findings back to Microsoft Corporation and Intermec Technologies. If the CN2B Computer passed all tests, Intermec is allowed to ship the device with the Pocket PC logo. Each time the operat-ing system is modified, Intermec must resubmit to ITL testing.Note: CABWIZ.EXE, MAKECAB.EXE, and CABWIZ.DDF (Windows CE files available on the Windows CE Toolkit) must be installed in the same directory on the desktop computer. Call CABWIZ.EXE using its full path for the CAB Wizard application to run correctly.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 141This means we cannot change the operating system much and still be a Pocket PC device. For example, if we remove Word from the Start menu, the device would fail ITL testing and we would not be able to ship devices with the Pocket PC logo.Although many customers want a Pocket PC device, some customers would prefer that their users not have access to all of the Pocket PC features. Inter-mec cannot customize the operating system in any way but a custom appli-cation can:• Delete items from the Start menu and Programs folder. These items are just shortcuts in the file system so the application is not really being deleted. Cold booting the device brings these items back so the applica-tion will need to be run on every cold boot.• Use the RegFlushKey() API to save a copy of the registry to a storage device. See the CN2B Management Tools portion for more information on how to do this. Saving a copy of the registry restores most system set-tings in a cold boot situation.• Use the SHFullScreen() API in conjunction with other APIs to make the application take up the entire display and prevent the start menu from being available.• Remap keys and disable keys on the keypad.• Create a custom SIP.• Make changes to the registry to configure the device.Should you want your CN2B Computer to display a full screen, keep in mind that your computer is Pocket-PC certified by Microsoft Corporation. Check out resources on programming for the Pocket PC, using the follow-ing links. These give full instructions on how to display full screen.• Instructions on how to create a full screen application for eVC++ appli-cations using an SHFullScreen() API:support.microsoft.com/support/kb/articles/Q266/2/44.ASP• Instructions on how to create a full screen application for eVB applica-tions also using the SHFullScreen() API:support.microsoft.com/support/kb/articles/Q265/4/51.ASPFTP ServerFTP support is provided through the FTP Server application FTP-DCE.EXE (MS Windows CE Versions) which is provided as part the base system.FTPDCE is the Internet File Transfer Protocol (FTP) server process. The server can be invoked from an application or command line. Besides servic-ing FTP client requests the FTP Server also send a “network announce-ment” to notify prospective clients of server availability.
Chapter 7 — Programming142 CN2B Mobile Computer User’s ManualDo the following to send commands:1Start an FTP client and connect to the device FTP server.2Log in with “intermec” as the user name and “cr52401” for the pass-word.3From the FTP client, send the command.4Wait for a response.Synopsisftpdce [ options ]OptionsNote: You should consult the RFC959 specification for proper use of some of these commands at the following URL:• www.ietf.org/rfc/rfc959.txt for the text version, or• www.w3.org/Protocols/rfc959/ for an html version.–Aaddr (where addr is in the form of a.b.c.d) Sets the single target address to which to send the network announcement. Default is broadcast.–Bbyte Sets the FTP data block size. Smaller sizes may be useful over slower links. Default is 65536.–Cname Sets the device name. Used by Intermec management software.–Fvalue Disables the default Intermec account. A value of “0” disables the account. Default is “1”. Note that disabling the default account without providing a working access control list on the server will result in a device that will not accept any FTP connections.–Hsec Sets the interval between network announcements in seconds.“0” turns the network announce-ment off. Default is 30 seconds.–Iaddr (where addr is in the form of a.b.c.d) Sets the preferred 6920 Communications Server (optional).–Llog (where log is either “0” or “1”) Sets the state of logging. Default is 0 (disabled).–Nsec Specifies the number of seconds to wait before initially starting FTP server services.–Pport Sets the UDP port on which the network announcement are sent. Default port is 52401.–Qport Sets the port on which the FTP Server will listen for connections. Default port is 21.–Rdir Sets the FTP mount point to this directory. Default is the root folder of the object store.–Tscrip Sets the script name for the 6920 Communications Server to process.–Uurl Sets the default URL for this device.–Z“parms” Sets extended parameters to be included in the network announcement.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 143Configurable Parameters Via the Registry EditorThe following parameters receive default values during the installation of the Intermec FTP Server components. A few of the parameters are visible in the registry by default, but most must be created to modify the default behavior of the FTP server.BlockSizeSetting this parameter configures the Intermec FTP Server to transmit and receive Ethernet packets using the specified data block size. By default, the FTP server transmits and receives data using a 64K data block size. Adjust-ing this value may be useful in certain wireless TCP/IP installations.DeviceNameThis parameter configures the Intermec FTP Server to include the specified device name in the Intermec Device Network Announcement (IDNA). Adjusting this value may be useful in assigning a symbolic name to this device for asset tracking.DeviceURLThis parameter configures the Intermec FTP Server to transmit the speci-fied URL in the IDNA. This can be used by Intermec management soft-ware for asset management.Key HKLM\Software\Intermec\IFTPValue Type REG_DWORD - data block size, in bytes.Valid Range 0x100-0x10000 (256-65536 decimal).Default 65536Key HKLM\Software\Intermec\IFTPValue Type REG_SZValid Range None.Default None.Key HKLM\Software\Intermec\IFTPValue Type REG_SZValid Range None.Default None.
Chapter 7 — Programming144 CN2B Mobile Computer User’s ManualIDNATargetThis parameter configures the Intermec FTP Server to transmit the IDNA to a specific destination instead of a general UDP broadcast. This parame-ter is useful on networks that do not allow UDP broadcasts to be routed between subnets. The use of this parameter restricts the reception of the IDNA to the target destination only.ManifestNameThis parameter configures the Intermec FTP Server to transmit the speci-fied manifest name in the IDNA. This parameter is used by the Intermec 6920 Communications Server for communication transactions. See 6920 Communications Server documentation for proper use of this parameter.PauseAtStartupThis configures the Intermec FTP Server to sleep for the specified number of seconds before making the FTP service available on the device.RootThis parameter configures the Intermec FTP Server to set the root of the FTP mount point to the specified value. Note that this must map to an exist-ing directory or you will not be able to log into the FTP Server.Key HKLM\Software\Intermec\IFTPValue Type REG_SZValid Range None.Default None.Key HKLM\Software\Intermec\IFTPValue Type REG_SZValid Range None.Default iftp.iniKey HKLM\Software\Intermec\IFTPValue Type REG_DWORD - stored in seconds.Valid Range None.Default 0Key HKLM\Software\Intermec\IFTPValue Type REG_SZValid Range None.Default \
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 145Transferring Files Over TCP/IP NetworksThe File Transfer Protocol (FTP) server transfers files over TCP/IP net-works. The FTPDCE.EXE program is a version that does not display a window, but can run in the background.FTPDCE is the Internet File Transfer Protocol (FTP) server process. The server can be invoked from an application or command line. Besides servic-ing FTP client requests, the FTP Server also sends a “network announce-ment” to notify prospective clients of server availability.The FTP Server currently supports the following FTP requests:CDUP Changes to the parent directory of the current working directory.CWD Changes working directory.DELE Deletes a file.HELP Gives help information.LIST (This FTP request is the same as the ls -lgA command). Gives list files in a directory. MKD Makes a directory.MODE (Always Uses Binary). Specifies data transfer mode.NLST (Not supported) Gives a name list of files in directory (this request is the same as the ls command).NOOP Does nothing.PASS Specifies a password.PWD Prints the current working directory.QUIT Terminates session.RETR Retrieves a file.RMD Removes a directory.RNFR Specifies rename-from file name.RNTO Specifies rename-to file name.STOR Stores a file.SYST Shows the operating system type of server system.TYPE (Binary transfers only.) Specifies the data transfer type with the Type parameter.USER Specifies user name.XCUP (Not Normally Used) Changes the parent directory of the current working directory. XCWD (Not Normally Used) Changes the current directory.XMKD (Not Normally Used) Creates a directory.XPWD (Not Normally Used) Prints the current working directory.XRMD (Not Normally Used) Removes a directory.
Chapter 7 — Programming146 CN2B Mobile Computer User’s ManualSITE The following extended OEM commands are supported by the SITE request. For Microsoft FTP clients, you can send site commands by preceding the command with “quote” such as “quote site status.”ATTRIB Gets or sets the attributes of a given file. (SITE ATTRIB)Usage: QUOTE SITE ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[path] filename]+ Sets an attribute.– Clears an attribute.R Read-only file attribute.A Archive file attribute.S System file attribute.H Hidden file attribute.To retrieve the attributes of a file, only specify the file. The server response will be: 200-AD SHRCEIX filenameTo retrieve the attributes of a file, only specify the file. The server response will be: 200-AD SHRCEIX filenameIf the flag exists in its position shown above, it is set. Also, in addition to the values defined above, there is also defined:C Compressed file attribute.E Encrypted file attribute.I INROM file attribute.X XIP file attribute (execute in ROM, not shadowed in RAM).BOOT Reboots the server OS. This will cause the system on which the server is executing to reboot. The FTP Server will shut down cleanly before reboot. All client connections will be terminated. Cold boot is default except for the PocketPC build in which the default is warm boot. (SITE BOOT)Usage: QUOTE SITE BOOT [WARM | COLD]COPY Copies a file from one location to another. (SITE COPY)Usage: QUOTE SITE COPY [source] [destination]Example: QUOTE SITE COPY ‘\Storage Card\one.dat’ ‘\Storage Card\two.dat’EXIT Exits the FTP Server. This command will shut down the FTP Server thus terminating all client connections. (SITE EXIT)Usage: QUOTE SITE EXITHELP Gives site command help information. (SITE HELP)Usage: QUOTE SITE HELP [command]KILL Terminates a running program. (SITE KILL)Usage: QUOTE SITE KILL [program | pid]
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 147The remaining FTP requests specified in RFC 959 are recognized, but not implemented.The banner returned in the parenthetical portion of its greeting shows the version number of the FTP Server as well as the MAC address, serial num-ber and operating system of the machine hosting the server.The FTP Server supports browsing from the latest Netscape and Microsoft web browsers. Drag-and-drop capability is available using this environ-ment.LOG Opens or closes the program log. (SITE LOG)Usage: QUOTE SITE LOG [open [filename]| close]PLIST Lists the running processes (SITE PLIST)Usage: QUOTE SITE PLISTRUN Starts a program running. If the program to run has spaces in path or filename, wrapping the name with single quotes is required.Usage: QUOTE SITE RUN [program]Example: QUOTE SITE RUN ‘\Storage Card\app.exe’STATUS Returns the current settings of the FTP Server. MAC, serial number, model, IP address, network announcement information as well as OS memory usage are returned. (SITE STATUS)Usage: QUOTE SITE STATUSTIMEOUT Toggles idle timeout between 120 to 1200 seconds (2 to 20 minutes). If this timer expires with no activity between the client and the server, the client connection will be disconnected. If the optional seconds argument is supplied, the server will set the con-nection timeout to the number of seconds specified. Default is 120 seconds or 2 minutes. (SITE TIMEOUT)Usage: QUOTE SITE TIMEOUT [seconds]EKEY Gives site command electronic key information. (SITE HELP)Usage: QUOTE SITE EKEY [command]EVAL Gives site command electronic value information. (SITE HELP)Usage: QUOTE SITE EVAL [command]GVAL Gives site command general value information. (SITE HELP)Usage: QUOTE SITE GVAL [command]PVAL Gives site command value information. (SITE HELP)Usage: QUOTE SITE PVAL [command]
Chapter 7 — Programming148 CN2B Mobile Computer User’s ManualThe FTPDCMDS subdirectory contains commands to use from the web browser. • Click EXITME.BIN to execute a SITE EXIT command. • Click REBOOTME.BIN to execute SITE BOOT command. • Use the GET command on these files to have the FTP Server execute these commands.•Security:A customer configurable access control list may be installed on the CN2B Computer. This list will allow customers to restrict access via the FTP Server to users they wish and is in addition to default Inter-mec accounts that are disabled using the -F0 option at runtime.The access control list is named FTPDCE.TXT and is placed in the same directory on the CN2B Computer as the FTPDCE.EXE server. The FTP Server encrypts this file to keep the information safe from unauthorized users. This file is encrypted when the FTP Server is started so a file that is placed onto the CN2B Computer after the FTP Server starts will require a restart of the FTP Server to take effect.The format of the FTPDCE.TXT is as follows:FTPDCE:user1!passwd1<cr><lf>user2!passwd2<cr><lf>user3!passwd3<cr><lf>...Stopping the FTP Server from Your ApplicationTo allow application programmers the ability to programmatically shut down the FTP Server, the FTP Server periodically tests to see if a named event is signaled. The name for this event is “ITC_IFTP_STOP” (no quotes).For examples on how to use events, consult the Microsoft Developer Net-work Library at www.msdn.com. The MSDN Library is an essential resource for developers using Microsoft tools, products, and technologies. It contains a bounty of technical programming information, including sample code, documentation, technical articles, and reference guides.Note: The user accounts and passwords are case-sensitive. Once the access control list is encrypted on the CN2B Computer, the FTP Server hides this file from users. Once an access control list is installed on the CN2B Com-puter, a new one is not accepted by the FTP Server until the previous one is removed. Encrypted access control lists are not portable between CN2B Computers.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 149Autostart FTPThis automatically starts the FTP Server (FTPDCE.EXE) when the CN2B Computer is powered on. This is provided with the NDISTRAY program (the Network Driver Interface Specification tray application), which dis-plays the popup menu that currently allows you to load and unload the net-work drivers. Tap the antenna icon in the System Tray of the Today screen (a sample antenna icon is shown below) for this pop-up menu.The default is to start the FTP Server at boot time, unless the following reg-istry entry is defined and set to “0” which disables AutoFTP. “1” enables the AutoFTP. The entry can be set from the NDISTRAY pop-up menu by selecting either AutoFTP On or AutoFTP Off.HKEY_LOCAL_MACHINE\Software\Intermec\Ndistray\StartupIFTPThese new entries are located below the selections to load the network driv-ers. If the StartupIFTP registry key is not defined, the FTP Server is loaded by default, to provide “out-of-the-box” capability for customers who want to begin loading files to the CN2B Computer without prior configuration.On a resume, if AutoFTP is enabled and the FTP Server is running, it is stopped and restarted. NDISTRAY uses a helper application named RESE-TIFTP to implement the restart on resume feature. To do an AutoFTP Installation Check:1Ensure the FTP Server is running “out-of-the-box” the first time.2Tap  Start > To d a y to access the Today screen, then tap the antenna icon in the System Tray to bring up the NDISTRAY pop-up menu. Select AutoFTP Off to disable AutoFTP. Perform a warm-boot and confirm the FTP Server is not running.Note: If a network driver is unloaded using the NDISTRAY pop-up menu, and the FTP Server is running, the FTP Server is stopped.Antenna
Chapter 7 — Programming150 CN2B Mobile Computer User’s Manual3Tap  Start > To d a y to access the Today screen, then tap the antenna icon in the System Tray to bring up the NDISTRAY pop-up menu. Select AutoFTP On to enable AutoFTP, reboot, confirm it is running.4Unload the network driver when the FTP Server is running and confirm that it is not running any more.5Load the FTP Server, establish a connection, then suspend and resume. The server should still run, but the FTP connection to the client should be dropped.Kernel I/O ControlsThis describes the KernelIoControl() functions available to application pro-grammers. Most C++ applications need to prototype the function as the following to avoid link and compile errors.extern “C” BOOL KernelIoControl(DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned);IOCTL_HAL_GET_DEVICE_INFOThis IOCTL returns either the platform type or the OEMPLATFORM name based on an input value.SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_DEVICE_INFO, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may be used to get the extended error value.lpInBuf Points to a DWORD containing either the SPI_GETPLATFORMTYPE or SPI_GETOEMINFO value.lpInBufSize Must be set to sizeof(DWORD).lpOutBuf Must point to a buffer large enough to hold the return data of the function. If SPI_GETPLATFORMTYPE is specified in lpInBuf, then the “PocketPC\0” Unicode string is returned. If SPI_GETOEMINFO is specified in lpInBuf, then the “Intermec 700\0” Unicode string is returned.nOutBufSize The size of lpOutBuf in bytes. Must be large enough to hold the string returned.lpBytesReturned The actual number of bytes returned by the function for the data requested.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 151IOCTL_HAL_ITC_READ_PARMUsage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_ITC_READ_PARM,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may be used to get the error value. Either ERROR_INVALID_PARAMETER or ERROR_INSUFFICIENT_BUFFER may be returned when this function is used to get the error.ID Field ValuesThe id field of the PARMS structure may be one of the following values:lpInBuf Points to this structure. See “ID Field Values” below.struct PARMS { BYTE id;BYTE ClassId;};nInBufSize Must be set to the size of the PARMS structure.lpOutBuf Must point to a buffer large enough to hold the return data of the function. If this field is set to NULL and nOutBufSize is set to zero when the function is called the function will return the number bytes required by the buffer.nOutBufSize The size of lpOutBuf in bytes.lpBytesReturned Number of bytes returned by the function for the data requested.ID Field ValuesITC_NVPARM_SERIAL_NUMThis IOCTL returns the serial number of the device in BCD format. Six bytes are returned in the buffer pointed to by the lpOutBuffer parameter.ITC_NVPARM_MANF_DATEThis IOCTL returns the device date of manufacture in the BCD YYYY/MM/DD format. Four bytes are returned in the buffer pointed to by the lpOutBuffer parameter.ITC_NVPARM_SERVICE_DATEThis IOCTL returns the device’s date of last service in BCD YYYY/MM/DD format. Four bytes are returned in the buffer pointed to by the lpOutBuffer parameter.ITC_NVPARM_DISPLAY_TYPEThis returns the device’s display type. One byte is returned in the buffer pointed to by the lpOutBuffer parameter.
Chapter 7 — Programming152 CN2B Mobile Computer User’s ManualITC_NVPARM_ECNThis IOCTL returns ECNs applied to the device in a bit array format. Four bytes are returned in the buffer pointed to by the lpOutBuffer parameter.ITC_NVPARM_CONTRASTThis IOCTL returns the device default contrast setting. Two bytes are returned in the buffer pointed to by the lpOut-Buffer parameter.ITC_NVPARM_MCODEThis IOCTL returns the manufacturing configuration code for the device. Sixteen bytes are returned in the buffer pointed to by the lpOutBuffer parameter.ITC_NVPARM_VERSION_NUMBERThis IOCTL returns the firmware version for various system components. These values for the ClassId field of the PARMS structure are allowed when ITC_NVPARM_VERSION_NUMBER is used in the id field:•VN_CLASS_KBD  Returns a five-byte string, including null terminator, that contains an ASCII value which repre-sents the keypad microprocessor version in the system.Format of the string is x.xx with a terminating null character.•VN_CLASS_ASIC  Returns a five-byte string, including null terminator, that contains an ASCII value which repre-sents the version of the FPGA firmware in the system.Format of the string is x.xx with a terminating null character.•VN_CLASS_BOOTSTRAP  Returns a five-byte string, including null terminator, that contains an ASCII value which represents the version of the Bootstrap Loader firmware in the system.Format of the string is x.xx with a termi-nating null character.ITC_NVPARM_INTERMEC_SOFTWARE_CONTENTThis IOCTL reads the manufacturing flag bits from the nonvolatile data store that dictates certain software parameters. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer that indicates if Intermec Content is enabled in the XIP regions. TRUE indicates that it is enabled. FALSE indicates that it is not enabled.ITC_NVPARM_WAN_RIThis reads the state of the WAN ring indicator flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer that indicates the polarity of the WAN RI signal. TRUE indicates active high. FALSE indicates active low.ITC_NVPARM_INTERMEC_DATACOLLECTION_SWThis IOCTL reads the state of the data collection software enabled flag. A BOOLEAN DWORD is returned in the buffer pointer to by lpOutBuffer that indicates the data collection software is to install at boot time. FALSE indicates the data collection software should not install.ITC_NVPARM_INTERMEC_DATACOLLECTION_HWThis IOCTL reads the data collection hardware flags. A BYTE is returned in the buffer pointer to by lpOutBuffer that indicates the type of data collection hardware installed. The maximum possible value returned is ITC_DEVID_SCANHW_MAX.•ITC_DEVID_SCANHW_NONE  No scanner hardware is installed.•ITC_DEVID_INTERMEC_EVIO  EVIO linear imager is installed.The high bit indicates whether the S6 scanning engine is installed. The bit mask for this is ITC_DEVID_S6ENGINE_MASK. A nonzero value indicates that the S6 scanning engine is installed.ITC_NVPARM_80211_INSTALLEDThis IOCTL reads the state of the 802.11b/g radio installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the 802.11b/g radio is installed. FALSE indicates that no 802.11b/g radio is installed.ITC_NVPARM_80211_RADIOTYPEThis IOCTL reads the 802.11b/g radio ID installed by manufacturing. A BYTE is returned in the buffer pointer to by lpOutBuffer that indicates the type of 802.11b/g radio hardware installed. The maximum possible value returned is ITC_DEVID_80211RADIO_MAX. The current definitions are:•ITC_DEVID_80211RADIO_NONE  No 802.11b/g radio installed.•ITC_DEVID_80211RADIO_INTEL_2011B  Intel 2011B radio installed.ID Field Values (continued)
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 153IOCTL_HAL_ITC_WRITE_SYSPARMDescribes and enables the registry save location.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_ITC_WRITE_SYSPARM,LPVOID lpInBuf,DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may get the error value. When this function gets the error, either ERROR_INVALID_PARAMETER or ERROR_INSUFFICIENT_BUFFER is returned.ITC_NVPARM_BLUETOOTH_INSTALLEDThis IOCTL reads the state of the Bluetooth radio installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the Bluetooth radio is installed. FALSE indicates that no Bluetooth radio is installed.ITC_NVPARM_SERIAL2_INSTALLEDThis IOCTL reads the state of the serial 2 (COM2) device installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the serial 2 device is installed. FALSE indicates that no serial 2 device is installed.ITC_NVPARM_SIM_PROTECT_HW_INSTALLEDThis IOCTL reads the state of the SIM card protection hardware installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the SIM card protection hardware is installed. FALSE indi-cates that no SIM card protection hardware is installed.ITC_NVPARM_SIM_PROTECT_SW_INSTALLEDThis IOCTL reads the state of the SIM card protection software installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the SIM card protection software is installed. FALSE indi-cates that no SIM card protection software is installed.ITC_NVPARM_SIM_PROTECT_SW_INSTALLEDThis IOCTL reads the state of the SIM card protection software installed flag. A BOOLEAN DWORD is returned in the buffer pointed to by lpOutBuffer. TRUE indicates that the SIM card protection software is installed. FALSE indi-cates that no SIM card protection software is installed.lpInBuf A single byte that may be one of the id values. See the following “ID Field Values” table.nInBufSize Must be set to the size of the lpInBuf in bytes.lpOutBuf Must point to a buffer large enough to hold the data to be written to the nonvolatile data store.nOutBufSize The size of lpOutBuf in bytes.lpBytesReturned The number of bytes returned by the function.ID Field Values (continued)
Chapter 7 — Programming154 CN2B Mobile Computer User’s ManualID Field ValuesThe id field of lpInBuf may be one of the following values:IOCTL_HAL_GET_DEVICEIDThis IOCTL returns the device ID. There are two types of device IDs sup-ported, which are differentiated based on the size of the output buffer. The UUID is returned if the buffer size is set to sizeof(UNIQUE_DEVICEID), otherwise the oldstyle device ID is returned.Usage#include “pkfuncs.h”#include “deviceid.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_DEVICEID,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may be used to get the extended error value.ID Field ValuesITC_REGISTRY_SAVE_ENABLEThis function enables or disables the save registry to non–volatile media feature of the RegFlushKey() function. lpOut-Buf must be set to zero (FALSE) if the feature is to be disabled or one (TRUE) if the feature is to be enabled.ITC_ WAKEUP_MASKThis IOCTL sets a bit mask that represents the mask for the five programmable wakeup keys. The I/O key is not a pro-grammable wakeup key. By default it is always the system resume key and all other keys are set to disable key wakeup. A zero in a bit position masks the wakeup for that key. A one in a bit position enables wakeup for that key. lpOutBuf must point to a buffer that contains a byte value of a wakeup mask consisting of the OR’ed constants as defined in OEMIOCTL.H. Only the following keys are programmable as wakeup events.#define SCANNER_TRIGGER1#define SCANNER_LEFT2#define SCANNER_RIGHT4#define GOLD_A18#define GOLD_A20x10lpInBuf Should be set to NULL. STRICT_ID settings are not supported.lpInBufSize Should be set to zero.lpOutBuf Must point to a UNIQUE_DEVICEID structure as defined by DEVICEID.H if the UUID is to be returned.nOutBufSize The size of the UNIQUE_DEVICEID in bytes if the UUID is to be returned. A DEVICE_ID as defined by PKFUNCS.H is returned if the size in bytes is greater than or equal to sizeof(DEVICE_ID).lpBytesReturned The number of bytes returned by the function.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 155IOCTL_HAL_GET_OAL_VERINFOReturns the HAL version information of the Pocket PC image.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_OAL_VERINFO,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may be used to get the extended error value.IOCTL_HAL_GET_BOOTLOADER_VERINFOReturns the HAL version information of the Pocket PC image.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_OAL_VERINFO,LPVOID lpInBuf, DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpBytesReturned Returns sizeof(PVERSIONINFO).lpOutBuf Must point to a VERSIONINFO structure as defined by OEMIOCTL.H. The fields should have these values:• cboemverinfo sizeof (tagOemVerInfo);• verinfover 1• sig;  “ITC\0”• id; ‘ N’• tgtcustomer “”• tgtplat SeaRay• tgtplatversion Current build version number• tgtcputype[8]; “Intel\0”• tgtcpu “PXA255\0”;• tgtcoreversion “”• date Build time• time Build datenOutBufSize The size of VERSIONINFO in bytes.
Chapter 7 — Programming156 CN2B Mobile Computer User’s ManualParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. GetLastError() may be used to get the extended error value.IOCTL_HAL_WARMBOOTCauses the system to perform a warm-boot. The object store is retained.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_WARMBOOT,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesNone.lpInBuf Should be set to NULL.nInBufSize Should be set to zero.lpOutBuf Must point to a VERSIONINFO structure as defined by OEMIOCTL.H. The fields should have these values: • cboemverinfo Sizeof (tagOemVerInfo);• verinfover 1• sig; “ITC\0”• id; ‘B’• tgtcustomer “”• tgtplat SeaRay• tgtplatversion Current build version number of the bootstrap loader• tgtcputype[8]; “Intel\0”;• tgtcpu “PXA255\0”• tgtcoreversion “”• date Build time• time Build datenOutBufSize The size of VERSIONINFO in bytes.lpBytesReturned The number of bytes returned to lpOutBuf.lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpOutBuf Should be NULL.nOutBufSize Should be zero.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 157IOCTL_HAL_COLDBOOTCauses the system to perform a cold-boot. The object store is cleared.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_COLDBOOT,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesNone.IOCTL_HAL_GET_RESET_INFOThis code allows software to check the type of the most recent reset.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_RESET_INFO,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. May use GetLastError() to get the extended error value.lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpOutBuf Should be NULL.nOutBufSize Should be zero.lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpOutBuf Must point to a HAL_RESET_INFO structure. See sample below.nOutBufSize The size of HAL_RESET_INFO in bytes.lpBytesReturned The number of bytes returned by the function.
Chapter 7 — Programming158 CN2B Mobile Computer User’s ManualSampletypedef struct {DWORD ResetReason; // most recent reset typeDWORD ObjectStoreState; // state of object store} HAL_RESET_INFO, * PHAL_RESET_INFO;// Reset reason types#define HAL_RESET_TYPE_UNKNOWN 0#define HAL_RESET_REASON_HARDWARE 1 // cold#define HAL_RESET_REASON_SOFTWARE 2 // suspend#define HAL_RESET_REASON_WATCHDOG 4#define HAL_RESET_BATT_FAULT 8 // power fail#define HAL_RESET_VDD_FAULT 16 // warm boot// Object store state flags#define HAL_OBJECT_STORE_STATE_UNKNOWN 0#define HAL_OBJECT_STORE_STATE_CLEAR 1IOCTL_HAL_GET_BOOT_DEVICEThis IOCTL code allows software to check which device CE booted from.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_GET_BOOT_DEVICE,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. May use GetLastError() to get the extended error value.lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpOutBuf Must point to a buffer large enough to hold a DWORD (4 bytes) that contains the boot device. These boot devices are supported:#define HAL_BOOT_DEVICE_UNKNOWN   0#define HAL_BOOT_DEVICE_ROM_XIP   1#define HAL_BOOT_DEVICE_ROM   2#define HAL_BOOT_DEVICE_PCMCIA_ATA   3#define HAL_BOOT_DEVICE_PCMCIA_LINEAR 4#define HAL_BOOT_DEVICE_IDE_ATA   5#define HAL_BOOT_DEVICE_IDE_ATAPI   6nOutBufSize The size of lpOutBuf in bytes (4).lpBytesReturned The number of bytes returned by the function.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 159IOCTL_HAL_REBOOTCauses the system to perform a warm-boot. The object store is retained.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_HAL_REBOOT,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesNone.IOCTL_PROCESSOR_INFORMATIONReturns processor information.Usage#include “pkfuncs.h”SyntaxBOOL KernelIoControl( IOCTL_PROCESSOR_INFORMATION,LPVOID lpInBuf,DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );lpInBuf Should be set to NULL.lpInBufSize Should be set to zero.lpOutBuf Should be NULL.nOutBufSize Should be zero.
Chapter 7 — Programming160 CN2B Mobile Computer User’s ManualParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. May use GetLastError() to get the extended error value.IOCTL_GET_CPU_IDReturns Xscale processor ID.Usage#include “oemioctl.h”SyntaxBOOL KernelIoControl( IOCTL_GET_CPU_ID,LPVOID lpInBuf, DWORD nInBufSize,LPVOID lpOutBuf,DWORD nOutBufSize,LPDWORD lpBytesReturned );ParametersReturn ValuesReturns TRUE if function succeeds. Returns FALSE if the function fails. May use GetLastError() to get the extended error value.lpInBuf Should be set to NULL.nInBufSize Should be set to zero.lpOutBuf Should be a pointer to the PROCESSOR_INFO structure. The PROCESSOR_INFO structure stores information that describes the CPU more descriptively.typedef __PROCESSOR_INFO {WORD wVersion; // Set to value 1WCHAR szProcessorCore[40]; // “ARM\0”WORD wCoreRevision; // 4WCHAR szProcessorName[40]; // “PXA255\0”WORD wProcessorRevision; // 0WCHAR szCatalogNumber[100]; // 0WCHAR szVendor[100]; // “Intel Corporation\0”DWORD dwInstructionSet; // 0DWORD dwClockSpeed; // 400}nOutBufSize Should be set to sizeof(PROCESSOR_INFO) in bytes.lpBytesReturned Returns sizeof(PROCESSOR_INFO);lpInBuf Should point to a CPUIdInfo structure defined in OEMIO-CTL.H.lpInBufSize Should be sizeof(CPUIdInfo).lpOutBuf Should be NULL.nOutBufSize Should be set to 0.lpBytesReturned Returns sizeof(PROCESSOR_INFO);
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 161Network Selection APIsThe Network Selection APIs change the network adapter configuration programmatically. Both drivers support the same IOCTL function num-bers for loading and unloading the drivers. Loading and unloading of the 802.11b/g driver is performed by the FWL1: device in the system by per-forming DeviceIOControl() calls to the driver. Loading and unloading of the driver for the built-in Ethernet adapter is performed by the SYI1: device in the system by performing DeviceIOControl() calls to the driver. • For loading an NDIS driver associated with an adapter, the IOCTL is IOCTL_LOAD_NDIS_MINIPORT.• For unloading NDIS drivers associated with an adapter the IOCTL is IOCTL_UNLOAD_NDIS_MINIPORT.Example#include <winioctl.h>#include “sysio.h”void DoLoad(int nDevice) { LPTSTR devs[] = { _T(“SYI1:”), _T(“FWL1:”) };HANDLE hLoaderDev;DWORD bytesReturned;hLoaderDev = CreateFile(devs[nDevice], GENERIC_READ|GENERIC_WRITE, 0,NULL, OPEN_EXISTING, 0, NULL);if (hLoaderDev != INVALID_HANDLE_VALUE) {if (!DeviceIoControl( hLoaderDev, IOCTL_LOAD_NDIS_MINIPORT, NULL, -1, NULL, 0, &bytesReturned, NULL)){MessageBox(NULL, TEXT(“SYSIO IoControl Failed”), TEXT(“Network loader”),MB_ICONHAND);if (hLoaderDev!=INVALID_HANDLE_VALUE) CloseHandle(hLoaderDev);hLoaderDev = INVALID_HANDLE_VALUE; // bad handle}else {CloseHandle(hLoaderDev);}}}void DoUnload(int nDevice) {LPTSTR devs[] = { _T(“SYI1:”), _T(“FWL1:”) };HANDLE hLoaderDev;DWORD bytesReturned;hLoaderDev = CreateFile(devs[nDevice], GENERIC_READ|GENERIC_WRITE, 0,NULL, OPEN_EXISTING, 0, NULL);if (hLoaderDev != INVALID_HANDLE_VALUE) {if (!DeviceIoControl( hLoaderDev, IOCTL_UNLOAD_NDIS_MINIPORT, NULL, -1, NULL, 0, &bytesReturned, NULL)){MessageBox(NULL, TEXT(“SYSIO IoControl Failed”),TEXT(“Network loader”),MB_ICONHAND);if (hLoaderDev!=INVALID_HANDLE_VALUE) CloseHandle(hLoaderDev);hLoaderDev = INVALID_HANDLE_VALUE; // bad handle}else {CloseHandle(hLoaderDev);}}}The API provided by Intermec Technologies exposes a limited set of rou-tines for a programmer to access and affect the 802.11b/g network interface
Chapter 7 — Programming162 CN2B Mobile Computer User’s Manualcard from within their application. The routines provided also reads/writes values to the CE registry pertaining to the 802.11b/g radio driver. By using the provided functions, a programmer can alter the 802.11b/g parameters of Network Name (SSID), WEP keys, infrastructure modes, radio channel, and power management modes. A programmer can also retrieve network connect status and signal strength indication from the RF network card.The API is contained within the 80211API.DLL file that should be present in any load with the 802.11b/g networking installed.The Profile Manager supports up to four radio configuration profiles. These profiles are the same as those set by the Wireless Network applet that runs on the Windows CE unit. You can configure different 802.11b/g pro-files and switch between them using the 802.11 API. See the ConfigurePro-file() function on page 176 for more information.Basic Connect/Disconnect FunctionsThese functions are available when using the 802.11b/g radio module.RadioConnect()Connects to the available radio. Use this function if you plan on using a lot of API calls that talk directly to the radio. Note that the 802.11b/g radio must be enabled via NDISTRAY before you can connect to it.NETWLAN.DLLPRISMNDS.DLL This is the 802.11b/g driver. It is present in all CN2B CE loads that use the 802.11b/g net-work interface card.80211API.DLL This file is an Intermec authored file that provides the programmer with a set of API calls to configure or monitor status of the 802.11b/g network.80211CONF.EXE This is the “Control Panel” for configuring the 802.11b/g network parameters. Note that it is an EXE file and is actually called by CPL802.CPL (see below).CPL802.CPL A control panel application that does nothing but call 80211CONF.EXE.80211SCAN.EXE Internally manages the Scan List activity.802PM.DLL This handles profile management for radio configurable values.URODDSVC.EXE This handles radio configuration and security authentication based on a selected profile.Syntax UINT RadioConnect( );Parameters NoneReturn Values ERROR_SUCCESS when successful, otherwise ERR_CONNECT_FAILEDRemarks Call this function before calling other functions found within this API. It hunts out and connects to the 802.11b/g radio available on the system. Check extended error codes if anything else is returned.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_RadioConnect)();#elseUINT RadioConnect();#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 163RadioDisconnect()Call this function when done using the 802.11 API to clean up a connec-tion from a previous RadioConnect() call. If you do not call this function, you may leave memory allocated.RadioDisassociate()Call this function to have the 802.11b/g radio disassociate from the current service set. The radio then enters an “off” mode until it is woken again by setting the Service Set Identifier (SSID). Also, the NDIS driver generates an NDIS media disconnect event.Query Information FunctionsGetAssociationStatus()Call this to obtain the radio’s current association status with a service set.Syntax UINT RadioDisconnect( );Parameters NoneReturn Values ERROR_SUCCESS when successful, otherwise ERR_CONNECT_FAILEDRemarks NoneDefinitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_RadioDisconnect)();#elseUINT RadioDisconnect();#endifSyntax UINT RadioDisassociate( );Parameters NoneReturn Values ERROR_SUCCESS on success, else ERR_CONNECT_FAILEDRemarks NoneDefinitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_RadioDisassociate)();#elseUINT RadioDisassociate();#endifSyntax UINT GetAssociationStatus( ULONG & );Parameters NDIS_RADIO_ASSOCIATED Indicates the radio is associated with an access pointNDIS_RADIO_SCANNING Indicates radio is looking to associate with an access pointReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks Data is only valid if the function returns ERROR_SUCCESS. Also, if ERROR_SUCCESS is returned, your ULONG reference is populated by one of the parameters listed above.
Chapter 7 — Programming164 CN2B Mobile Computer User’s ManualGetAuthenticationMode()Call this function to obtain the radio’s current authentication mode.GetBSSID()Call this function to get the current MAC address (BSSID) of the service set. In ESS mode, this is the MAC address of the access point the radio is associated with. In IBSS mode, this is a randomly generated MAC address, and serves as the ID for the IBSS.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetAssociationStatus)(ULONG &);#elseUINT GetAssociationStatus(ULONG &);#endifSyntax UINT GetAuthenticationMode( ULONG & );Parameters NDIS_RADIO_AUTH_MODE_OPEN 802.11 Open Authentication. Indicates that the radio is using an open system.NDIS_RADIO_AUTH_MODE_SHARED 802.11 Shared Authentication. Indicates that the radio is using a shared key.NDIS_RADIO_AUTH_MODE_AUTO Auto switch between Open/Shared. Indicates automatic detection is used when available.NDIS_RADIO_AUTH_MODE_ERROR Defined as error value. Indicates authentication mode was not determined or is unknown.NDIS_RADIO_AUTH_MODE_WPA WPA AuthenticationNDIS_RADIO_AUTH_MODE_WPA_PSK WPA Preshared Key AuthenticationNDIS_RADIO_AUTH_MODE_WPA_NONE WPA NoneReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks Data is only valid if ERROR_SUCCESS is returned. Also, if ERROR_SUCCESS is returned, your USHORT reference is populated with one of the parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetAuthenticationMode)(ULONG &);#elseUINT GetAuthenticationMode(ULONG &);#endifSyntax UINT GetBSSID( TCHAR * );Parameters Pointer to a character array, which is populated with the current BSSID after a successful call.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your TCHAR array is populated with the BSSID of the current service set: xx-xx-xx-xx-xx-xx
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 165GetDiversity()Call this function to get the current diversity setting of your 802.11b/g radio. This uses an optional NDIS5.1 OID to query the radio, of which a large number of 802.11b/g devices do not support. This may be inaccurate.GetLinkSpeed()Call this function to get the current link speed of the 802.11b/g radio.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetBSSID)(TCHAR *);#elseUINT GetBSSID(TCHAR *);#endifSyntax UINT GetDiversity(USHORT *);Parameters None.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your USHORT reference is popu-lated with one of the parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetDiversity)(USHORT *);#elseUINT GetDiversity(USHORT *);#endifSyntax UINT GetLinkSpeed( int & );Parameters This accepts an int reference, and your int is populated with the cur-rent link speed, in Mbps, rounded to the nearest whole integer, for example: 1, 2, 5, 11, etc. Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks Data returned is valid if ERROR_SUCCESS is returned.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetLinkSpeed)(int &);#elseUINT GetLinkSpeed(int &);#endif
Chapter 7 — Programming166 CN2B Mobile Computer User’s ManualGetMac()Call this function to get the MAC address of the 802.11b/g radio. GetNetworkMode()Call this function to get the current Network Mode (SSID) for the 802.11b/g radio.Syntax UINT GetMac( TCHAR * );Parameters Pointer to a character array, which is populated with the MAC address after a successful call.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your TCHAR array is populated with the formatted MAC address of the adapter, as follows: xx-xx-xx-xx-xx-xxDefinitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetMac)(TCHAR *);#elseUINT GetMac(TCHAR *);#endifNote: Be sure to call RadioConnect() before calling this function for this function to work properly.Syntax UINT GetNetworkMode( ULONG & );Parameters NDIS_NET_MODE_IBSS 802.11 Ad-Hoc Mode.NDIS_NET_MODE_ESS 802.11 Infrastructure Mode.NDIS_NET_MODE_UNKNOWN Anything Else/Unknown ErrorNDIS_NET_AUTO_UNKNOWN Automatic Selection. Use of this option is not supported or recommended.NDIS_NET_TYPE_OFDM_5G 5 Gigahertz 54 MbpsNDIS_NET_TYPE_OFDM_2_4G 802.11 2.4 GigahertzReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference is populated with one of the parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetNetworkMode)(ULONG &);#elseUINT GetNetworkMode(ULONG &);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 167GetNetworkType()Call this function to get the current network type of the radio. Do not con-fuse this with GetNetworkMode().GetSSID()Call this function to get the desired SSID of the 802.11b/g radio.Syntax UINT GetNetworkType( ULONG & );Parameters NDIS_NET_TYPE_FH Indicates this is a frequency hopping radio.NDIS_NET_TYPE_DS Indicates that this is a direct sequence radio.NDIS_NET_TYPE_UNDEFINED Indicates this radio is unknown or undefined.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference is populated with one of the parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetNetworkType)(ULONG &);#elseUINT GetNetworkType(ULONG &);#endifSyntax UINT GetSSID( TCHAR * );Parameters Pointer to a character array, which is populated with the current SSID when successful.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your TCHAR array is populated with the desired SSID.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetSSID)(TCHAR *);#elseUINT GetSSID(TCHAR *);#endifNote: Call RadioConnect() before this function for this function to work properly.
Chapter 7 — Programming168 CN2B Mobile Computer User’s ManualGetPowerMode()Call this function to get the current power savings mode of the radio.GetRSSI()Call this function to get the current RSSI (Radio Signal Strength Indica-tor), in Dbm.Syntax UINT GetPowerMode( ULONG & );Parameters NDIS_RADIO_POWER_MODE_CAM Continuous Access Mode (ie: always on).NDIS_RADIO_POWER_MODE_PSP Power Saving Mode.NDIS_RADIO_POWER_UNKNOWN Unknown power mode.NDIS_RADIO_POWER_AUTO Auto.NDIS_RADIO_POWER_MODE_FAST_PSP Fast PSP, good savings, fastReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference is populated with one of the parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetPowerMode)(ULONG &);#elseUINT GetPowerMode(ULONG &);#endifNote: Do not use Automatic Switching mode at this time.Syntax UINT GetRSSI( ULONG & );Parameters References a ULONG that is populated with the current RSSI after a successful call.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference contains the RSSI. Valid RSSI range is from -100 Dbm to -30 Dbm.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetRSSI)(ULONG &);#elseUINT GetRSSI(ULONG &);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 169GetTXPower()Call this function to get the current transmit power of the radio.GetWepStatus()Call this to get the current state of the radio’s WEP and encryption levels.Syntax UINT GetTXPower( ULONG & );Parameters NDIS_POWER_LEVEL_63 63 mWNDIS_POWER_LEVEL_30 30 mWNDIS_POWER_LEVEL_15 15 mWNDIS_POWER_LEVEL_5 5 mWNDIS_POWER_LEVEL_1 1 mWNDIS_POWER_LEVEL_UNKNOWN Unknown Value or Error.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference is populated with the TX power in mil-liwatts (mW). Valid ranges are from 5 mW to 100 mW.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetTXPower)(ULONG &);#elseUINT GetTXPower(ULONG &);#endifSyntax UINT GetWepStatus( ULONG & );Parameters NDIS_ENCRYPTION_1_ENABLED WEP enabled; TKIP, AES not enabled, and transmit key may or may not be available.NDIS_ENCRYPTION_DISABLED Indicates AES, TKIP, WEP disabled, and trans-mit key available.NDIS_ENCRYPTION_NOT_SUPPORTED Indicates WEP, TKIP, AES not supported.NDIS_ENCRYPTION_1_KEY_ABSENT Indicates AES, TKIP, WEP disabled, and trans-mit key not available.NDIS_ENCRYPTION_2_ENABLED Indicates TKIP, WEP enabled; AES not enabled, and transmit key available.NDIS_ENCRYPTION_2_KEY_ABSENT Indicates no transmit keys available for TKIP, WEP, TKIP, WEP enabled; AES not enabled. NDIS_ENCRYPTION_3_ENABLED Indicates AES, TKIP, WEP enabled, and trans-mit key available.NDIS_ENCRYPTION_3_KEY_ABSENT Indicates no transmit keys available for AES, TKIP, WEP, AES, TKIP, WEP enabled.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS returned, ULONG reference is populated with a parameter listed above.
Chapter 7 — Programming170 CN2B Mobile Computer User’s ManualGetRadioIpAddress()Call this function to obtain a formatted string indicating whether DHCP is enabled, and what is the current adapters IP address.GetCCXStatus()Call this to get information about the current CCX status of the adapter.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetWepStatus)(ULONG &);#elseUINT GetWepStatus(ULONG &);#endifSyntax UINT GetRadioIpAddress( TCHAR * );Parameters Pointer to a character array that contains the formatted string of the IP address and static/DHCP information.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your TCHAR array contains a string formatted as follows:IP: DHCP Enabled\nxxx.xxx.xxx.xxx\n or IP: DHCP Disabled\nxxx.xxx.xxx.xxx\nDefinitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetRadioIpAddress)(TCHAR *);#elseUINT GetRadioIpAddress(TCHAR *);#endifSyntax UINT GetCCXStatus( ULONG & );Parameters NDIS_NETWORK_EAP_MODE_OFF Disable EAP mode.NDIS_NETWORK_EAP_MODE_ON Enable EAP mode.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If ERROR_SUCCESS is returned, your ULONG reference is populated with one of parameters listed above.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetCCXStatus)(ULONG &);#elseUINT GetCCXStatus(ULONG &);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 171Set Information FunctionsAddWep()Call this function to add a WEP key to the radio. Call this function multi-ple times when adding more than one WEP key. Save the “default” key for last. For example, when adding four keys, and the second key is the default transmit key, add keys 1, 3 and 4 before you add key 2.EnableWep()Enables or disables WEP encryption on the radio (TRUE/FALSE).Note: Add the default transmit key last.Syntax UINT AddWep( ULONG, BOOL, TCHAR * );Parameters ULONG Specifies the key index to be set. Valid values are 0-3.BOOL When set to TRUE, specifies that this key is the default transmit key.TCHAR Pointer to a character array that specifies the key data in either HEX (length of 10 or 26) or ASCII (length of 5 or 13). This string must be null-terminated.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks When adding WEP keys to the radio, turn off encryption before you add the keys, then turn encryp-tion back on afterwards. Also, be sure to add the TRANSMIT KEY last.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_AddWep)(ULONG, BOOL, TCHAR *);#elseUINT AddWep(ULONG, BOOL, TCHAR *);#endifSyntax UINT EnableWep( BOOL );Parameters Set BOOL to TRUE to enable WEP encryption, or FALSE to disable WEP encryption.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks Call this function with TRUE as the parameter to enable WEP encryp-tion. Call this function with the FALSE parameter to disable WEP encryption. This call is an alias for EncryptionStatus(). See the following:EnableWEP(TRUE) = EncryptionSta-tus(NDIS_ENCRYPTION_1_ENABLED)EnableWEP(FALSE) = EncryptionSta-tus(NDIS_ENCRYPTION_DISABLED)Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_EnableWep)(BOOL);#elseUINT EnableWep(BOOL);#endif
Chapter 7 — Programming172 CN2B Mobile Computer User’s ManualEncryptionStatus()Call this function to set the desired encryption status.Syntax UINT EncryptionStatus( UINT mode );Parameters NDIS_ENCRYPTION_1_ENABLED WEP is enabled; TKIP and AES are not enabled, and a transmit key may or may not be available. (same as NDIS_RADIO_WEP_ENABLED)NDIS_ENCRYPTION_DISABLED Indicates that AES, TKIP, and WEP are dis-abled, and a transmit key is available. (Same as NDIS_RADIO_WEP_DISABLED)NDIS_ENCRYPTION_NOT_SUPPORTED Indicates that encryption (WEP, TKIP, and AES) is not supported. (Same as NDIS_RADIO_WEP_NOT_SUPPORTED)NDIS_ENCRYPTION_1_KEY_ABSENT Indicates that AES, TKIP, and WEP are dis-abled, and a transmit key is not available. (Same as NDIS_RADIO_WEP_ABSENT)NDIS_ENCRYPTION_2_ENABLED Indicates that TKIP and WEP are enabled; AES is not enabled, and a transmit key is available.NDIS_ENCRYPTION_2_KEY_ABSENT Indicates no transmit keys available for use by TKIP or WEP (enabled) and AES is not enabled. NDIS_ENCRYPTION_3_ENABLED Indicates that AES, TKIP, and WEP are enabled, and a transmit key is available.NDIS_ENCRYPTION_3_KEY_ABSENT Indicates there are no transmit keys available for use by AES, TKIP, or WEP, which are enabled.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_EncryptionStatus)(UINT mode); #elseUINT EncryptionStatus(UINT mode); #endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 173SetAuthenticationMode()Call this function to set the desired authentication mode.SetChannel()This function is currently not implemented. Ad-hoc networks automati-cally select a channel or use the already existing channel.Syntax UINT SetAuthenticationMode( ULONG );Parameters NDIS_RADIO_AUTH_MODE_OPEN 802.11 Open Authentication. Indicates that the radio is using an open system.NDIS_RADIO_AUTH_MODE_SHARED 802.11 Shared Authentication. Indicates that the radio is using a shared key.NDIS_RADIO_AUTH_MODE_AUTO Auto switch between Open/Shared. Indicates automatic detection is used when available.NDIS_RADIO_AUTH_MODE_ERROR Defined as error value. Indicates the authenti-cation mode was not determined at this time or is unknown.NDIS_RADIO_AUTH_MODE_WPA WPA AuthenticationNDIS_RADIO_AUTH_MODE_WPA_PSK WPA Preshared Key AuthenticationNDIS_RADIO_AUTH_MODE_WPA_NONE WPA NoneReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetAuthenticationMode)(ULONG);#elseUINT SetAuthenticationMode(ULONG);#endifSyntax UINT SetChannel( USHORT );Parameters USHORT value that should populate with the desired channel (1-14).Return Values None.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetChannel)(USHORT);#elseUINT SetChannel(USHORT);#endif
Chapter 7 — Programming174 CN2B Mobile Computer User’s ManualSetNetworkMode()Call this function to set the desired Network Mode.SetPowerMode()Call this function to set the desired power mode.Syntax UINT SetNetworkMode( ULONG );Parameters NDIS_NET_MODE_IBSS 802.11 Ad-Hoc Mode.NDIS_NET_MODE_ESS 802.11 Infrastructure Mode.NDIS_NET_MODE_UNKNOWN Anything Else/Unknown ErrorNDIS_NET_AUTO_UNKNOWN Automatic Selection. Use of this option is not supported or recommended.NDIS_NET_TYPE_OFDM_5G 5 Gigahertz 54 MbpsNDIS_NET_TYPE_OFDM_2_4G 802.11 2.4 GigahertzReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetNetworkMode)(ULONG);#elseUINT SetNetworkMode(ULONG);#endifSyntax UINT SetPowerMode( ULONG mode );Parameters NDIS_RADIO_POWER_MODE_CAM Continuous Access Mode (ie: always on).NDIS_RADIO_POWER_MODE_PSP Power Saving Mode.NDIS_RADIO_POWER_UNKNOWN Unknown power mode.NDIS_RADIO_POWER_AUTO Auto.NDIS_RADIO_POWER_MODE_FAST_PSP Fast PSP, good savings, fastReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetPowerMode)(ULONG mode);#elseUINT SetPowerMode(ULONG mode);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 175SetSSID()Call this function with a pointer to a null-terminated TCHAR array con-taining the desired SSID to set the desired SSID of the adapter.SetCCXStatus()Call this function to set the desired CCX / Network EAP status.SetMixedCellMode()Call this function to set the desired mixed cell mode.Syntax UINT SetSSID( TCHAR * );Parameters Pointer to a character array that contains the desired SSID. This should be null-terminated.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks If an “ANY” network is desired, pass in _T(“ANY”).Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetSSID)(TCHAR *);#elseUINT SetSSID(TCHAR *);#endifSyntax UINT SetCCXStatus( ULONG );Parameters NDIS_NETWORK_EAP_MODE_OFF Disable Network EAP / CCXNDIS_NETWORK_EAP_MODE_ON Enable Network EAP / CCXReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetCCXStatus)(ULONG);#elseUINT SetCCXStatus(ULONG);#endifSyntax UINT SetMixedCellMode( ULONG );Parameters NDIS_MIXED_CELL_OFF Disable Mixed CellNDIS_MIXED_CELL_ON Enable Mixed CellReturn Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SetMixedCellMode)(ULONG);#elseUINT SetMixedCellMode(ULONG);#endif
Chapter 7 — Programming176 CN2B Mobile Computer User’s ManualRemoveWep()Call this with a key index of 0-3 to remove the WEP key at that index.Helper FunctionsConfigureProfile()If using the Intermec 802.11 Profile Management system, you can pass a specific profile name to program the API to configure the radio.Syntax UINT RemoveWep( ULONG );Parameters ULONG value that specifies the key index to set. Valid values are 0-3.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when fails, or ERR_CONNECT_FAILED if connection with radio fails.Remarks On disassociation with all BSSIDs of the current service set, WEP key is removed by the adapter.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_RemoveWEP)(ULONG);#elseUINT RemoveWEP(ULONG);#endifSyntax UINT ConfigureProfile( TCHAR * );Parameters Pointer to a character array that contains the profile name. This should be null-terminated.Return Values ERROR_SUCCESS when successful, ERR_QUERY_FAILED when the query failed, or ERR_CONNECT_FAILED if a connection with the radio failed.Remarks Call this function with a pointer to a null-terminated TCHAR array that contains the name of the profile you wish to configure. This function reads profile data from the profile manager, sets that profile as the default active profile, and configures the radio appropriately. If needed, the supplicant and any other related services are automatically started and stopped.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_ConfigureProfile)(TCHAR *);#elseUINT ConfigureProfile(TCHAR *);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 177EnableZeroConfig()This enables or disables the Wireless Zero Configuration Wizard from Microsoft. After calling this function, a warm-boot is required for the change to take effect. Note that enabling this effectively disables all SET com-mands in this API.isZeroConfigEnabled()Call this function to determine whether Zero Config is currently enabled.isSupplicantRunning()Call this function to determine whether the security supplicant is running.Syntax UINT EnableZeroConfig( USHORT );Parameters TRUE Enable Wireless Zero ConfigFALSE Disable Wireless Zero ConfigReturn Values ERROR_SUCCESS when successful, ERR_ZERO_CONFIG_CHANGE_FAILED when the query failed.Remarks Call this function to set the desired Zero Config status.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_EnableZeroConfig)(USHORT);#elseUINT EnableZeroConfig(USHORT);#endifSyntax UINT isZeroConfigEnabled( );Parameters None.Return Values TRUE if ZeroConfig is enabled, and FALSE if it is disabled.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_isZeroConfigEnabled)();#elseUINT isZeroConfigEnabled();#endifSyntax UINT isSupplicantRunning( );Parameters None.Return Values TRUE if the security supplicant is running, FALSE if not running.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_isSupplicantRunning)();#elseUINT isSupplicantRunning();#endif
Chapter 7 — Programming178 CN2B Mobile Computer User’s ManualStartScanList()If a scan list is configured on the system, this causes the API to begin the process of scanning for an available network. This call can take quite a while to process (depending upon the length of the scan list and how long it takes to find a valid network), you may wish to call it from a separate thread.StartSupplicant()Call this to start the supplicant service if it is installed on the system.StopSupplicant()Call this function to stop the supplicant service.Syntax UINT StartScanList( );Parameters None.Return Values ERROR_SUCCESS when successful.Remarks Call this function to start the scan list functionality of the system.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_StartScanList)();#elseUINT StartScanList();#endifSyntax UINT StartSupplicant( );Parameters None.Return Values ERROR_SUCCESS when successful.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_StartSupplicant)();#elseUINT StartSupplicant();#endifSyntax UINT StopSupplicant( );Parameters None.Return Values ERROR_SUCCESS when successful.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_StopSupplicant)();#elseUINT StopSupplicant();#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 179isDHCPEnabled()Call this to determine whether DHCP is enabled on the current adapter.RenewDHCP()Call this to force a DHCP renewal on the current network adapter.GetCurrentDriverName()Call this function to populate the TCHAR array with the driver name.Syntax UINT isDHCPEnabled( );Parameters None.Return Values TRUE if DHCP is enabled, FALSE if it is not.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_isDHCPEnabled)();#elseUINT isDHCPEnabled();#endifSyntax UINT RenewDHCP( );Parameters None.Return Values ERROR_SUCCESS when successful.Remarks You should not have to call this function.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_RenewDHCP)();#elseUINT RenewDHCP();#endifSyntax UINT GetCurrentDriverName( TCHAR * );Parameters Pointer to a TCHAR array which contains the name of the driver when successful.Return Values ERROR_SUCCESS when successful.Remarks This function is called with a pointer to a TCHAR array that is large enough to hold the name of the driver PLUS the null terminator.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_GetCurrentDriverName)(TCHAR *);#elseUINT GetCurrentDriverName(TCHAR *);#endif
Chapter 7 — Programming180 CN2B Mobile Computer User’s ManualResetRadioToSystemSave()Call this function to force the radio to reset to the last desired active profile.EnableSuppLogging()Call this function to set the desired supplicant logging mode.SwitchPacketDriver()Call this function to switch between available packet drivers on the system.Syntax UINT ResetRadioToSystemSave( );Parameters None.Return Values ERROR_SUCCESS when successful.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_ResetRadioToSystemSave)();#elseUINT ResetRadioToSystemSave();#endifSyntax UINT EnableSuppLogging( ULONG );Parameters NDIS_SUPP_LOGGING_ON Supplicant Logging EnabledNDIS_SUPP_LOGGING_OFF Supplicant Logging DisabledReturn Values ERROR_SUCCESS when successful.Remarks None.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_EnableSuppLogging)(ULONG);#elseUINT EnableSuppLogging(ULONG);#endifSyntax UINT SwitchPacketDriver( USHORT );Parameters INTERMEC_PACKET_DRIVER Intermec Packet Driver (ZNICZIO)NDISUIO_PACKET_DRIVER Microsoft Packet Driver (NDISUIO)Return Values ERROR_SUCCESS when successful.Remarks After switching to a new packet driver, perform a warm boot for changes to take effect.Definitions #ifdef DYNAMIC_LOADINGtypedef UINT (*PFN_SwitchPacketDriver)(USHORT);#elseUINT SwitchPacketDriver(USHORT);#endif
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 181NotificationsUse the following information to programmatically control the vibrator, to write an application to turn on the vibrator when a message is received via the WLAN radio link, and turn it off when the user hits a key.Vibrator support is implemented in the NLED driver as a false LED. The vibrator is LED 5 and is identified with an CycleAdjust of -1. The vibrate option is only available in the notifications panel when the vibrator is present in the system.Regarding an applications interface to NLED.DLL, LEDs must be avail-able for use by applications. This is possible via two functions exported by the COREDLL.DLL file. To use the LED functions, declare these as extern “C” as follows:extern ”C” BOOL WINAPI NLEDGetDeviceInfo(UINT nInfoId, void *pOutput);extern ”C” BOOL WINAPI NLEDSetDevice( UINT nDeviceId, void *pInput);The LEDs are enumerated for access through the data structures associated with these APIs: Notification LED (0), Alpha Lock LED (2), Scanner LED (3), or Low Battery (4).NLEDGetDeviceInfoUsage#include “nled.h”SyntaxBOOL NLEDGetDeviceInfo ( UINT nInfoId, void *pOutput );ParametersnInfoId Integer specifying the information to return. These values are defined:NLED_COUNT_INFO Indicates the pOutput buffer specifies the number of LEDs on the device.NLED_SUPPORTS_INFO_ID Indicates the pOutput buffer specifies information about the capabilities supported by the LED.NLED_SETTINGS_INFO_ID Indicates the pOutput buffer contains information about the LED current settings.pOutput Pointer to the buffer to which the information is returned. The buffer points to various structure types defined in “nled.h”, depending on the value of nId, as detailed in the following table:Value of nIDLED_COUNT_INFONLED_SUPPORTS_INFONLED_SETTINGS_INFOStructure in pOutputNLED_COUNT_INFONLED_SUPPORTS_INFONLED_SETTINGS_INFO
Chapter 7 — Programming182 CN2B Mobile Computer User’s ManualNLEDSetDeviceUsage#include “nled.h”SyntaxBOOL NLEDSetDevice ( UINT nDeviceId, void *pInput );ParametersReboot FunctionsThere are several methods, via Kernel I/O Control functions, that an appli-cation program can use to force the CN2B Computer to reboot.IOCTL_HAL_REBOOTIOCTL_HAL_REBOOT performs a warm-boot. See page 159.IOCTL_HAL_COLDBOOTInvoking with this forces a cold reboot, resets the CN2B Computer, reloads Windows CE as if a power-up was performed, and discards the contents of the Windows CE RAM-based object. See page 157.IOCTL_HAL_WARMBOOTThis function is supported on CN2B Computers. It performs a warm boot of the system, preserving the object store. See page 156.Remapping the KeypadApplications have the ability to remap keys on the CN2B keypad. This allows applications to enable keys that would otherwise not be available, such as the [F1] function key. Also, to disable keys that should not be avail-able, such as the alpha key because no alpha entry is required. Use caution when attempting to remap the keypad because improper remapping may cause the keypad to become unusable. This can be corrected by performing a cold-boot on the device that reloads the default keymap.nDeviceId Integer specifying the device identification. The following is defined:NLED_SETTINGS_INFO_ID Contains information about the desired LED settings.pInput Pointer to the buffer that contains the NLED_SETTINGS_INFO structure.Note: Use caution when remapping the keypad. Improper remapping may render the keypad unusable. Data within the CN2B Computer could also be lost, should any problems occur.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 183Note that remapping the keys in this way affects the key mapping for the entire system, not just for the application that does the remapping.There are three “planes” supported for the CN2B keypad. Keys used in more than one shift plane must be described in each plane.Unshifted PlaneThe unshifted plane contains values from the keypad when not pressed with other keys, such as the following:Orange PlaneThe orange plane contains values from the keypad when a key is simulta-neously pressed with the orange key, such as the following:Alpha (Green) PlaneThe alpha plane contains values from the keypad when the keypad has been placed in alpha mode by pressing the green [Alpha] key, such as:Key ValuesKey values for each plane are stored in the registry. All units ship with a default key mapping loaded in the registry. Applications that change the default mapping need to read the appropriate key from the registry into an array of words, modify the values required and then write the updated val-ues back into the registry. The registry access can be done with standard Press the Key To Enter This[1] 1[5] 5[9] 9Press the Keys To Enter Thisorange [0] Start menuorange [6] A4orange [9] PgDnPress the Keys To Enter This[Alpha] [1] Caps[Alpha] [5] j[Alpha] [9] w
Chapter 7 — Programming184 CN2B Mobile Computer User’s ManualMicrosoft API calls, such as RegOpenKeyEx(), RegQueryValueEx(), and RegSetValueEx(). These registry keys contain the plane mappings:• The unshifted plane mapping can be found in the registry at:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD\Vkey• The orange plane mapping can be found in the registry at:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD\VkeyGold• The alpha plane mapping can be found in the registry at:HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD\VkeyAlphaHow Key Values Are Stored in RegistryTo know which fields to update in the registry, you must know what Scan Codes are assigned to each physical key (see page 185). The Scan Code is used at the lowest level of the system to let the keypad driver know which physical key is pressed. The keypad driver takes that scan code and looks it up in a table (a copy of the table in the registry) to determine the values to pass to the operating system.Each registry key is just an array that describes to the keypad driver what value needs to be passed for each physical key. The key values are indexed by the scan code, this is a zero-based index. For example in the unshifted plane, the [4] key has a scan code of 0x06. This means that the seventh word under the “Vkey” registry key has the value for the [4] key. Taking a sample of the “Vkey” registry key shows the following values:00,00,0B,05,02,03,C1,07,04,03,BE,00,34,00,00,00,. . .The value is 34,00. The values are in reverse byte order because that is the way the processor handles data. When writing an application, nothing needs to be done to swap the bytes, as this will happen automatically when the data is read into a byte value. This is something you just need to be aware of when looking at the registry. Knowing this, we can see that the value that the keypad driver will pass to the system is a hex 34. Looking that up on an UNICODE character chart, we see that it maps to a “4”. If you wanted the key, labeled “4”, to output the letter “A” instead, you would need to change the seventh word to “41” (the hexadecimal representation of “A” from the UNICODE chart), then put the key back into the registry.If you wish to disable a certain key, remap its scan code to 0x00.Change NotificationJust changing the registry keys do not immediately change the key map-pings. Signal the “ITC_KEYBOARD_CHANGE” named event using the CreateEvent() API to notify the keypad driver the registry was updated.Note: Do not remap scan codes 0x01, 0x41, 0x42, 0x43, or 0x44, or the CN2B Computer becomes unit unusuable until a cold-boot is performed.
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 185Advanced Keypad RemappingIt is also possible to map multiple key presses to one button and to map named system events to a button. The multiple key press option could be useful to cut down on the number of keys needed to press in a given situa-tion or to remap which key behaves like the action key. Mapping events to a button could be useful to change which buttons will fire the scanner, con-trol volume, and allow for suspending and resuming the device. If you need help performing one of these advanced topics please contact Intermec Technical Support.Scan CodesAt the lowest driver level, the CN2B keypad identifies keys as scan codes. These scan codes are sent via the keypad microcontroller, and cannot be changed without modifying the keypad firmware.Keypad Scan Codes and MeaningsPress this Key Meaning Scan CodeReserved 0x00[I/O] I/O button 0x01Scanner Handle Trigger 0x02Scanner Left 0x03Scanner Right 0x04[4] 4/GHI/A2 0x06None 0x07Left arrow/Back Tab 0x08None 0x09[BkSp] BkSp// (forward slash) 0x0Aorange orange key 0x0BNone 0x0C[Esc] Esc/– (minus sign) 0x0D[v] Down arrow 0x0E[1] 1/Caps 0x0F[7] 7/PQRS/PgUp 0x10[Alpha] [Alpha] key 0x11None 0x12
Chapter 7 — Programming186 CN2B Mobile Computer User’s Manual[^] Up arrow/Volume increase 0x13Right arrow/Tab 0x14[2] 2/ABC 0x15[8] 8/TUV/* (asterisk) 0x16[0] 0/Win 0x17[5] 5/JKL/A3 0x18None 0x19[Action] Action/+ (plus symbol) 0x1A[3] 3/DEF/backlight 0x1B[9] 9/WXYZ/PgDn 0x1C[ENTER] Enter/@ (at symbol) 0x1D[6] 6/MNO/A4 0x1ENone 0x1F-0x40Charge Detect 0x41LCD frontlight 0x42Ambient light 0x42Threshold crossed 0x42Headset detected 0x43Keypad Backlight 0x44Ambient Light 0x44Threshold Crossed 0x44Keypad Scan Codes and Meanings (continued)Press this Key Meaning Scan Code
Chapter 7 —  ProgrammingCN2B Mobile Computer User’s Manual 187Sample View of Registry KeysThe following is a sample view of the current default key mapping for the CN2B keypad. See the registry on your device for the latest key mappings.[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD]”ResumeMask”=dword:7”Vkey”=hex: 00,00,0B,05,02,03,C1,07,04,03,BE,00,34,00,00,00,\25,00,00,00,08,00,03,02,00,00,1B,00,28,00,31,00,\37,00,01,02,00,00,26,00,27,00,32,00,38,00,30,00,\35,00,00,00,01,03,33,00,39,00,0D,00,36,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,07,05,01,05,03,05,02,05”VkeyGold”=hex:00,00,0B,05,02,03,C1,07,04,03,BE,00,34,00,00,00,\09,01,00,00,BF,00,03,02,00,00,BD,00,75,00,72,00,\21,00,01,02,00,00,76,00,09,00,73,00,38,01,5B,00,\35,00,00,00,BB,01,09,05,22,00,32,01,36,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,07,05,01,05,03,05,02,05”VkeyAlpha”=hex:00,00,0B,05,02,03,C1,07,04,03,BE,00,47,00,00,00,\25,00,00,00,08,00,03,02,00,00,1B,00,28,00,02,02,\50,00,01,02,00,00,26,00,27,00,41,00,54,00,20,00,\4A,00,00,00,01,03,44,00,57,00,0D,00,4D,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\00,00,07,05,01,05,03,05,02,05
Chapter 7 — Programming188 CN2B Mobile Computer User’s Manual
CN2B Mobile Computer User’s Manual 189AConfigurable SettingsThis appendix contains information about the Intermec Settings, Utilities, and Wireless Network applets that may be on the CN2B Mobile Com-puter. Information about using reader commands and configuration bar codes to configure some of your settings is also in this appendix.Note: Information about the settings you can configure with the Intermec Settings applet is described in the Intermec Computer Command Reference Manual (P/N: 073529). The online manual is available from the Intermec web site at www.intermec.com.
Appendix A — Configurable Settings190 CN2B Mobile Computer User’s ManualConfiguration ParametersA configuration parameter changes the way the CN2B Computer operates, such as configuring a parameter to have the CN2B Computer emit a very loud beep in a noisy environment. Use either of the following methods to execute configuration parameters:• Send parameters from an SNMP management station. See “SNMP Con-figuration on the Mobile Computer” on page 109.• Scan EasySet bar codes. You can use the EasySet bar code creation soft-ware from Intermec Technologies Corporation to print configuration labels. Scan the labels to change the scanner configuration and data transfer settings.Use the Intermec EasySet software to print configuration labels you can scan to change your configuration settings. For more information, see the EasySet online help. EasySet is available from the Intermec Data Capture web site.Menus of available parameters for each group are listed. Use the scroll bars to go through the list. Expand each menu (+) to view its parameter settings. Tap a parameter to select, or expand a parameter to view its subparameters.Note that each parameter or subparameter is shown with its default setting or current setting in (< >) brackets. Tap a parameter or subparameter to select that parameter, then do any of the following to change its setting: Tap  Apply to apply any changes.• Typing a new value in an entry field.• Choosing a new value from the drop-down list.• Selecting a different option. The selected option contains a bullet.•Tap Defaults, then Apply to restore factory-default settings. Tap Yes when you are prompted to verify this action.•Tap Refresh to discard changes and start again. Tap Yes when you are prompted to verify this action.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 191Intermec Settings AppletYou may have the Intermec Settings applet. Information about the settings you can configure with this applet is described in the Intermec Computer Command Reference Manual. The online manual is available from the Inter-mec web site at www.intermec.com.See the Data Collection Resource Kit in the IDL for information about data collection functions. The IDL is available as a download from the Intermec web site at www.intermec.com. Contact your Intermec represen-tative for more information.Utilities AppletThe Utilities applet examines and modifies settings and operational modes of specific hardware and software on the CN2B Computer, including the registry storage, wakeup mask, and application launch keys.•Registry Save (next paragraph)•Wakeup Mask (page 192)•App Launch (page 193)Registry SaveFor Windows Mobile 2003, the only medium available for saving the regis-try is the Flash File System (PSM). Registry data is stored in the To access the settings from the CN2B Computer, tap Start > Settings > the System tab > Intermec Settings to access its applet.To access the settings from the CN2B Computer, tap Start > Settings > the System tab > Utilities to access its applet. These tabs represent the fol-lowing groups of settings or parameters:From the CN2B Computer, tap Start > Settings > the System tab > Utili-ties > the Registry Save tab to access the Registry Save page.
Appendix A — Configurable Settings192 CN2B Mobile Computer User’s Manual“\Flash_File_Store\Registry” path. Check Enable Registry Storage to enable this function.Wakeup MaskThis page programs three scanner buttons and the A1 and A2 application keys to be “wakeup” or resume keys. That is, to prompt the CN2B Com-puter to “wake up” or resume activity after going to “sleep” as a result of being inactive after a length of time. This information remains between warm and cold boots. Check the appropriate box, then tap ok to apply.Based on the setting, do the following to “wake up” the CN2B Computer.From the CN2B Computer, tap Start > Settings > the System tab > Utili-ties > the Wakeup Mask tab to access the Wakeup Mask page.Middle Scanner Button Squeeze the button on the Scan HandleLeft Scanner Button Squeeze the left scanner buttonRight Scanner Button Squeeze the right scanner buttonGOLD + A1 (Application 1) Press orange [period]GOLD + A2 (Application 2) Press orange [4]
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 193App LaunchThis page programs or maps two scanner buttons and four application keys to start up to six applications. Note that the left scanner button also acts as the record button.For CN2B Computers with an imager,default mappings are shown in the following illustration.For CN2B Computers without an imager,the default maps the Record, Calendar, Contacts, and Tasks applications the top four and the A3 and A4 buttons are “unassigned.”• To assign an application to a button, select an application from the applicable drop-down list box. • To assign a new application, select the “Add new application” option, which brings up an Open File dialog and browse Secure Digital storage cards for new applications.• To disable or unmap a currently mapped application from a correspond-ing button, select “unassigned” from the applicable drop-down list.•Tap Defaults in the lower right corner to restore defaults.From the CN2B Computer, tap Start > Settings > the System tab > Utili-ties > the App Launch tab to access the Application Launch page.Note: Record, Calendar, Contacts, and Tasks are Pocket PC applications. See Chapter 2, “Windows Mobile 2003” for information.Note: You cannot map an application to more than one button. Should you assign the same application to two buttons, a verification prompt appears after the second button to confirm whether you want to remap the application. If you tap Yes, the applet changes the first button to “unas-signed” and maps the application to the second button.Note: All changes are activated immediate upon selection.
Appendix A — Configurable Settings194 CN2B Mobile Computer User’s ManualWireless Network AppletAbout the Wireless NetworkYour wireless adapter (network interface card) connects to wireless net-works of two types: infrastructure networks and ad-hoc networks.• Infrastructure networks get you onto your corporate network and the internet. Your CN2B Computer establishes a wireless connection to an access point, which links you to the rest of the network. When you con-nect to a network via an access point, you are using the 802.11b/g infra-structure mode.• Ad-hoc networks are private networks shared between two or more cli-ents, even with no access point.Each wireless network is assigned a name (or Service Set Identifier — SSID) to allow multiple networks to coexist in the same area without infringement.Intermec Technologies recommends using security measures with wireless networks to prevent unauthorized access to your network and to ensure your privacy of transmitted data. The following are required elements for secure networks:• Authentication by both the network and the user• Authentication is cryptographically protected• Transmitted dataThere are many schemes available for implementing these features.TerminologyBelow are terms you may encounter when configuring the wireless net-work:•CKIP (Cisco Key Integrity Protocol)This is Cisco’s version of the TKIP protocol, compatible with Cisco Air-net products.•EAP (Extensible Authentication Protocol)802.11b/g uses this protocol to perform authentication. This is not nec-essarily an authentication mechanism, but is a common framework for transporting actual authentication protocols. Intermec provides a num-ber of EAP protocols for you to choose the best for the network.•TKIP (Temporal Key Integrity Protocol)This protocol is part of the IEEE 802.11b/g encryption standard for wireless LANs., which provides per-packet key mixing, a message integ-Note: See Chapter 4, “Network Support” for information about the 802.11b/g radio module.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 195rity check and a re-keying mechanism, thus overcoming most of the weak points of WEP. This encryption is more difficult to crack than the standard WEP. Weak points of WEP include:• No Installation Vector (IV) reuse protection• Weak keys or no key updates• No protection against message replay• No detection of message tampering•WEP (Wired Equivalent Privacy) encryptionWith preconfigured WEP, both the client CN2B Computer and access point are assigned the same key, which can encrypt all data between the two devices. WEP keys also authenticate the CN2B Computer to the access point — unless the CN2B Computer can prove it knows the WEP key, it is not allowed onto the network.WEP keys are only needed if they are expected by your clients. There are two types available: 64-bit (5-character strings, 12345) (default) and 128-bit (13-character strings, 1234567890123). Enter these as either ASCII (12345) or Hex (0x3132333435).•WPA (Wi-Fi Protected Access)This is an enhanced version of WEP that does not rely on a static, shared key. It encompasses a number of security enhancements over WEP, including improved data encryption via TKIP and 802.11b/g authenti-cation with EAP.Configuring Your Wireless NetworkA profile contains all the information necessary to authenticate you to the network, such as login name, password or certificate, and protocols by which you are authenticated. You can have up to four profiles for different networks. For example, you may have different login names or passwords on different networks, or you may use a password on one network, and a certificate on another.To start 802.11b/g communications on the CN2B Computer, tap Start > Settings > the System tab > Wireless Network to access the Profile Wizard for the 802.11b/g radio module.
Appendix A — Configurable Settings196 CN2B Mobile Computer User’s ManualUse the Profiles page to select and configure between the networking envi-ronments assigned to this 802.11b/g radio.•Profile:Tap the drop-down list to choose between four different profiles assigned to this unit, then tap Edit Select Profile, make the changes needed for this profile (starting on the next page), then tap OK to return to the Profiles page.•Enable Microsoft’s Wireless Zero ConfigCheck this box to enable Microsoft’s Wireless Zero Config application. This effectively disables the Intermec software solution for 802.11b/g, including configuration via the Wireless Network applet.BasicUse the Basic page to set the network type, name, and manage battery power for this profile. Tap ok or OK to return to the Profiles page.•Profile Label:Enter a unique name for your profile.•Network type:Tap the drop-down list to select either “Infrastructure” if your network uses access points to provide connectivity to the corporate network or internet; or “Ad-Hoc” to set up a private network with one or more par-ticipants.•Channel:If you selected “Ad-Hoc” for the network type, select the channel on which you are communicating with others in your network. There are up to 11 channels available.•SSID (Network Name):This assumes the profile name unless another name is entered in this field. If you want to connect to the next available network or are not familiar with the network name, enter “ANY” in this field. Consult your LAN administrator for network names.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 197•Enable Power Management:Check this box to conserve battery power (default), or clear this box to disable this feature.SecurityThe following are available from the 8021x Security drop-down list. Note that the last four methods are available if you have purchased the security pack-age. Contact your Intermec representative for information.•None (next paragraph)•PEAP (page 198)•TLS (page 201)•TTLS (page 203)•LEAP (page 207)• EAP-FAST (page 209)NoneUse “None” to disable 802.11b/g Security and enable WEP encryption.To Disable 802.1x Security1Set 8021x Security as “None.”2Set Association to “Open.”
Appendix A — Configurable Settings198 CN2B Mobile Computer User’s Manual3Set Encryption to “None.”To Enable WEP Encryption1Set 8021x Security as “None.”2Set Association to either “Open” if WEP keys are not required; or “Shared” when WEP keys are required for association.3Set Encryption to “WEP.” See page 195 for information about WEP encryption.4If you had set Association to “Shared,” then select a data transmission key from the Data TX Key drop-down list near the bottom of this screen, then enter the encryption key for that data transmission in the appropriate Key # field.PEAP (Protected EAP)This protocol is suitable for performing secure authentication against Win-dows domains and directory services. It is comparable to EAP-TTLS (see page 18), both in its method of operation and its security, though not as flexible. This does not support the range of inside-the-tunnel authentica-tion methods supported by EAP-TTLS. Microsoft and Cisco both support this protocol.Use “PEAP” to configure the use of PEAP as an authentication protocol and to select “Open,” “WPA,” or “Network EAP” as an association mode.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 199To Enable PEAP with an Open Association1Set 8021x Security as “PEAP.”2Set Association to “Open.”3Skip Encryption as it is automatically set to “WEP.” See page 195 for information about WEP encryption.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol; or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.6Tap  Additional Settings to assign an inner PEAP authentication and set options for server certificate validation and trust. See page 201 for more information.To Enable PEAP with WPA Encryption1Set 8021x Security as “PEAP.”2Set Association to “WPA.” See page 195 for information about WPA encryption.3Skip Encryption as it is automatically set to “TKIP.” See page 194 for more information about TKIP.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.
Appendix A — Configurable Settings200 CN2B Mobile Computer User’s Manual6Tap  Additional Settings to assign an inner PEAP authentication and set options for server certificate validation and trust. See page 201 for more information.To Enable PEAP with Network EAP1Set 8021x Security as “PEAP.”2Set Association to “Network EAP.” See page 194 for information about EAP.3Set Encryption to either “WEP” or “CKIP.” See page 194 for informa-tion about CKIP and page 195 for information about WEP encryption.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.6Tap  Additional Settings to assign an inner PEAP authentication and set options for server certificate validation and trust. See below for more information.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 201Additional Settings1Select an authentication method from the Inner PEAP Authentication drop-down list.•EAP/MS-CHAP-V2Authenticates against a Windows Domain Controllre and other non-Windows user databases. This is Microsoft’s implementation of PEAP.•EAP/Token CardUse with token cards. The password value entered is never cached. This is Cisco’s implementation of PEAP.•EAP/MD5-ChallengeMessage Digest 5. A secure hashing authentication algorithm.2Check Validate Server Certificate to verify the identity of the authenti-cation server based on its certificate when using TTLS or PEAP.3Enter the Common Names of trusted servers. Note that if these fields are left blank, the server certificate trust validation is not performed or required. Click ok to return to the Security page.TLS (EAP-TLS)EAP-TLS is a protocol that is based on the TLS (Transport Layer Security) protocol widely used to secure web sites. This requires both the user and authentication server have certificates for mutual authentication. While cryptically strong, this requires corporations that deploy this to maintain a certificate infrastructure for all their users.Use “TLS” to configure the use of EAP-TLS as an authentication protocol, and to select “Open,” “WPA,” or “Network EAP” as an association mode.To Enable TLS with an Open Association1Set 8021x Security as “TLS,” and Association to “Open.” Skip Encryp-tion as it is automatically set to “WEP.” See page 195 for information about WEP encryption.2Enter your unique Subject Name and User Name to use this protocol.
Appendix A — Configurable Settings202 CN2B Mobile Computer User’s Manual3Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.4Tap  Additional Settings to set options for server certificate validation and trust. See page 203 for more information.To Enable TLS with WPA Encryption1Set 8021x Security as “TLS” and Association to “WPA.” See page 195 for information about WPA encryption. Skip Encryption as it is auto-matically set to “TKIP.” See page 194 for more information about TKIP.2Enter a unique Subject Name and User Name as credentials.3Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.4Tap  Additional Settings to set options for server certificate validation and trust. See page 203 for more information.To Enable TLS with Network EAP1Set 8021x Security as “TLS” and Association to “Network EAP.” See page 194 for information about EAP.2Set Encryption to either “WEP” or “CKIP.” See page 194 for informa-tion about CKIP and page 195 for information about WEP encryption. Enter a unique Subject Name and User Name as credentials.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 2033Tap  Get Certificates to obtain or import server certificates. See page 207 for more information. Tap Additional Settings to assign an inner TLS authentication and set options for server certificate validation and trust. See page 203 for more information.Additional Settings1Check Validate Server Certificate to verify the identity of the authenti-cation server based on its certificate when using TLS.2Enter the Common Names of trusted servers. Note that if these fields are left blank, the server certificate trust validation is not performed or required.3Click ok to return to the Security page.TTLS (EAP-Tunneled TLS)This protocol provides authentication like EAP-TLS (see page 201) but does not require certificates for every user. Instead, authentication servers are issued certificates. User authentication is done using a password or other credentials that are transported in a securely encrypted “tunnel” established using server certificates.EAP-TTLS works by creating a secure, encrypted tunnel through which you present your credentials to the authentication server. Thus, inside EAP-TTLS there is another inner authentication protocol that you must configure via Additional Settings.
Appendix A — Configurable Settings204 CN2B Mobile Computer User’s ManualUse “TTLS” to configure the use of EAP-TTLS as an authentication proto-col, and select “Open,” “WPA,” or “Network EAP” as an association mode.To Enable TTLS with an Open Association (default configuration)1Set 8021x Security as “TTLS.”2Set Association to “Open.”3Skip Encryption as it is automatically set to “WEP.” See page 195 for information about WEP encryption.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.6Tap  Additional Settings to assign an inner TTLS authentication and an inner EAP, and set options for server certificate validation and trust. See page 206 for more information.To Enable TTLS with WPA Encryption1Set 8021x Security as “TTLS.”2Set Association to “WPA.” See page 195 for information about WPA encryption.3Skip Encryption as it is automatically set to “TKIP.” See page 194 for more information about TKIP.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 2056Tap  Additional Settings to assign an inner TTLS authentication and an inner EAP, and set options for server certificate validation and trust. See page 206 for more information.To Enable TTLS with Network EAP1Set 8021x Security as “TTLS.”2Set Association to “Network EAP.” See page 194 for information about EAP.3Set Encryption to either “WEP” or “CKIP.” See page 194 for informa-tion about CKIP and page 195 for information about WEP encryption.4Enter your unique user name and password to use this protocol. Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to auto-matically use the protocol without entering a password.5Tap  Get Certificates to obtain or import server certificates. See page 207 for more information.6Tap  Additional Settings to assign an inner TTLS authentication and set options for server certificate validation and trust. See below for more information.
Appendix A — Configurable Settings206 CN2B Mobile Computer User’s ManualAdditional Settings1Select an authentication protocol from the Inner TTLS Authentication drop-down list:•PAP (Password Authentication Protocol)A simple authentication protocol that sends security information in the clear.•CHAP (Challenge Handshake Authentication Protocol)Use of Radius to authenticate a terminal without sending security data in the clear. Authenticates against non-Windows user databases. You cannot use this if authenticating against a Windows NT Domain or Active Directory.•MS-CHAP, MS-CHAP-V2Authenticates against a Windows Domain Controller and other non-Windows user databases.•PAP/Token CardUse with token cards. The password value entered is never cached.•EAP (Extensible Authentication Protocol)See page 194 for information about EAP.2If you select “EAP” for the inner authentication protocol, then select an inner EAP protocol from the Inner EAP drop-down list.3Enter the Common Names of trusted servers. Note that if these fields are left blank, the server certificate trust validation is not performed or required.4Check Validate Server Certificate to verify the identity of the authenti-cation server based on its certificate when using TTLS, PEAP, and TLS.5Enter the Anonymous EAP-TTLS Name as assigned for public usage. Use of this outer identity protects your login name or identity.6Click ok to return to the Security page.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 207To Get CertificatesCertificates are pieces of cryptographic data that guarantee a public key is associated with a private key. They contain a public key and the entity name that owns the key. Each certificate is issued by a certificate authority.Use this page to import a certificate onto the CN2B Computer.Root Certificates1Tap the <<< button next to the Import Root Certificate field to select the root certificate (DER-encoded .CER file) to import.2Click Import Root Cert to install the selected certificate.User Certificate1Tap the <<< button next to the Certificate Path field to select the user certificate (DER-encoded .CER file without the private key) to import.2Tap the <<< button next to the Key Path field to select the private key (.PVK file) which corresponds to the user certificate chosen in step 1.3Tap  Import User Cert to install the selected certificate.Web EnrollmentTap  Web Enrollment to obtain a user certificate over the network from an IAS Server. Tap ok to return to the Security page.LEAP (Cisco Lightweight EAP)LEAP is the Cisco Lightweight version of EAP. See page 194 for informa-tion about EAP.Use “LEAP” to configure the use of LEAP as an authentication protocol, select “Open,” “WPA,” or “Network EAP” as an association mode, or assign Network EAP. Note that this defaults to the Network EAP.To Enable LEAP with an Open Association1Set 8021x Security as “LEAP.”2Set Association to “Open.”3Skip Encryption as it is automatically set to “WEP.” See page 195 for information about WEP encryption.
Appendix A — Configurable Settings208 CN2B Mobile Computer User’s Manual4Enter your unique User Name to use this protocol.5Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.To Enable LEAP with WPA Encryption1Set 8021x Security as “LEAP.”2Set Association to “WPA.” See page 195 for information about WPA encryption.3Skip Encryption as it is automatically set to “TKIP.” See page 194 for more information about TKIP.4Enter your unique User Name to use this protocol.5Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.To Enable LEAP with Network EAP1Set 8021x Security as “LEAP” and Association to “Network EAP,” an EAP protocol for the network. See page 194 for information about EAP.2Set Encryption to either “WEP” or “CKIP.” See page 194 for informa-tion about CKIP and page 195 for information about WEP encryption.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 2093Enter your unique User Name to use this protocol.4Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.EAP-FAST (EAP-Flexible Authentication via Secured Tunnel )The EAP-FAST protocol is a client-server security architecture that encrypts EAP transactions with a TLS tunnel. While similar to PEAP in this respect, it differs significantly in that EAP-FAST tunnel establishment is based upon strong secrets that are unique to users. These secrets are called Protected Access Credentials (PACs), which CiscoSecure ACS generates using a master key known only to CiscoSecure ACS. Because handshakes based upon shared secrets are intrinsically faster than handshakes based upon PKI, EAP-FAST is the significantly faster of the two solutions that provide encrypted EAP transactions. No certificate management is required to implement EAP-FAST.Use “EAP-FAST” to configure the use of EAP-FAST as an authentication protocol, select “Open,” “WPA,” or “Network EAP” as an association mode.To Enable EAP-FAST with an Open Association1Set 8021x Security as “EAP-FAST.”2Set Association to “Open.”3Skip Encryption as it is automatically set to “WEP.” See page 195 for information about WEP encryption.4Enter your unique User Name to use this protocol.5Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.
Appendix A — Configurable Settings210 CN2B Mobile Computer User’s Manual6Tap  Additional Settings to set options for PAC management and assign an anonymous EAP-FAST name. See page 211 for more information.To Enable EAP-FAST with WPA Encryption1Set 8021x Security as “EAP-FAST.”2Set Association to “WPA.” See page 195 for information about WPA encryption.3Skip Encryption as it is automatically set to “TKIP.” See page 194 for more information about TKIP.4Enter your unique User Name to use this protocol.5Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.6Tap  Additional Settings to set options for PAC management and assign an anonymous EAP-FAST name. See page 211 for more information.To Enable EAP-FAST with Network EAP1Set 8021x Security as “EAP-FAST.”2Set Association to “Network EAP,” an EAP protocol for the network. See page 194 for information about EAP.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 2113Set Encryption to either “WEP” or “CKIP.” See page 194 for informa-tion about CKIP and page 195 for information about WEP encryption.4Enter your unique User Name to use this protocol.5Select Prompt for password to have the user enter this password each time to access the protocol, or leave Use following password as selected to automatically use the protocol without entering a password.6Tap  Additional Settings to set options for PAC management and assign an anonymous EAP-FAST name. See next page for more information.Additional Settings1Tap  PAC Manager to view the PAC files currently installed on your CN2B. Tap ok to return to the Additional Settings screen.2If you already have a PAC on your CN2B, clear Allow Automatic PAC provisioning to avoid receiving additional PACs from the server.3If Allow Automatic PAC provisioning is checked, and you want notifi-cation of any incoming PACs, then check Prompt before acquiring a new PAC.4If Allow Automatic PAC provisioning is checked, and you want notifi-cation whether to replace a current PAC with an incoming PAC, check Prompt before replacing a PAC.5Enter the Anonymous EAP-FAST Name as assigned for public usage. Use of this outer identity protects your login name or identity.
Appendix A — Configurable Settings212 CN2B Mobile Computer User’s Manual6Click ok to return to the Security page.AdvancedUse this page to configure additional settings for this profile. Tap ok to return to the Profiles page.•Detect Rogue APs (Access Points):Wireless NICs and access points associate based on the SSID configured for the NIC. Given an SSID, the BSSID with the strongest signal is often chosen for association. After association, 802.1x authentication may occur and during authentication credentials to uniquely identify a user — these are passed between the NIC and the access point.The base 802.1x technology does not protect the network from “rogue APs.” These can mimic a legitimate access point to authentication proto-cols and user credentials. This provides illegal users ways to mimic legiti-mate users and steal network resources and compromise security.Check this box to detect and report client behavior suspected of being rogue access points. Once detected, your CN2B Computer no longer associates with that access point until you perform a warm-boot.Clear this box to solve access point connection problems that result when an access point gets put on the rogue access point list due to inadvertant failed authentications and not because it is a real rouge.•Enable mixed cell:Mixed cell is a profile-dependent setting. If enabled, you can connect to mixed cell without using WEP, then you can query the cell to determine whether you can use encryption.•Allow fast roaming (CCKM):When using a wireless LAN that uses Cisco Access Points, a LEAP-enabled client device can roam from one access point to another without involving the authentication (RADIUS) server. If enabled, Cisco Cen-tralized Key Management (CCKM), an access point configured to pro-vide Wireless Domain Services (WDS) takes the place of the RADIUS server (caching credentials of an initial authentication with the RADIUS
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 213server) and authenticates the client without perceptible delay in voice or other time-sensitive applications.•Enable Logging:Check this box to log what activity incurs for this profile.Other Configurable ParametersConfigure the following parameters by sending reader commands through the network or from an application. See next page for information.Reader Command Description OptionAudio Volume Changes the volume of all audio signals. 0 - Off1 - Very quiet2 - Quiet3 - Normal (default)4 - Loud5 - Very loudAutomatic Shutoff Sets the length of time the CN2B Computer remains on with no activity. When you turn on the CN2B Computer, it either resumes exactly where it was when you turned it off or boots and restarts your application.1 - 1 minute2 - 2 minutes3 - 3 minutes (default)4 - 4 minutes5 - 5 minutesBacklight Timeout Sets the length of time that the display backlight remains on. If you set a longer timeout value, you use the battery power at a faster rate.10 - 10 seconds30 - 30 seconds60 - 1 minute (default)120 - 2 minutes180 - 3 minutes240 - 4 minutes300 - 5 minutesDate/Time Sets the current date and time. DateYear - 0000–9999 (1999)Month - 1–12 (6)Day - 1–31 (1)TimeHour - 0–23 (0)Minute - 0–59 (00)Second - 0–59 (00)
Appendix A — Configurable Settings214 CN2B Mobile Computer User’s ManualUsing Reader CommandsAfter the CN2B Computer is connected to your network, you can send the CN2B Computer a reader command from an application to perform a task, such as changing the time and date. Some reader commands temporarily override configuration settings and some change the configuration settings.Change ConfigurationThe Change Configuration command must precede any configuration command. If you enter a valid string, the CN2B Computer configuration is modified and the computer emits a high beep. To send the Change Config-uration command through the network, use the $+ [command] syntax where command is the two-letter command syntax for the configuration command followed by the value to be set for that command.You can also make changes to several different commands by using the $+ [command]...[command n] syntax. There are seven configuration command settings that you can change in this way. See each command for information on respective acceptable “data” values.Example 1To change the Beep Volume to Off, you can send this string to the CN2B Computer through the network: $+BV0where:$+ Indicates Change Configuration.BV Specifies the Audio Volume parameter.0Specifies a value of Off.Key Clicks Enables or disables the keypad clicks. The CN2B Com-puter emits a click each time you press a key or decode a row of a two-dimensional symbology.0 - Disable clicks1 - Enable soft key clicks2 - Enable loud key clicks (default)Command SyntaxAudio Volume BVdataAutomatic Shutoff EZdataBacklight Timeout DFdataKey Clicks KCdataVirtual Wedge Grid AFdataVirtual Wedge Postamble AEdataVirtual Wedge Preamble ADdataReader Command Description Option
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 215Example 2To change the Beep Volume to Very Quiet and the Virtual Wedge Grid to 123: $+BV1AF123:$+ Indicates Change ConfigurationBV1 Specifies Audio Volume, set to Very Quiet (1)AF123 Specifies Virtual Wedge Grid, set to a value of 123.Set Time and DateThis command sets the date and time on the CN2B Computer. The default date and time is June 1, 1999 at 12:00 AM.From the network, send the following:/+ yyyymmddhhmmsswhere acceptable values for the date are:yyyy 0000-9999 Yearmm 01-12 Month of the yeardd 01-31 Day of the monthhh 00-23 Hourmm 00-59 Minutesss 00-59 SecondsConfiguration Bar CodesYou can change some settings on your CN2B Computer by scanning the following Code 39 bar code labels. You can also set the time and date by using the Clock applet in the Settings menu. To access this applet, tap Start > Settings > the System tab > the Clock icon.Note: When you use a bar code creation utility to make a scannable bar code label, the utility probably adds opening and closing asterisks automat-ically. Asterisks are included here for translation purposes.
Appendix A — Configurable Settings216 CN2B Mobile Computer User’s ManualAudio VolumeTurn Audio Off*$+BV0**$+BV0*Set Audio Volume to very quiet*$+BV1**$+VB1*Set Audio Volume to quiet*$+BV2**$+BV2*Set Audio Volume to normal (default)*$+BV3**$+BV3*Set Audio Volume to loud*$+BV4**$+BV4*Set Audio Volume to very loud*$+BV5**$+BV5*Automatic ShutoffSet Automatic Shutoff to 1 minute*$+EZ1**$+EZ1*Set Automatic Shutoff to 2 minutes*$+EZ2**$+EZ2*Note: The Audio Volume parameter information is on page 213.Note: The Automatic Shutoff parameter information is on page 213.
Appendix A —  Configurable SettingsCN2B Mobile Computer User’s Manual 217Set Automatic Shutoff to 3 minutes (default)*$+EZ3**$+EZ3*Set Automatic Shutoff to 4 minutes*$+EZ4**$+EZ4*Set Automatic Shutoff to 5 minutes*$+EZ5**$+EZ5*Backlight TimeoutBacklight Timeout 10 seconds*$+DF10**$+DF10*Backlight Timeout 30 seconds*$+DF30**$+DF30*Backlight Timeout 1 minute (default)*$+DF60**$+DF60*Backlight Timeout 2 minutes*$+DF120**$+DF120*Backlight Timeout 3 minutes*$+DF180**$+DF180*Backlight Timeout 4 minutes*$+DF240**$+DF240*Backlight Timeout 5 minutes*$+DF300**$+DF300*Note: The Backlight Timeout parameter information is on page 213.
Appendix A — Configurable Settings218 CN2B Mobile Computer User’s ManualKey ClicksDisable key clicks*$+KC0**$+KC0*Enable soft key clicks*$+KC1**$+KC1*Enable loud key clicks (default)*$+KC2**$+KC2*Virtual Wedge Grid, Preamble, PostambleThe following parameters are user-configurable strings. Refer to a full ASCII chart for more information.GridFor Virtual Wedge Grid, the first part of the bar code would be the follow-ing, which can include a string of up to 240 characters.*$+AF*$+AFPreambleFor Virtual Wedge Preamble, the first part of the bar code would be below, followed by a string of up to 31 characters (no <NUL>) and an asterisk.*$+AD*$+ADPostambleFor Virtual Wedge Postamble, the first part of the bar code would be below, followed by a string of up to 31 characters (no <NUL>) and an asterisk.*$+AE*$+AENote: The Key Clicks parameter information is on page 214.
CN2B Mobile Computer User’s Manual 219BTroubleshooting the CN2B ComputerUse this appendix to solve problems you may encounter while using the CN2B Computer.
Appendix B — Troubleshooting the CN2B Computer220 CN2B Mobile Computer User’s ManualProblems and SolutionsThese tables offer solutions to the problems you may encounter.Problems While Operating the CN2B ComputerProblem SolutionYou press Power to turn on the CN2B and nothing happens. Try these possible solutions in order:1Make sure the battery door is installed correctly and completely closed.2Make sure you have a charged battery installed correctly.3The battery may be discharged. Replace the battery with a spare charged bat-tery, or charge the battery and try again.4Perform a warm-boot on the CN2B Computer.You press Power to turn off the CN2B and nothing happens. To turn off (or suspend) the CN2B Compuyter, hold the Power key for 2 or 3 seconds, then release it.If the CN2B Computer is processing data, it may not turn off when you press Power. Wait until the CN2B Computer finishes processing.If the CN2B Computer appears to be locked up, perform a warm-boot on the CN2B Computer.If the CN2B Computer does not respond to a warm-boot, perform a cold-boot.The CN2B Computer is not responding to the stylus. Press and hold the Power key for 2 to 3 seconds, then release it to turn off the CN2B Computer. Press Power again to turn on the CN2B Computer.You place the CN2B Computer in the communications dock, and the Battery light turns on and is orange.• The temperature may not be within the charging range. Make sure that the temperature is from 0°C to 45°C (32°F to 113°F). • The battery may be damaged. Replace the battery.The CN2B Computer appears locked up and you cannot enter data.Try these possible solutions in order:1Wait at least 10 seconds and try again. If the CN2B Computer is still connect-ing to the Intermec Application Server or the host, it ignores any input from the keypad or scanner.2Press and hold the Power key for 2 to 3 seconds, and then release it to turn off the CN2B Computer. Press Power again to turn on the CN2B Computer.3Perform a warm-boot on the CN2B Computer.4Perform a cold-boot on the CN2B Computer.5Try reloading the firmware.6If the CN2B Computer does not boot or reset, contact your local Intermec service representative for help.
Appendix B —  Troubleshooting the CN2B ComputerCN2B Mobile Computer User’s Manual 221Problems While Configuring SecurityProblem SolutionThe CN2B Computer does not appear to be authenticating. The CN2B Computer may not be communicating with your access point. Make sure the network name on the CN2B Computer is the same as the network name (SSID) of the access point that you are trying to communicate with. The default network name is “INTERMEC.” The 802.1x security network may not be active. Make sure that the server soft-ware is properly loaded and configured on the server PC. For help, see the docu-mentation that shipped with your server software.The access point that you are trying to communicate with may not be communi-cating with the server. Make sure your access point is turned on, properly config-ured, and has 802.1x security enabled.The CN2B Computer indicates that it is not authenticated. Make sure that:• The User Name and Password parameters on your CN2B Computer match the user name and password on your authentication server. You may need to re-enter the password on both your CN2B Computer and the authentication server.• On your authentication server, the user and group are allowed and the group policy is allowed to log in to the server. For help, see the documentation for your authentication server software.• The IP address and secret key for your access point must match the IP address and secret key on your authentication server. You may need to re-enter the IP address and secret key on both your access point and authentication server.• The authentication server software is running on the server PC.The CN2B Computer indicates that it is authenticated, but it does not communicate with the host. Make sure that the CN2B IP address, host IP address, subnet mask, and default router are properly configured for your network.You are setting up multiple access points in a network, with different SSIDs, and the connection fails.The CN2B Computer does not save WEP key values when you change the SSID. Re-enter the WEP key value after you change the SSID and save your changes. You should now be able to connect to the different access points.Problems with Wireless ConnectivityProblem SolutionA Network Connection icon appears on the status bar, but the host computer is not receiving any data from the CN2B Computer. In a UDP Plus network, there may be a problem with the connection between the Intermec Application Server and the host computer. Check with your net-work administrator or see the user’s manual for the Intermec Application Server. In a TCP/IP network, there may be a problem with the connection between the access point and the host computer. Check with your network administrator or use your access point user’s manual.When you turn on the CN2B Computer after it was suspended for a while (10-15 minutes or longer), it can no longer send or receive messages over the net-work.The CN2B Computer may not recognize the network card. Turn off the CN2B Computer, and then turn it on again.The host may have deactivated or lost your current terminal emulation session. In a TCP/IP direct connect network, you need to turn off the “Keep Alive” mes-sage (if possible) from the host so that the TCP session is maintained while a CN2B Computer is suspended.
Appendix B — Troubleshooting the CN2B Computer222 CN2B Mobile Computer User’s ManualThe CN2B Computer is con-nected to the Intermec Applica-tion Server or host computer and you move to a new site to collect data. A Network Connection icon was visible but now the no net-work connection icon is visible. You may have gone out of range of an access point. Try moving closer to an access point or to a different location to re-establish communications. Once you are in range again, the network connection icon appears again. Any data you collected while out of range is transmitted over the network.The no network connection icon appears on the status bar.# The no network connection icon appears in three situations:• The CN2B Computer may not have an IP address. You must configure an IP address for the CN2B Computer or make sure that DHCP assigned an address. Use Intermec Settings and select the radio tab to make sure an IP address is assigned.• The CN2B Computer may not be connected to the access point. Try these possible solutions in order:• Make sure the access point is turned on and operating.• Make sure you are not using the CN2B Computer out of range of an access point. Try moving closer to an access point to re-establish commu-nications.• Make sure the CN2B Computer is configured correctly for your network. The radio parameters on the CN2B Computer must match the values set for all access points the CN2B Computer may communicate with.• If you have an 802.11b/g radio, the radio initialization process may have failed. Try resetting the CN2B Computer.• If you have tried these possible solutions and the no network connection icon still appears, you may have a defective radio card. For help, contact your local Intermec representative.Problems While Scanning Bar CodesProblem SolutionYou cannot see a red beam of light from the scanner when you press the Scan button or one of the Side Scan buttons and aim the scanner at a bar code label.There are three possible problems:• You may be too far away from the bar code label. Try moving closer to the bar code label and scan it again.• You may be scanning the bar code label “straight on.” Change the scanning angle and try again.• The PSM files may not be correctly installed.You can test the effective range of the scanner. Move within 61 cm (2 ft) of a wall and test the scanner. You need to be within the scanning range to scan bar code labels.When you release the Scan but-ton or Side Scan button, the Good Read light does not turn off. The Good Read light remains on if you configure the CN2B Computer to use continuous/edge triggering. If you configure the CN2B Computer for level trig-gering and the Good Read light remains on, there may be a problem. Press the Scan button or one of the Side Scan buttons again without scanning a bar code label. If the light is still on, contact your local Intermec service representative.Problems with Wireless Connectivity (continued)Problem Solution
Appendix B —  Troubleshooting the CN2B ComputerCN2B Mobile Computer User’s Manual 223Sending the CN2B Computer to Intermec for ServiceIf you send the CN2B Computer in for service, it is your responsibility to save the computer data and configuration. Intermec is responsible only for ensuring that the keypad and other hardware features match the original configuration when repairing or replacing your computer. For help understanding your warranty and finding help, see “Global Ser-vices and Support” on page xi.You may be asked for the version of the operating system running on your CN2B Computer. For help finding this information, see “Software Build Version” on page 14The scanner will not read the bar code label.  Make sure you aim the scanner beam so it crosses the entire bar code label in one pass.The angle you are scanning the bar code label may not be working well, or you may be scanning the label “straight on.” Try scanning the bar code label again, but vary the scanning angle.The bar code label print quality may be poor or unreadable. To check the quality of the bar code label, try scanning a bar code label that you know will scan. Com-pare the two bar code labels to see if the bar code quality is too low. You may need to replace the label that you cannot scan.Make sure the bar code symbology you are scanning is enabled. Use Intermec Settings to check the symbologies. If your bar code symbology is disabled, enable it and then try scanning the bar code label again.Note: If you restored the CN2B Computer to factory default settings, some of the sym-bologies may be disabled. Make sure that the application you are running on the com-puter is expecting input from a bar code. You may need to use the input panel to enter this information instead of scanning it.The scanner does not read the bar code labels quickly, or the scan-ning beam seems faint or obscured.The scanner window may be dirty. Clean the window with a solution of ammo-nia and water. Wipe dry. Do not allow abrasive material to touch the window.You scan a valid bar code label to enter data for your application. The data decoded by the CN2B Computer does not match the data encoded in the bar code label. The computer may have decoded the bar code label in a symbology other than the label’s actual symbology. Try scanning the bar code label again. Make sure you scan the entire label. To operate the computer quickly and efficiently, you should only enable the bar code symbologies that you are going to scan. Problems While Scanning Bar Codes (continued)Problem Solution
Appendix B — Troubleshooting the CN2B Computer224 CN2B Mobile Computer User’s ManualCleaning the Scanner Window and the Touch ScreenTo keep the computer in good working order, you may need to clean the scanner window and touch screen with a solution of ammonia and water. You can clean the scanner window and the touch screen as often as needed for the environment in which you are using the computer. You can help keep the touch screen clean by using the stylus, instead of your fingertip, to tap the screen.To clean the scanner window and touch screen1Press and hold the Power key for 2 to 3 seconds, and then release it to turn off the CN2B Computer.2Dip a clean towel or rag in the ammonia solution and wring out the excess. Wipe off the scanner window and touch screen. Do not allow any abrasive material to touch these surfaces. 3Wipe dry.To clean the scanner window• You can use the Screen Cleaner Kit (P/N 346-065-101) to clean the scanner window.There are no user-serviceable parts inside the CN2B Computer. Open-ing the unit voids the warranty and may cause damage to the internal components.
CN2B Mobile Computer User’s Manual 225IIndex
Index226 CN2B Mobile Computer User’s ManualSymbols__RESETMEPLEASE__.TXT, 136Numerics6820 printersNPCP driver, 114printer support, 1136920 Communications ServerManifestName parameter, 144802.11API, 161channel, 196communications setup, 94, 195configuration profiles, 162EAP-FASTnetwork EAP, 210WPA encryption, 210LEAPnetwork EAP, 208WPA encryption, 208network type, 196PEAPnetwork EAP, 200WPA encryption, 199profile label, 196profile security informationWEP encryption, 198profiles, 196advanced settings, 212basic information, 196security information, 197SSID (network name), 196TLSnetwork EAP, 202TTLSnetwork EAP, 205WPA encryption, 204WPA authentication with pre-shared keyZero Configuration, 98zero configurationWEP encryption, 97802.11b/g communications, 9380211API.DLL, 16280211CONF.EXE, 16280211SCAN.EXE, 162802PM.DLL, 162Aabrasive material, avoiding, 224Abstract Syntax Notation.1 See ASN.1Accessory list, 15Accountsvia Inbox, 58ActiveSyncadding programs, 33Folder behavior connected to email server, 56installing applications, 77Microsoft Reader, 69Pocket Internet Explorerfavorite links, 71mobile favorites, 72Mobile Favorites folder, 71replicating registry settings, 79Start menu icon, 22URL, 35Windows Mobile, 35add_registry_sectionAddRegflags, 132registry_root_string, 132value_name, 132Adding programsActiveSync, 33to the Start menu, 34via File Explorer, 34Windows Mobile, 32AddRegadd_registry_sectionflags, 132registry_root_string, 132value_name, 132DefaultInstall, 129AddWep(), 171Adjusting settingsWindows Mobile, 32AllDay eventsCalendarcreating, 40ammonia and water for cleaning, 224Annotations indexMicrosoft Reader, 70APIs802.11, 161Appletsclock, 32, 215intemec settingsbeeper volume, 9, 109intermec settings, 191smartsystems, 9, 109menu, 32owner information, 32password, 32power, 32battery status, 3RAM maintenance, 4systemwireless network, 94, 195
IndexCN2B Mobile Computer User’s Manual 227today, 32utilities, 191app launch, 193registry save, 191wakeup mask, 192wireless network, 194Application keysutilities applet, 192, 193Application launch applet, 193AppNameCEStrings, 127AppointmentsCalendarassigning to a category, 43changing, 39creating, 39setting a reminder, 41viewing, 39ASCIIprinting, 114printing to a portport print method, 114raw text to printer, 114ASN.1, 109Asset managementDeviceURL parameter, 143Attaching notes to textMicrosoft Reader, 70Audio filesWindows Media Player, 68Audio systemexternal headset jack, 3microphone, 2speaker, 2AutoCabcommand line syntax, 83AutoFTP, 149AutoIP, 100Automatic Private IP See AutoIPAutomatic shutoffbar code configuration, 213, 216configuration parameter, 213Autostart FTP, 149AUTOUSER.DAT, 78AvantGo channelsPocket Internet Explorer, 73BBacklight timeoutbar code configuration, 213, 217configuration parameter, 213Bar code configurationaudio volume, 213automatic shutoff, 213backlight timeout, 213key clicks, 214Bar codesconfigurationaudio volume, 216automatic shutoff, 216backlight timeout, 217Code 39, 215key clicks, 218internal scanner supported symbologies, 124scanning labels, 215Basic connect/disconnect functions, 162Batterycapacity, 17low battery conditions, 3RAM maintenance, 4specifications, 17status, 3Beepersilencing the volume, 8volumeturning it on, 8BlockSizeFTP Server, 143Bluetoothaccessing, 86activating, 86connecting with remote devices, 89WPport, 87Bluetooth compatibilitynetwork support, 86BooksMicrosoft Readeradding bookmarks, 70adding drawings, 70annotations index, 70attaching notes, 70copying, 70highlighting, 70reading, 70removing, 71searching, 70Browsing the InternetPocket Internet Explorer, 74Build informationsoftware, 14BuildMaxCEDevice, 128BuildMinCEDevice, 128
Index228 CN2B Mobile Computer User’s ManualCCAB filesafter the extraction, 136creating, 126creating INF files, 126creating with CAB Wizard, 139installation functionsSETUP.DLL, 136Cabinet Wizardcreating CAB files, 139troubleshooting, 140using the application, 126CABWIZ.EXE, 126Calendarall day eventscreating, 40appointmentsassigning to a category, 43changing, 39creating, 39setting a reminder, 41viewing, 39categories, 37optionschanging, 45recurrence pattern, 38Start menu icon, 22synchronizing, 37Capacitor, internal super, 3Card supportradios, 15Categoriescalendar, 37CEDeviceBuildMax, 128BuildMin, 128ProcessorType, 127UnsupportedPlatforms, 127VersionMax, 128VersionMin, 128CESelfRegisterDefaultInstall, 129CESetupDLLDefaultInstall, 129CEShortcutsDefaultInstall, 129shortcut_list_sectionshortcut_filename, 133shortcut_type_flag, 133target_file_path, 133CESignatureSourceDiskNames, 129Version, 126CEStringsAppName, 127InstallDir, 127Channel802.11 radio module, 196ClassID field valuesVN_CLASS_ASIC, 152VN_CLASS_BOOTSTRAP, 152VN_CLASS_KBD, 152cleaning the scanner window and touch screen, 224Clock appletsetting date and time, 215Windows Mobile settings, 32CloseHandle()DTR printing, 119, 120IrDA printing, 114NPCP printing, 114, 116Closing driversNPCP, 116Cold bootIOCTL_HAL_COLDBOOT, 157Cold boot, performing, 13COM1NPCP parameter, 115COM1 port, 114Command line syntaxAutoCab, 83CommunicationsDTR, 120NPCP, 117CompactFlash cardsinstalling applications, 78Computer shutdown, 3Configuration parametersautomatic shutoff, 213backlight timeout, 213date/time, 213key clicks, 214volume, 213ConfigureProfile(), 176Connecting toan ISP, 101email server, 109Connecting to a mail servervia Inbox, 57Connectionsdirectly to email server, 109ending, 108to an ISP, 101via modem, 101via modemto an ISP, 101Connections See Getting connected, 101
IndexCN2B Mobile Computer User’s Manual 229Contactsadding to speed dial, 51changing options, 51copying, 49creating, 46MSN Messengermanaging, 67sending messages, 68working with, 67sending a message, 49Start menu icon, 22synchronizing, 47viewing, 47Control panel appletsintermec settings, 191Converting writing to text, 28CopyFilesfile_list_sectiondestination_filename, 131flags, 131source_filename, 131CopyfilesDefaultInstall, 129Copyingcontacts, 49COREDLL.DLL, 181CPL802.CPL, 162CreateEvent(), 184CreateFile()DTR printing, 119, 120IrDA printing, 114NPCP printing, 114, 115DDate, setting, 215Date/Timeconfiguration parameter, 213DefaultInstallAddReg, 129CESelfRegister, 129CESetupDLL, 129CEShortcuts, 129Copyfiles, 129DeregisterDevice(), 115DTR printing, 119DestinationDirsfile_list_section, 130Detect rogue APs, 212DEVICEID.H, 154DeviceIOControl(), 161DTR printing, 119NPCP printing, 114DeviceIoControl()NPCP printing, 116DeviceNameFTP Server, 143DeviceURLFTP Server, 143DHCP, 100replicating registry settings, 79disk_ordinalSourceDiskNames, 129Display specifications, 16DllRegisterServer, 129DllUnregisterServer, 129Documentscreating via Pocket Word, 60DRAMlow battery shutdown, 4maintenance, 4Drawingcreating, 29Drawing modePocket Word, 63Drawing on the screenPocket Word, 63Drawingsadding via Microsoft Reader, 70DriversDTRcommunications, 120installing, 119opening, 120removing, 119writing to, 120NPCPclosing, 116communications, 117I/O controls, 116installing, 115opening, 115reading from, 116removing, 115writing to, 116DTR printing, 119closing driver, 120communications, 120opening driver, 120removing driver, 119writing to driver, 120EEAP-FAST802.11 radio modulenetwork EAP, 210WPA encryption, 210profile security information, 209WEP encryption, 209
Index230 CN2B Mobile Computer User’s ManualEditing a profile, 196EnableSuppLogging(), 180EnableWep(), 171EnableZeroConfig(), 177EncryptionStatus(), 172Ending a connection, 108Environmental specifications, 16Epson Escape Sequences, 114ERROR_INSUFFICIENT_BUFFERIOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153ERROR_INVALID_PARAMETERIOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153EXITME.BIN, 148Expansion slot specifications, 16FFavorite linksPocket Internet Explorer, 71File Exploreradding programs to Start menu, 34File Transfer Protocol See FTPfile_list_sectionCopyFilesdestination_filename, 131flags, 131source_filename, 131DestinationDirs, 130filenameSourceDiskFiles, 130Find featureWindows Mobile, 31fingerprints, cleaning, 224Flash File Storepackaging an application, 76Flash file system, utilities applet, 191Folder behavior connected to email serverActiveSync, 56IMAP4, 57POP3, 57SMS, 56FRAME_NOT_ACKED, 117FTPclient, 145configurable parameters, 143BlockSize, 143DeviceName, 143DeviceURL, 143IDNATarget, 144ManifestName, 144PauseAtStartup, 144Root, 144FTPDCMDS subdirectory, 148heartbeat, 145RTC 959, 147server, 145installing applications, 78server requestsCDUP, 145CWD, 145DELE, 145HELP, 145LIST, 145MKD, 145MODE, 145NLST, 145NOOP, 145PASS, 145PWD, 145QUIT, 145RETR, 145RMD, 145RNFR, 145RNTO, 145SITE, 146SITE ATTRIB, 146SITE BOOT, 146SITE COPY, 146SITE EKEY, 147SITE EVAL, 147SITE EXIT, 146SITE GVAL, 147SITE HELP, 146SITE KILL, 146SITE LOG, 147SITE PLIST, 147SITE PVAL, 147SITE RUN, 147SITE STATUS, 147SITE TIMEOUT, 147STOR, 145SYST, 145TYPE, 145USER, 145XCUP, 145XCWD, 145XMKD, 145XPWD, 145XRMD, 145stopping server from application, 148support, 145web browsers, 147FTPDCE.EXE, 145, 148AutoFTP, 149FTP Server, 141FTPDCE.TXT, 148
IndexCN2B Mobile Computer User’s Manual 231FTPDCMDS subdirectoryFTP support, 148GGDI approach, 114GetAssociationStatus(), 163GetAuthenticationMode(), 164GetBSSID(), 164GetCCXStatus(), 170GetCurrentDriverName(), 179GetDiversity(), 165GetLinkSpeed(), 165GetMac(), 166GetNetworkMode(), 166GetNetworkType(), 167GetPowerMode(), 168GetRadioIpAddress(), 170GetRSSI(), 168GetSSID(), 167Getting connectedISP, 101to an ISP, 101creating a modem connection, 101Windows Mobile, 101GetTXPower(), 169GetWepStatus(), 169Good Read lighttroubleshooting, 222HHALverion of Pocket PCIOCTL_HAL_GET_BOOTLOADER_VERINFO, 155IOCTL_HAL_GET_OAL_VERINFO, 155Headset jack, external, 3Helper functions, 176Highlighting textMicrosoft Reader, 70host computer not receiving data, troubleshooting,221II/O controlsNPCP driver, 116ID field valuesIOCTL_HAL_ITC_READ_PARMITC_NVPARM_80211_INSTALLED, 152ITC_NVPARM_80211_RADIOTYPE,152ITC_NVPARM_BLUETOOTH_INSTALLED, 153ITC_NVPARM_CONTRAST, 152ITC_NVPARM_DISPLAY_TYPE, 151ITC_NVPARM_ECN, 152ITC_NVPARM_INTERMEC_DATACOLLECTION_HW, 152ITC_NVPARM_INTERMEC_DATACOLLECTION_SW, 152ITC_NVPARM_INTERMEC_SOFTWARE_CONTENT, 152ITC_NVPARM_MANF_DATE, 151ITC_NVPARM_MCODE, 152ITC_NVPARM_SERIAL_NUM, 151ITC_NVPARM_SERIAL2_INSTALLED,153ITC_NVPARM_SERVICE_DATE, 151ITC_NVPARM_SIM_PROTECT_HW_INSTALLED, 153ITC_NVPARM_SIM_PROTECT_SW_INSTALLED, 153ITC_NVPARM_VERSION_NUMBER,152ITC_NVPARM_WAN_RI, 152IOCTL_HAL_ITC_WRITE_SYSPARMITC_ WAKEUP_MASK, 154ITC_REGISTRY_SAVE_ENABLE, 154IDNADeviceName, 143DeviceURL, 143IDNATarget, 144ManifestName, 144IDNATargetFTP Server, 144IMAP4Folder behavior connected to email server, 57Inboxaccounts, 58connecting to a mail server, 57downloading messages from server, 58getting connected, 101managing email messages and folders, 56Start menu icon, 22synchronizing email messages, 56using My Text, 31INF filescreating, 126Input panelletter recognizer, 26Pocket Word, 61selecting typed text, 26Windows Mobile, 22Installation functionsSETUP.DLL, 136InstallDirCEStrings, 127
Index232 CN2B Mobile Computer User’s ManualInstalling applicationsusing a storage card, 78using Secure Digital cards, 78with ActiveSync, 77with FTP Server, 78Installing driversDTR, 119NPCP, 115Instant messaging, 65Integrated scanners See Internal scannersIntermec Device Network Announcement SeeIDNAIntermec part numbers, 15Intermec settings, 191beeper volume, 9, 109Intermec settings appletsmartsystems, 9, 109INTERMEC.MIB, 110INTERMEC_PACKET_DRIVERSwitchPacketDriver(), 180Internal scannersconfiguring, 123specifications, 16supported symbologies, 124Internet explorersoftware build version, 14Internet Service Provider See ISP, 101IOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157, 182IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 155IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159, 182IOCTL_HAL_WARMBOOT, 156, 182IOCTL_LOAD_NDIS_MINIPORT, 161IOCTL_NPCP_BIND, 117IOCTL_NPCP_CANCEL, 117IOCTL_NPCP_CLOSE, 117IOCTL_NPCP_ERROR, 117IOCTL_NPCP_FLUSH, 117IOCTL_PROCESSOR_INFORMATION, 159IOCTL_UNLOAD_NDIS_MINIPORT, 161IP addressreplicating registry settings, 79isDHCPEnabled(), 179ISPconnecting to via Windows Mobile, 101creatinga modem connection, 101Pocket Internet Explorer, 71Windows Mobile, 101isSupplicantRunning(), 177isZeroConfigEnabled(), 177ITC_ WAKEUP_MASK, 154ITC_DEVID_80211RADIO_INTEL_2011B,152ITC_DEVID_80211RADIO_MAX valuesITC_DEVID_80211RADIO_INTEL_2011B,152ITC_DEVID_80211RADIO_NONE, 152ITC_DEVID_80211RADIO_NONE, 152ITC_DEVID_INTERMEC_EVIO, 152ITC_DEVID_SCANHW_MAX valuesITC_DEVID_INTERMEC_EVIO, 152ITC_DEVID_SCANHW_NONE, 152ITC_DEVID_SCANHW_NONE, 152ITC_IFTP_STOP, 148ITC_KEYBOARD_CHANGECreateEvent(), 184ITC_NVPARM_80211_INSTALLED, 152ITC_NVPARM_80211_RADIOTYPE, 152ITC_NVPARM_BLUETOOTH_INSTALLED,153ITC_NVPARM_CONTRAST, 152ITC_NVPARM_DISPLAY_TYPE, 151ITC_NVPARM_ECN, 152ITC_NVPARM_INTERMEC_DATACOLLECTION_HW, 152ITC_NVPARM_INTERMEC_DATACOLLECTION_SW, 152ITC_NVPARM_INTERMEC_SOFTWARE_CONTENT, 152ITC_NVPARM_MANF_DATE, 151ITC_NVPARM_MCODE, 152ITC_NVPARM_SERIAL_NUM, 151ITC_NVPARM_SERIAL2_INSTALLED, 153ITC_NVPARM_SERVICE_DATE, 151ITC_NVPARM_SIM_PROTECT_HW_INSTALLED, 153ITC_NVPARM_SIM_PROTECT_SW_INSTALLED, 153ITC_NVPARM_VERSION_NUMBER, 152ITC_NVPARM_WAN_RI, 152ITC_REGISTRY_SAVE_ENABLE, 154ITCADC.MIB, 110ITCSNMP.MIB, 110ITCTERMINAL.MIB, 110KKeep Alive message, 221
IndexCN2B Mobile Computer User’s Manual 233KernelIoControlIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157, 182IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 155IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159, 182IOCTL_HAL_WARMBOOT, 156, 182IOCTL_PROCESSOR_INFORMATION,159KernelIoControl(), 150Key clicksbar code configuration, 214, 218configuration parameter, 214Key sequencesalpha (green) keys, 10orange keys, 9Keypadadvanced remapping, 185alpha (green) key sequences, 10alpha plane, 183change notification, 184driver registry settings, 184orange key sequences, 9orange plane, 183planes, 183registry settingsalpha plane, 184orange plane, 184unshifted plane, 184remapping, 182sample registry keys, 187scan codes, 185specifications, 16LLEAP802.11 radio modulenetwork EAP, 208WPA encryption, 208profile security information, 207WEP encryption, 207LEAP securityfast roaming (CCKM), 212LED status, 10Letter recognizerWindows Mobile input panel, 26LibraryMicrosoft Reader, 69Line printing, 114lpBytesReturnedIOCTL_GET_CPU_ID, 160IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 156IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_PROCESSOR_INFORMATION,160lpInBufIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 156IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156IOCTL_PROCESSOR_INFORMATION,160lpInBufSizeIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156
Index234 CN2B Mobile Computer User’s ManuallpOutBufIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 156IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156IOCTL_PROCESSOR_INFORMATION,160LPT9 printer device, 115MManaging email messages and foldersvia Inbox, 56ManifestNameFTP Server, 144Memory and storagespecifications, 17Menu appletWindows Mobile settings, 32Messagessending tocontacts, 49via Inboxdownloading from server, 58MIBsASN.1, 109files, 109object identifier, 110OIDs, 110Microphone, 2Microprocessorspecifications, 17Microsoft Developer Network Library See MSDNlibraryMicrosoft Exchange email account, 65Microsoft Passport account, 65Microsoft Readeradding bookmarks, 70adding drawings, 70annotations index, 70attaching notes, 70booksreading, 70removing, 71features, 70highlighting text, 70searching for text, 70using the library, 69Windows Mobile, 69Microsoft securityallow fast roaming (CCKM), 212detect rogue APs, 212enable mixed cell, 212Migrating from another computer, 82Mixed cellenable via Microsoft security, 212Mobile FavoritesPocket Internet Explorer, 72Modemscreating a connectionto an ISP, 101MSDN library, 148MSDN Windows CE documentation, 100MSN Messengerabout, 65accountsMicrosoft Exchange email, 65Microsoft Passport, 65contactsmanaging, 67sending messages, 68working with, 67using My Text, 31NnDeviceIdNLEDGetDeviceInfo, 182NDIS_ENCRYPTION_1_ENABLEDEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_1_KEY_ABSENTEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_2_ENABLEDEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_2_KEY_ABSENTEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_3_ENABLEDEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_3_KEY_ABSENTEncryptionStatus(), 172GetWepStatus(), 169NDIS_ENCRYPTION_DISABLEDEncryptionStatus(), 172GetWepStatus(), 169
IndexCN2B Mobile Computer User’s Manual 235NDIS_ENCRYPTION_NOT_SUPPORTEDEncryptionStatus(), 172GetWepStatus(), 169NDIS_MIXED_CELL_OFFSetMixedCellMode(), 175NDIS_MIXED_CELL_ONSetMixedCellMode(), 175NDIS_NET_AUTO_UNKNOWNGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_MODE_ESSGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_MODE_IBSSGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_MODE_UNKNOWNGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_TYPE_DSGetNetworkType(), 167NDIS_NET_TYPE_FHGetNetworkType(), 167NDIS_NET_TYPE_OFDM_2_4GGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_TYPE_OFDM_5GGetNetworkMode(), 166SetNetworkMode(), 174NDIS_NET_TYPE_UNDEFINEDGetNetworkType(), 167NDIS_NETWORK_EAP_MODE_OFFGetCCXStatus(), 170SetCCXStatus(), 175NDIS_NETWORK_EAP_MODE_ONGetCCXStatus(), 170SetCCXStatus(), 175NDIS_POWER_LEVEL_1GetTXPower(), 169NDIS_POWER_LEVEL_15GetTXPower(), 169NDIS_POWER_LEVEL_30GetTXPower(), 169NDIS_POWER_LEVEL_5GetTXPower(), 169NDIS_POWER_LEVEL_63GetTXPower(), 169NDIS_POWER_LEVEL_UNKNOWNGetTXPower(), 169NDIS_RADIO_ASSOCIATEDGetAssocationStatus(), 163NDIS_RADIO_AUTH_MODE_AUTOGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_ERRORGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_OPENGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_SHAREDGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_WPAGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_WPA_NONEGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_AUTH_MODE_WPA_PSKGetAuthenticationMode(), 164SetAuthenticationMode(), 173NDIS_RADIO_POWER_AUTOGetPowerMode(), 168SetPowerMode(), 174NDIS_RADIO_POWER_MODE_CAMGetPowerMode(), 168SetPowerMode(), 174NDIS_RADIO_POWER_MODE_FAST_PSPGetPowerMode(), 168SetPowerMode(), 174NDIS_RADIO_POWER_MODE_PSPGetPowerMode(), 168SetPowerMode(), 174NDIS_RADIO_POWER_UNKNOWNGetPowerMode(), 168SetPowerMode(), 174NDIS_RADIO_SCANNINGGetAssociationStatus(), 163NDIS_SUPP_LOGGING_OFFEnableSuppLogging(), 180NDIS_SUPP_LOGGING_ONEnableSuppLogging(), 180NDISUIO_PACKET_DRIVERSwitchPacketDriver(), 180NETWLAN.DLL, 162Network adaptersno networking, 94wireless 802.11, 94wireless printing, 86Network Connection icon, 221, 222
Index236 CN2B Mobile Computer User’s ManualNetwork EAPEAP-FAST security method, 210LEAP security method, 208PEAP security method, 200TLS security method, 202TTLS security method, 205Network type802.11 radio module, 196nInBufSizeIOCTL_HAL_GET_BOOTLOADER_VERINFO, 156IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_PROCESSOR_INFORMATION,160nInfoIdNLEDGetDeviceInfo, 181NLED drivervibrator, 181NLED.H, 181, 182NLEDGetDeviceInfo, 181NLEDSetDevice, 182NLED_COUNT_INFONLEDGetDeviceInfo, 181NLED_SETTINGS_INFO_IDNLEDGetDeviceInfo, 181NLEDSetDevice, 182NLED_SUPPORTS_INFO_IDNLEDGetDeviceInfo, 181NLEDGetDeviceInfo, 181NLEDSetDevice, 182Notesdrawing on the screen, 29creating a drawing, 29recording a message, 30Start menu icon, 22synchronizing notes, 54writing on the screen, 27alternate writing, 28converting writing to text, 28tips for good recognition, 28nOutBufSizeIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 156IOCTL_HAL_GET_DEVICE_INFO, 150IOCTL_HAL_GET_DEVICEID, 154IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156IOCTL_PROCESSOR_INFORMATION,160NPCP printing, 114, 115closing driver, 116COM1 parameters, 115communications, 117driver I/O controls, 116installation, 115LPT9, 115opening driver, 115reading from driver, 116removal, 115sample code, 118writing to driver, 116NPCPPORT.DLL, 114OObject Storepackaging an application, 76Object storeIOCTL_HAL_COLDBOOT, 157IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156OEMIOCTL.HIOCTL_GET_CPU_ID, 160IOCTL_HAL_COLDBOOT, 157IOCTL_HAL_GET_BOOT_DEVICE, 158IOCTL_HAL_GET_BOOTLOADER_VERINFO, 155IOCTL_HAL_GET_OAL_VERINFO, 155IOCTL_HAL_GET_RESET_INFO, 157IOCTL_HAL_ITC_READ_PARM, 151IOCTL_HAL_ITC_WRITE_SYSPARM, 153IOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156Oldstyle device ID, 154ONeil printinginstalling driver, 119ONEIL.DLL, 119Opening driversDTR, 120NPCP, 115Operating systemspecifications, 17OSVERSIONINFO.dwBuildNumber, 128OSVERSIONINFO.dwVersionMajor, 128OSVERSIONINFO.dwVersionMinor, 128Owner Information appletWindows Mobile settings, 32
IndexCN2B Mobile Computer User’s Manual 237PPackaging an applicationFlash File Store, 76Object Store, 76Persistent Storage Manager, 76Secure Digital storage cards, 76Page format printing, 114Password appletWindows Mobile settings, 32Patent information, vPauseAtStartupFTP Server, 144PB20 printersDTR driver, 119printer support, 113PB40 printersDTR driver, 119printer support, 113PB42 printersDTR driver, 119printer support, 113PEAP802.11 radio modulenetwork EAP, 200WPA encryption, 199profile security information, 198WEP encryption, 199Phone applicationCDMA radiosadding contact to speed dial, 51Physical dimensionsspecifications, 17pInputNLEDSetDevice, 182PKFUNCS.HIOCTL_HAL_GET_DEVICEID, 154IOCTL_PROCESSOR_INFORMATION,159Planes, keypad, 183Pocket Excelabout, 63creating a workbook, 64Pocket Internet Explorerabout, 71AvantGo channels, 73browsing the Internet, 74favorite links, 71getting connected, 101mobile favorites, 72Mobile Favorites folder, 71software build, 14Start menu icon, 22viewing mobile favorites and channels, 74Pocket Outlook, 36Pocket PCIOCTL_HAL_GET_BOOTLOADER_VERINFO, 155IOCTL_HAL_GET_OAL_VERINFO, 155Pocket Wordabout, 60creating a document, 60drawing mode, 63synchronizing, 63typing mode, 61writing mode, 62POP3Folder behavior connected to email server, 57pOutputNLEDGetDeviceInfo, 181Power appletbattery status, 3RAM maintenance, 4Windows Mobile settings, 32Printer support, 114NPCP printer driver, 114ONeil printer driver, 119PRISMNDS.DLL, 162problems, finding and solving, 223Processor informationIOCTL_PROCESSOR_INFORMATION,159ProcessorTypeCEDevice, 127Profile label802.11 radio module, 196Profiles802.11 radio module, 196advanced settings, 212basic information, 196security information, 197editing, 196Programs, adding or removingWindows Mobile, 32ProviderVersion, 126PSMdetermining build version, 12packaging an application, 76QQuery Information functions, 163RRadioConnect(), 162RadioDisassociate(), 163RadioDisconnect(), 163
Index238 CN2B Mobile Computer User’s ManualRadioscard support, 15Reader commands, 214configuration change, 214date and time settings, 215ReadFile()NPCP printing, 114Reading from driversNPCP, 116Reboot methodsIOCTL_HAL_COLDBOOT, 182IOCTL_HAL_REBOOT, 182IOCTL_HAL_WARMBOOT, 182REBOOTME.BIN, 148Recharging time, 17Record buttonrecording a message, 30Recordingvia Notes, 30via Pocket Word, 62Recovery CDAutoCab method, 83RegFlushKey() API, 141updating the system software, 82Recurrence patternCalendar, 38REGFLUSH.CAB, 79RegFlushKey(), 141RegisterDevice(), 115DTR printing, 119Registryconfirm the new regisry file, 80delete the old registry save, 79, 80FTP Server parameters, 143keypad remapping, 184load the application, 80replicating settings, 79sample view of key mapping, 187save locationIOCTL_HAL_ITC_WRITE_SYSPARM,153update other computers, 81Registry Save applet, 191Registry settingsAutoCfg, 100AutoFTP, 149AutoInterval, 100AutoIP/DHCP, 100DhcpMaxRetry, 100DhcpRetryDialogue, 100keypad driver, 184keypad planesalpha, 184orange, 184unshifted, 184RegOpenKeyEx(), 183RegQueryValueEx(), 183RegSetValueEx(), 183Regulatory approvalsspecifications, 17RemoveWep(), 176Removing driversDTR, 119NPCP, 115Removing programsWindows Mobile, 32RenewDHCP(), 179Replicating registry settings, 79Reset button, 13ResetRadioToSystemSave(), 180RFC 959, 147RoamingMicrosoft security, 212RootFTP Server, 144RPM.EXE, 130RPMCE212.INI, 130SSample codeNPCP printing, 118Scan codes, 185Scannerbeeper volumeturning it off, 8turning it on, 8specifications, 16unit configuration parametersautomatic shutoff, 213backlight timeout, 213date/time, 213key clicks, 214volume, 213utilities configurationbutton wakeup mask, 192scannercleaning the window, 224window, illustrated, 224screencleaning, 224Secure Digital cardsinstalling applications, 78packaging an application, 76specifications, 16Set information functions, 171SetAuthenticationMode(), 173SetCCXStatus(), 175
IndexCN2B Mobile Computer User’s Manual 239SetChannel(), 173SetMixedCellMode(), 175SetNetworkMode(), 174SetPowerMode(), 174SetSSID(), 175Setting date and time, 215SETUP.DLL, 129, 136DllMain, 136installation functions, 136SHFullScreen(), 141shortcut_list_sectionCEShortcutsshortcut_filename, 133shortcut_type_flag, 133target_file_path, 133SignatureVersion, 126SIM cardsprotection hardware, 153protection software, 153software installed, 153Simple Network Management Protocol See SNMPSmartSystems, 9, 109SMSFolder behavior connected to email server, 56SNMP, 109Software versions, 14SourceDiskFilesfilename, 130SourceDiskNamesCESignature, 129disk_ordinal, 129SourceDisksNames.MIPS, 130SourceDisksNames.SH3, 130Speaker, 2Specifications, 16battery, 17display, 16environmental, 16expansion slots, 16integrated scanner options, 16integrated wireless, 16keypad options, 16memory and storage, 17microprocessor, 17operating system, 17physical dimensions, 17regulatory approvals, 17standard communications, 17SSID (network name)802.11 radio module, 196Standard communicationsspecifications, 17Start Menuadding programs, 34via File Explorer, 34StartScanList(), 178StartSupplicant(), 178Static IPreplicating registry settings, 79StopSupplicant(), 178Storage media, 15specifications, 16Stream device driverNPCPPORT.DLL, 114ONEIL.DLL, 119string_keyStrings, 127Stringsstring_key, 127SwitchPacketDriver(), 180Symbologiesinternal scanner supported symbologies, 124scanning labels, 215symbologiesdisabled incorrectly, 223SynchronizingAvantGo channels, 73Calendar, 37contacts, 47email messages, 56favorite links, 71mobile favorites, 72notes, 54Pocket Word, 63SYSTEMINFO.dwProcessorType, 127TTAHOMA.TTF, 130TasksStart menu icon, 22TCP/IP, 93TCP/IP clientDHCP server, 100technical supportsending CN2 for repair, 223Text messagesWindows Mobile, 31Time, setting, 215
Index240 CN2B Mobile Computer User’s ManualTLS802.11 profilecertificates, 207WPA encryption, 202802.11 radio modulenetwork EAP, 202profile security informationWEP encryption, 201WPA encryption, 202Today appletWindows Mobile settings, 32Today screenWindows Mobile, 21Tools CDCAB files, 77MIB files, 110sample NPCP code, 118touch screencleaning, 224illustrated, 224TroubleshootingCAB Wizard, 140troubleshootingbar code symbologies, 223lost network connection after suspend, 221Network Connection icon, 221TTLS802.11 radio modulenetwork EAP, 205WPA encryption, 204profile security informationWEP encryption, 203, 204Typing modePocket Word, 61UUDPFTPDCE, 145UDP broadcastsIDNATarget parameter, 144UDP Plus, 93Unitconfiguration parametersautomatic shutoff, 213backlight timeout, 213date/time, 213key clicks, 214volume, 213Unit Managerdate/time, 213Unshifted plane on keypad, 183UnsupportedPlatformsCEDevice, 127Updatingbootloader, 77URLsActiveSync, 35full screen display, 141MIBs, 110Microsoft Exchange email account, 65Microsoft Passport account, 65Microsoft support, 20MSDN library, 148MSDN Windows CE documentation, 100Windows Mobile, 20Windows Mobile support, 20URODDSVC.EXE, 162USB communications, 92Utilities appletapp launch, 193registry save, 191wakeup mask, 192UUID, 154VVersionCESignature, 126Provider, 126Signature, 126VersionMaxCEDevice, 128VersionMinCEDevice, 128Vibratorprogramming, 181Video filesWindows Media Player, 68Viewing mobile favorites and channelsPocket Internet Explorer, 74Virtual wedgebar code configurationgrid, 218postamble, 218preamble, 218VN_CLASS_ASIC, 152VN_CLASS_BOOTSTRAP, 152VN_CLASS_KBD, 152Volumebar code configuration, 213, 216configuration parameter, 213WWakeup mask applet, 192WAP pages, 71connecting to an ISP, 101Warm bootIOCTL_HAL_REBOOT, 159IOCTL_HAL_WARMBOOT, 156
IndexCN2B Mobile Computer User’s Manual 241Warm boot, performing, 13WAV files, 62WCESTART.INI, 130Web browsersFTP support, 147Web pages, 71connecting to an ISP, 101WEP encryptionEAP-FAST security method, 209LEAP security method, 207PEAP security method, 199profile security information, 197, 198TLS security method, 201TTLS security method, 203, 204zero configuration, 97Windows CE documentation (MSDN), 100Windows Media PlayerStart menu icon, 22Windows Mobile, 68Windows MobileActiveSync, 35basic skills, 21command bar, 22getting connected, 101MSN Messenger, 65navigation bar, 22notifications, 23Pocket Excel, 63Pocket Word, 60popup menus, 23programs, 21support URLs, 20Today screen, 21where to find information, 20Windows Media Player, 68writing on the screen, 27Wireless network, 94, 195specifications, 16Wireless printingBluetooth compatible module, 86Wireless TCP/IP installationsBlockSize parameter, 143Workbookcreating via Pocket Excel, 64WPA authenticationwith pre-shared keyZero Configuration, 98WPA encryptionEAP-FAST security method, 210LEAP security method, 208PEAP security method, 199TLS security method, 202TTLS security method, 204WPport, 87WriteFile()DTR printing, 119, 120IrDA printing, 114NPCP printing, 114, 116Writing modePocket Word, 62Writing on the screenPocket Word, 62Writing on the screen See Notes, 27Writing to driversDTR, 120NPCP, 116XXscale processor IDIOCTL_GET_CPU_ID, 160ZZero Configurationenabling, 196enabling WPA authentication, 98
Index242 CN2B Mobile Computer User’s Manual
Corporate Headquarters6001 36th Avenue WestEverett, Washington 98203U.S.A.tel 425.348.2600fax 425.355.9551www.intermec.comCN2B Mobile Computer User's Manual*935-001-001*P/N 935-001-001

Navigation menu