Difference between revisions of "Touch Orbiter - for the CUWIN3500 in-wall Touch Panel"

From LinuxMCE
Jump to: navigation, search
(Compiling)
Line 14: Line 14:
 
In use the Touch Orbiter is indistinguishable from implementations that use a full Orbiter eg Pad Orbiter or the Nokia Orbiter but by comparison is a very light simple application that needs far fewer resources on the target machine and is massively simpler to implement too. This simplicity makes it a very simple process to port Touch Orbiter to new devices because the application only has to be able to receive and display png's or jpeg's, interact with a touch screen and communicate over a socket with an instance of the proxy_orbiter running on the Core. The proxy_orbiter abstracts all the functions of a full Orbiter and hands back screens or updates to screens as and when necessary.
 
In use the Touch Orbiter is indistinguishable from implementations that use a full Orbiter eg Pad Orbiter or the Nokia Orbiter but by comparison is a very light simple application that needs far fewer resources on the target machine and is massively simpler to implement too. This simplicity makes it a very simple process to port Touch Orbiter to new devices because the application only has to be able to receive and display png's or jpeg's, interact with a touch screen and communicate over a socket with an instance of the proxy_orbiter running on the Core. The proxy_orbiter abstracts all the functions of a full Orbiter and hands back screens or updates to screens as and when necessary.
  
What is a proxy_orbiter? Proxy_orbiter is built form the 'guts' of the full Orbiter you see on MD's but in this case its a UI'less piece of software that runs on the Core and its job is to render the UI for the Touch Orbiter that is running remotely on the target device. Each Touch Orbiter has an associated instance of proxy_orbiter and the two work in partnership. Proxy_orbiters do all the 'heavy lifting' rendering the UI and this allows the remote device that is running the Touch Orbiter to be a much less powerful and very simple device indeed if needed.
+
What is a proxy_orbiter? Proxy_orbiter is built from the 'guts' of the full Orbiter you see on MD's but in this case its a UI'less piece of software that runs on the Core and its job is to render the UI for the Touch Orbiter that is running remotely on the target device. Each Touch Orbiter has an associated instance of proxy_orbiter and the two work in partnership. Proxy_orbiters do all the 'heavy lifting' of rendering the UI and interacting with the rest of the underlying system and this allows the remote device that is running the Touch Orbiter to be a much less powerful and very simple device indeed if needed.
  
 
=Reference Implementation for the CUWIN-3500 WinCE in-wall Touch Panel=
 
=Reference Implementation for the CUWIN-3500 WinCE in-wall Touch Panel=

Revision as of 09:15, 27 July 2010

Version Status Date Updated Updated By
710 Unknown N/A N/A
810 Unknown N/A N/A
1004 Unknown N/A N/A
1204 Unknown N/A N/A
1404 Unknown N/A N/A
Usage Information

Touch Orbiter - Preview

Touch Orbiter is a simple lite weight new way to build Orbiters for any type of Touch Driven device. It requires the minimum of resources from the target device and presents a very simple easy to understand codebase for anyone wishing to port Touch Orbiter to new hardware devices. This page has been setup to preview what Touch Orbiter is and the concepts behind its design and will be expanded over time to include full documentation for both user setup & configuration and also importantly details of the reference implementation for the CUWIN-3500 WinCE in-wall Touch Panel. This will include the source code for those that would like to try their hand at porting Touch Orbiter to a new device.

Touch Orbiter uses a new approach to building Orbiters for touch based devices that builds off many of the concepts embodied in the new Web Orbiter 2.0. Touch Orbiter is a lightweight simple application that runs on the target device that in turn communicates with a proxy_orbiter (see below for an explanation of what a proxy_orbiter is) process running on the Core. The concept of using a proxy_orbiter process running on the Core to do all of the 'heavy-lifting' graphical processing is borrowed from Web Orbiter 2.0 & the JavaMO too. Touch Orbiter also uses the new proxy_orbiter released with Web Orbiter 2.0 that supports the 'ANYNEWS' flag to provide a mechanism for the Touch Orbiter to find out if any screen updates have occurred.

In use the Touch Orbiter is indistinguishable from implementations that use a full Orbiter eg Pad Orbiter or the Nokia Orbiter but by comparison is a very light simple application that needs far fewer resources on the target machine and is massively simpler to implement too. This simplicity makes it a very simple process to port Touch Orbiter to new devices because the application only has to be able to receive and display png's or jpeg's, interact with a touch screen and communicate over a socket with an instance of the proxy_orbiter running on the Core. The proxy_orbiter abstracts all the functions of a full Orbiter and hands back screens or updates to screens as and when necessary.

What is a proxy_orbiter? Proxy_orbiter is built from the 'guts' of the full Orbiter you see on MD's but in this case its a UI'less piece of software that runs on the Core and its job is to render the UI for the Touch Orbiter that is running remotely on the target device. Each Touch Orbiter has an associated instance of proxy_orbiter and the two work in partnership. Proxy_orbiters do all the 'heavy lifting' of rendering the UI and interacting with the rest of the underlying system and this allows the remote device that is running the Touch Orbiter to be a much less powerful and very simple device indeed if needed.

Reference Implementation for the CUWIN-3500 WinCE in-wall Touch Panel

Installing build dependencies

apt-get install bison flex libgmp3-dev libmpfr-dev

Compiling

You can get the source code from SVN. The source code includes everything you need to build OrbiterCE.exe.

Two targets can be built: arm and x86 (Windows CE in both cases, not desktop Windows).

Just type either make all-arm or make all-x86, depending on what platform you need, get a few trucks of coffee, and wait*.

The first time you run make, it will download, build, and install CE GCC, zlib, libpng and libjpeg. Then, it will builder OrbiterCE.exe in the directory OrbiterCE. For CE GCC it will need root privileges. Sudo is used for this purpose, so it may ask for your password after CE GCC is downloaded, before it is built.

When the build is done, a directory called TouchOrbiter, which will contain all the files in a subdirectory called arm or x86, depending on what you built. Copy the arm or x86 directory to your Windows CE device. Before you copy it, be sure to edit Orbiter.ini and set the IP of your router and the port of the Proxy_Orbiter you want to connect to.

The Touch Orbiter will run in full screen on the device. To exit it, tap and hold your finger on the screen, and a dialog box will show up asking if you want to close the application.

If you want to build both arm and x86 binaries, you need to do a make clean in between, because everything is built in the same place and if you don't, you'll see very voodoo errors.

Background

Why choose the cuwin-3500? Well we happened to have one... which is a good reason ;-)... also its a pretty common low-ish spec WinCE device and so it seemed like a good machine to do an implementation for.

Orbiter Ini File

This file is in ASCII format with DOS line endings. Don't convert it to UCS-16, even though Windows CE likes it.

[BusyCursor]
AnchorTop=Center
AnchorLeft=Center
OffsetX=0
OffsetY=0
Visible=Yes
CursorSet=GraySpinner

[Network]
ServerIP=192.168.80.1
ServerPort=3464

In the initial implementation, the Anchor* and Offset* options aren't used. These options are meant to allow you to customize the position of the waiting cursor. While CursorSet is used, the sizes and numbers of the images in the specified directory are hard coded in source.

Images of Touch Orbiter running on a CUWIN-3500

The cuwin-3500 in-wall panel running Touch Orbiter (with 2 ACT ZWave light switches to the left)

Touch orbiter cuwin3500 1.JPG

Closeup view of the cuwin-3500 running Touch Orbiter (Sky STB Control Screen displayed)

Touch Orbiter on cuwin-3500 closeup.JPG