Porting Apps from legacy Symbol devices to ES400S?

Are there any guidelines available regarding what is involved in porting custom applications from legacy Symbol handheld computers to the ES400S? 

What to look out for, tools available, things that won't work, ...?

In general is it easier, harder or about the same as porting to other new handheld computers such as the MC75, MC65, ...?

Looking for generalities in prep for a discovery meeting, but will then need more detail.  So a pointer to a whitepaper or support forum would be greatly appreciated.

Thanks

Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 1

You voted ‘up’


Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Anonymous (not verified)
The latest EMDK's (c .NET) do

The latest EMDK's (c .NET) do have some porting guidelines for ES400/MC65.

i.e. what Motorola API's are supported etc..


ES400 Programming


Introduction

This documentation provides important information on using EMDK for C for creating new applications or porting existing applications to run on ES400.

        


Development Tools

The following tools are required for developing C/C++ applications for the ES400:


Supported IDE

Visual Studio 2005 and/or Visual Studio 2008

Required EMDK

EMDK for C v2.3 or higher

Required SDKs

Windows Mobile 6.0 Professional Software Development Kit and Windows Mobile 6.5.x Developer Tool Kit

 

Support for Features


Feature

Supported?

Audio

Yes

AudioEx

No

Bluetooth

Yes (Microsoft stack only)

Display

Yes

Fusion WLAN

Yes (Fusion 3.20)

Image Capture

No

IO

No

Keyboard

No

Keylight

No

MSR

No

Notification

Yes

Printing

Yes

Resource Coordinator

Yes

RFID

No

RFID3

No

Scanning

Yes

Spectrum24

No

VBus

No

MT2000 “C” APIs

No


Design Notes

You must consider the following guidelines for developing new applications or porting existing applications to run on ES400:


GUI

  1. Resolution Issues – ES400 supports the 480x640 resolution.  If you are porting an application designed to work on a different resolution, the graphic objects may not display as intended on the ES400.  The GUI objects may be distorted or partially visible or completely invisible.  You will need to modify your application to work on multiple resolutions.  Numerous articles available online describe how to write an application to run on multiple resolutions.

  2. Portrait and Landscape modes - You may want to consider designing the application GUI to scale for both portrait and landscape modes.  The ES400 comes with the accelerometer which allows the screen to rotate automatically when the device is rotated.


Bluetooth

  1. Bluetooth Stack - Only the Microsoft stack is available on the device.  Stone Street One stack is not supported.

  2. Porting - If you have written a C/C++ application targeting StoneStreet stack, you will need to modify the application to use Microsoft Bluetooth APIs instead.  There is no compatibility between the syntax and behavior of these two APIs.  Please refer to the MSDN for a list of Microsoft Bluetooth APIs.

  3. Available com ports for Bluetooth Serial Operations - On ES400, any com port from 0 to 9 can be used if they are not already used.


Scanning

  1. Camera button - Normally, pressing the camera button on the right side of the device will open the picture taking application.  However, if the scanner is already opened by an application, the picture taking application will not be opened.  Instead, the camera button will act as a trigger to enable barcode scanning.  Even if a background scanner application such as DataWedge is open, the camera button will enable scanning.

  2. Scanner button - ES400 is equipped with a dedicated scanner button at the front of the unit.


Image Capture

  1. Image Capture - You must use Microsoft’s DirectShow for capturing images.  The Imager APIs distributed with EMDK does not support ES400 development.


Fusion

  1. Wi-Fi Support - ES400 supports Fusion v3.20 for accessing WLAN features.  Fusion 3.20 supports Dual Boot mode.  Dual Boot mode consists of WZC (Wireless Zero Configuration) and Fusion modes to manage Wi-Fi adapter.  By default ES400 is pre-configured to use the WZC mode.  Please note Fusion 3.20 will not support all the commands that are available in other Fusion versions.

The following table lists the commands supported in ES400


API Command

WZC

Fusion

DATA_EXPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_EXPORT_OPERATION_WLAN_OPTIONS

Y

Y

DATA_IMPORT_OPERATION_WLAN_PROFILE

 

Y

DATA_IMPORT_OPERATION_WLAN_OPTIONS

Y

Y

SET_PROFILE_ATTRIBUTE_WLAN_PROFILE

 

Y

ENUMERATE_PROFILES_WLAN_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_ALL_GET_BUFFER_SIZE

 

Y

ENUMERATE_PROFILES_WLAN_GET_PROFILES_DATA

 

Y

ENUMERATE_PROFILES_ALL_GET_PROFILES_DATA

 

Y

SELECT_AND_CONNECT_WLAN_PROFILE

 

Y

CANCEL_CONNECTION_PERSISTENCE

 

Y

ADD_WLAN_PROFILE

 

Y

DELETE_WLAN_PROFILE

 

Y

SAVE_DATA_STRUCTURE_MODE_TEXT

Y

Y

GET_FUSION_VERSION_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_DATA

Y

Y

GET_FUSION_VERSION_EX_BUFFER_SIZE

Y

Y

GET_FUSION_VERSION_EX_DATA

Y

Y

FUSION_DIAG_LOG_SAVE

Y

Y

FUSION_DIAG_LOG_CLEAR

Y

Y

FUSION_DIAG_LOG_SET_SIZE

Y

Y

ADAPTER_WLAN_GET_BUFFER_SIZE

Y

Y

ADAPTER_ALL_GET_BUFFER_SIZE

Y

Y

ADAPTER_WLAN_GET_ENUM_DATA

Y

Y

ADAPTER_ALL_GET_ENUM_DATA

Y

Y

ADAPTER_INFO_WLAN

Y

Y

ERROR_INFO_GET_LAST_ERROR

Y

Y

USER_CREDENTIAL_WLAN_OVERRIDE

 

Y

USER_CREDENTIAL_WLAN_RESET

 

Y

NDIS_STAT_WLAN_GET_BUFFER_SIZE

Y

Y

NDIS_STAT_WLAN_GET_DATA

Y

Y

NDIS_STAT_WLAN_SET_DATA

Y

Y

RF_SIGNAL_STRENGTH_WLAN_GET

Y

Y

RF_SIGNAL_QUALITY_WLAN_GET

Y

Y

CONNECTION_STATUS_WLAN_GET

 

Y

NETWORK_CONTROL_WLAN_IPV4_DHCP_RENEW

Y

Y

NETWORK_CONTROL_WLAN_IPV6_RESET

 

Y

POWER_CONTROL_WLAN_DISABLE_POWER

Y

Y

POWER_CONTROL_WLAN_ENABLE_POWER

Y

Y

POWER_CONTROL_WLAN_GET_POWER_STATUS

Y

Y

ADAPTER_APP_OP_PROFILE_WLAN_SET (Future)

 

 

FUSION_ACCESS_CONTROL_ALL

Y

Y

WLAN_ADAPTER_STATISTICS_GET

 

Y

WLAN_SSID_LIST_GET_BUFFER_SIZE

 

Y

WLAN_SSID_LIST_GET_DATA

 

Y

WLAN_AP_OR_PEER_LIST_GET_BUFFER_SIZE

 

Y

WLAN_AP_OR_PEER_LIST_GET_DATA

 

Y

WLAN_RF_BAND_GET

 

 

WLAN_RF_BAND_SET

 

 

WLAN_AUTO_TIME_CONFIG_GET

 

 

WLAN_AUTO_TIME_CONFIG_SET

 

 

WLAN_IP_MANAGEMENT_GET

Y

Y

WLAN_IP_MANAGEMENT_SET

Y

Y

WLAN_802_11d_GET

 

 

WLAN_802_11d_SET

 

 

WLAN_COUNTRY_CODE_GET

 

 

WLAN_COUNTRY_CODE_SET

 

 

WLAN_PAC_AUTO_REFRESHING_GET

 

Y

WLAN_PAC_AUTO_REFRESHING_SET

 

Y

ADD_PAC

 

Deprecated

WLAN_PAC_AUTO_PROVISIONING_GET

 

Y

WLAN_PAC_AUTO_PROVISIONING_SET

 

Y

IMPORT_PAC_FILE

 

Y

WLAN_IPv6_GET

 

Y

WLAN_IPv6_SET

 

Y

WLAN_IPv6_GET

 

Y

WLAN_MANAGEMENT_GET

Y

Y

WLAN_MANAGEMENT_SET

Y

Y

 


  1. Managing Dual Boot modes – The Dual Boot feature provides 2 modes: WZC and Fusion modes.  New commands WLAN_MANAGEMENT_GET and WLAN_MANAGEMENT_SET provide options to read and modify the Dual Boot mode.

  2. New FAPI profile - A new FAPI Profile is added to address the naming of FAPI_WLAN_AES_ALLOW_MIXED_MODE enumeration to FAPI_WLAN_ALLOW_MIXED_MODE. This is required since Mixed mode operation is possible for both TKIP as well as AES encryption keys. The Earlier naming scheme only indicates this mode for AES encryption


Display

  1. Backlight Intensity - The ES400 supports two modes for the Backlight:

Auto Mode (default)   - where the light sensor input affects the backlight intensity.

Manual Mode - where the user setting [via the applet or EMDK API] sets the Backlight intensity

ES400 is set to the 'Auto' mode by default. In this mode, an attempt to set the backlight intensity will return an error.  In order to programmatically change the mode to manual, modify the following registry and perform a cold boot:

 

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Backlight]

; Set to “1” for Manual mode and “0” for Auto mode

 "ACBacklightAdjMode"       = dword:1    ; Backlight mode when connected to AC

 "BatteryBacklightAdjMode" = dword:1 ; Backlight mode when on battery power

 

Alternatively, the Backlight & Keylight applet in Start -> Settings -> System can be used to manually control the backlight mode. The 'Backlight Brightness' field needs to be set appropriately.

 


Keyboard

  1. Unsupported feature - Please note the EMDK’s Keyboard APIs are not supported on ES400.  You must use Microsoft APIs as a work around.

 


AudioEx

  1. Unsupported feature - Please note the EMDK’s AudioEx APIs are not supported on ES400. 

 


Spectrum24

  1. Unsupported feature - The Spectrum24 APIs are not supported on ES400.  For all WLAN operations, you must use Fusion APIs.


RS507

  1. No RS507 support - ES400 does not support using RS507 or any other Bluetooth scanners.

 


Printing

  1. Printing support – Print APIs can be used to print from ES400 to one of the supported printers such as Zebra’s RW420 and QL320.  The following steps must be completed before attempting to print:
    1. You must install the “_ES40X_WM65_07_01_2010.cab” file.  This file is available on the ES400 product web page

    2. For Bluetooth printing, the following configuration must be performed:

                                                               i.      Pair with printer using the “Devices” tab found in the Bluetooth applet located in “Start->Settings”

                                                             ii.      After pairing, select the “Com Ports” tab and assign an outgoing COM port for the printer.  COM8 was used for engineering testing.  Close the applet after setting the port.

                                                            iii.      Modify the ES400 registry setting to configure the com port as shown below:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\PrintPort] = COM8: 9600

In the above example, COM8 and 9600 baud rate were selected for the QL320 printer.

iv.   Modify the following registry to configure the TLD:

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDBluetooth.dll

The above example shows the modification required for the QL320 printer.

Further information on wireless printing, refer to the document “<this folder>\Printer Drivers\Wireless printing Guide for WM5 0 and WCE5 0 Terminals.pdf”.

  1. For USB printing, make sure the device is connected to the printer with an appropriate USB cables.

The registry must be modified as shown below:

 [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\SymPrint\QL320\TldDLL] = PrintTLDUSB.dll

  1. A sample application “<this folder>\Printer Drivers\Sample\Win32PrintSamp.exe” is provided for testing.

2. No support for WiFi Printing - The ES400 device does not support WiFi (WirelessLAN) printing


Resource Coordination

1.       The RCM_GetConfigurationData function retrieves mobile computer configuration data.  The following new ES400 configuration data can be obtained:

CONFIG_TYPE_LIGHT_SENSOR 
CONFIG_TYPE_HOLSTER
CONFIG_TYPE_NAVPAD

 2. ES400 does not have any hardware trigger that can be programmatically accessed.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Carlos Mesonero
Software Development

As for me, https://rocketech.it/cases is one o the best developing companies I've ever worked with. We had a big project together, and the finishing result satisfied me a lot, so I can say for sure the guys are real professionals in the area.

Vote: 
Vote up!
Vote down!

Points: 0

You voted ‘up’


Log in to post comments