Using CellCore with Windows Embedded CE 6.0

CE 6.0 ships with a number of new/updated features - this includes tools integration into Visual Studio 2005 (which provides updates to MFC, ATL, STL, WTL, compilers, C++ language conformance etc...) - kernel changes to support more than 32 processes and more than 32MB Virtual Memory per process.

Beyond the tools and kernel changes there are also some new and interesting technologies to work with, these include the new Windows Network Projector (more on this later), CellCore, and others.

CellCore is an interesting addition to CE 6.0, providing support for SMS messaging and internet connectivity for embedded devices over the cellular network - CE 6.0 ships with a sample RIL driver for Enfora devices, for the recent CE 6.0 Electronic Picture Frame launch demo I used an Enfora GSM/GPRS GSM1218 device connected to an ICOP eBox 2300 over a serial connection.

There are two steps needed to add CellCore/RIL driver support to your embedded operating system design - the first is to search the CE 6.0 catalog for "CellCore" (see image below).

CellCore

You hae the option of adding just the features you need (such as SMS support) or all features (All Modules) - this adds the components at the API level but doesn't add the Enfora sample RIL driver - this is added through a custom environment variable "IMGENFORA=1" set through the OSDesign Properties dialog.

Here's an extract from C:\WINCE600\PLATFORM\DEVICEEMULATOR\FILES\platform.bib

IF IMGENFORA
    rilgsm.dll          $(_FLATRELEASEDIR)\rilenfora.dll          NK  SHK
ENDIF IMGENFORA

Setting the IMGENFORA environment variable will only work for the CEPC and Device Emulator platforms - the Enfora drivers are located in the CEPC and Device Emulator Platform folders - if you want to get the Enfora RIL driver working with another platform then you need to copy the Enfora driver source over to your platform folder - for example, copying the CEPC Enfora driver from \wince600\platform\CEPC\SRC\DRIVERS\RILPDD over to my ICOP eBox 2300 platform folder \Wince600\Platform\ICOP_2300\SRC\DRIVERS\RILPDD gets the files in the right place, you also have to modify some additional files to get this to work.

First, modify the DIRS file for your DRIVERS folder so that the rilpdd folder gets built - like so...

DIRS= \
# @CESYSGEN IF CELLCORE_MODULES_RIL
rilpdd \
# @CESYSGEN ENDIF CELLCORE_MODULES_RIL

Next step is to copy the IMGENFORA block from the CEPC Platform.BIB and Platform.REG files - these files are located in the C:\WINCE600\PLATFORM\CEPC\FILES folder - you would need to add the IMGENFORA blocks into your platforms BIB and REG files.

At this point you should be able to set the IMGENFORA=1 environment variable for your OSDesign/Platform and build your operating system design, which can then take advantage of the Enfora RIL/GSM/GPRS device.

Note that the Enfora device "assumes" that it's connected to COM2 of your embedded device, which interestingly can be mapped for the Device Emulator to use a physical COM port of your desktop PC.

CellCore support has been added to CE 6.0 for machine-to-machine communication either using SMS messages or connecting over the cellular network to the internet and calling XML Web Services or other technologies to communicate back to the enterprise (or to other cellular connected devices) - You could imagine vending machines that report back to a warehouse when they need to be refilled - combine this with "Smart" GPS navigation and you can see that cost savings could be made by reducing the number of miles needed for a delivery van each day by only restocking the vending machines that are running low and being smart about the route taken, reducing miles, fuel etc...

- Mike