[ale] [dmuse at 4accesscommunications.com: 4access communications payment terminal project]

Chris Farris chris at room17.com
Mon Oct 4 10:58:49 EDT 2004


If anyone is looking for some moon lighting work....

Chris

----- Forwarded message from David Muse <dmuse at 4accesscommunications.com> -----

Date: Fri, 1 Oct 2004 10:04:35 -0400
From: David Muse <dmuse at 4accesscommunications.com>
Subject: 4access communications payment terminal project

Chris,

Persuant to our discussion on the phone, here's a summary of our project:

We're working on a point-of-sale payment terminal.  You know how at Wal Mart, the machine you swipe your credit card through?  We're making one of those.  Ours is more sophisticated though.  It accepts checks and credit cards, has a built-in printer and a large LCD screen.  Also, ours is clerk-activated.  You wouldn't swipe your card or insert your check, the clerk behind the counter would.

Some marketing info, including photos, is available at our web site: www.4access-comm.com

Here's a summary of the hardware we're using:

	* Intel PXA-255 xscale processor
	* 16mb flash
	* 32mb ram
	* Cirrus Logic Ethernet
	* Silicon Labs si2456 modem
	* USB port
	* 2 serial ports
	* custom serial printer
	* custom check reader
		The check reader consists of a motor and pulleys to move the
		check, a scanner to capture an image of the check, a micr reader
		to read the numbers off of the bottom of the check, and a
		small processor to control all of these parts.
	* custom card swipe mechanism
	* custom key pad
	* hantronix 320x240 4bpp grayscale lcd
	* symbol barcode scanner (serial)
	* logitech quickcam pro 4000 (usb)

We're using an ARM Linux kernel with custom device drivers for the ethernet, modem, check reader, card swipe, keypad and lcd.

Above the kernel level, we're using the following libraries and software:

	* uClibc C-library (http://www.uclibc.org)
	* busybox (http://www.busybox.net)
	* tinylogin (http://tinylogin.busybox.net)
	* microwindows (http://www.microwindows.org)
	* rudiments C++ foundation classes (http://rudiments.sourceforge.net)

Busybox and tinylogin provide a core linux system (init, getty, shell, most shell commands, etc.)  We use several other bits of open source software for system-level utilities: udhcp, rsync, dillon's cron, ntpclient, etc.

On top of rudiments, microwindows and uClibc, we have built a framework of C++ classes for writing applications.  Here are a few of the classes and child classes found in the framework:

	checkreader (generic check reader interface class)
		orioncheckreader
		magtekencheck2500checkreader
		magtekmicrimagecheckreader
	msr (generic magnetic stripe reader interface class)
		orionmsr
		amc31bmsr
	processor (generic check/credit card processor interface class)
		echo
		demo
	userinterface (generic user interface class class)
		textuserinterface
		mwuserinterface

Applications can be coded against the generic interfaces.  Which implementataion of that interface that the app uses is determined at runtime by an entry in a config file.  Support for new devices processors is achieved by writing a new implementation of the generic interface.

We have several applications on our terminal:
	Controller App - the "main" app, does some behind-the-scenes work
				and hands off control of the terminal to
				other apps, depending on whether the clerk
				swipes a credit card or inserts a check
	Check App - prompts clerk for amount, drivers license info, collects
			check data and image from checkreader device,
			authorizes the transaction with a processor,
			prints a receipt
	Card App - prompts clerk for amount, drivers license info, collects
			card data from msr device, authorizes the transaction
			with a processor, prints a receipt
	Config App - allows a manager to configure the apps on the terminal
			and has a few other special functions

We have developed 2 prototype terminals and are currently developing a third.  The hardware is nearly ready.  On the software front, each app has a set of loose ends that need to be tied up and ther a few major development tasks left as well.  Currently, I'm the only developer, I'm facing an end-of-November deadline and I need to recruit a staff of experienced developers to help me get the job done.

The preferred skill set for this job is (in order of descending importance):
	* the ability to quickly learn and work with new tools,
		frameworks and API's
	* strong object-oriented programming in C++
	* understanding of issues specific to embedded applications
		(ie. speed vs. size vs. extensibility tradeoffs)
	* understanding of basic unix or linux system administration
		(ie. users and groups, directory structure, file permissions)
	* understanding of GNU compiler toolchain, autoconf, make, etc.
	* some serial line, modem or socket programming experience
	* some user-interface toolkit experience
		(microwindows, X-windows, GTK, QT, etc.)

Please review this information and get back to me with your impressions.

Thanks,

David Muse
dmuse at 4accesscommunications.com

----- End forwarded message -----

-- 
Chris Farris				chris at room17.com	
"Nothing is more pitiful or more funny than a flock of repentant
politicians in full flight," 		- Rep. David R. Obey (D-WI)



More information about the Ale mailing list