Here are some of the contracts which Dave/DDS has performed. Note
that in recent years there have been many more small contracts, and I have
not kept this document entirely up to date.
Time Lapse Video Controller
The time lapse video controller is an 8051 based control box, which
connects to a video camera using the LANC (Control-L) protocol. The
controller is configured with a PC based interface program (serial
connection), and can then be deployed (with the camera) to perform
unattended video "snapshots" according to it's programmed mission
schedule and configuration. The device controls all functions of the
camera (including power ON/OFF), and contains a real-time clock
which allows it to "Wake-up" and perform its functions according to
a time schedule. During inactive periods, the controller switches to
a power-down mode, to conserve battery power. The controller supports
additional inputs which can be configured to control aspects of the
mission, as well as digital (relay) outputs which can be activated in
accordance with the mission. An optional lighting system can be configured
for PWM gradual On/Off to conserve the life of incandescent bulbs. This
system is currently in use by several research institutions.
DDS role in this project:
- Provide expertise on LANC interfacing and capabilities.
- Design controller hardware and build two prototypes.
- Design and implement all software (firmware and PC interface).
- Design and implement a "training" version of the PC interfaceBR
which simulated the system with no physical controller present.
- Co-Author a paper describing the device for a Scientific Instruments
Journal.
[Note: This project was performed for "Environment Canada" - a branch of
the Canadian Government, who have graciously permitted me to make the final
deliverables available as an example of my work (see sample files)]
Small Office PABX Development
DDS works on an ongoing basis with an Ottawa based company in the
development of a small home/office PABX (Private Automatic Branch Exchange)
telephone system. As this is an ongoing project, DDS role continually
changes, however some of the hilites are:
Feature Telephone Set
Developed in cooperation with a local PABX vendor and an asian manufacturing
company, this high-functionality/low-cost telephone provides support for both
POTS (standard) and PABX specific features. This includes many features, soft
keys and displays, as well as enhanced caller-ID message parameters to provide
the PABX with direct control of the set displays and features via the FSK data
stream. The set's primary application is fully upgradable/downloadable (even
though the phone is based on a factory masked Caller-ID processor).
DDS role in this project:
- Specification and design of the user interface and system features. I
was given "full reign" to design the displays, key functions, menus and
other capabilities of the set, as well as the underlying functions and
features. The design was presented in a 40+ page document and approved
by the company (with minor revisions).
- Design and implement all set firmware, including:
- LIControl kernel, providing all basic services for control of the set's
display, keypad, line interface and other hardware functions.
- Virtual machine, which provides the ability to run an application from
serial EEPROM, allowing the set to be upgraded in the field.
- The primary application, which provides the default user interface,
menus and operating functions.
- Development/Specification of several hardware modifications to improve
the functionality of the set, including:
- Addition of an output latch on the keyboard scanner to displace functions
from CPU pins so that we could handle a larger LCD display matrix.
- A PWM ring tone generator, replacing the two-level (volume) fixed tone
ringer within the set with a fully programmable multi-level ringer
which can be customized by the user through configuration menus.
- Replacement of the existing hardware hold/release circuit with a
combination hardware/software solution which reduces cost, while
providing additional capabilities and features.
- Design and layout of a custom LCD panel for the set. This included the
development of a graphical LCD layout/mapping tool, which allows an
LCD panel to be visually designed, and the segment mapping and character
generator tables built in a matter of hours (instead of days/weeks).
This tool was first used to map and build tables for an existing display
provided by the manufacturer, and later to design and map a new custom
LCD panel. An emulation function was also provided, whereby this tool
can graphically emulate a new LCD (via a serial port connection to the
development board). This allowed the firmware development to proceed well
before the physical prototype display panel was available.
- Development of a comprehensive PC based simulator for the set, including:
- Complete simulation of the virtual machine and application, as well as
an operating PABX environment. The simulator runs exactly the same
application code as runs on the development board, and provided the
ability for the user to simulate ringing, tones, FSK messages, disconnect
clear and other physical functions which may occur on a telephone line.
- A detailed graphical representation of the set and user interface. This
allows a user to view the telephone set and displays on his PC screen,
and to activate keys and functions with only a mouse click. This was
used by the project manager and others within the company to experience
the human interface and to give me detailed feedback.
- A full set of debug tools and functions, including hardware indicators,
CPU register/memory editors, instruction display, trap/event monitors
and much more. This was instrumental in the rapid development of the
final application.
- Design and implement a PC based development test fixture which interfaces
with the PABX debug port, and provides access to all line features (loop
current, ringing, FSK data transmission, DTMF reception etc.). This allows
us to prototype interfaces not currently implemented in the PABX to test
the enhanced functionality of the set.
Telephone Switch Production Testers
These are PC based testers for a small "smart telephone switch" (PABX).
The tester interfaces with modified versions of the switches using custom
firmware to allow it to place calls, detect signals and otherwise
perform and verify all hardware functions of another (unmodified) unit
under test. A readable voltmeter was also incorporated into the tests to
allow the tester to verify power supplies and voltages. Two separate
testers were developed, for two different product models. The testers are
very flexible/configurable and have a comprehensive user interface allowing
the test operator to perform many different functions and tests, as well
as supporting an "automatic mode" where all functions are tested with
little operator intervention.
DDS role in this project:
- Participate in the test specification/requirements analysis.
- Design and implement all PC software for the tester.
- Design/Implement utility to boot-load the target system.
- Design/Implement utility to install and manage MAC addresses for
units with ethernet functionality.
- Ongoing development and maintenance as required.
Windmill Controller
This was a controller to handle mid sized (2-50KW) electric power
generating windmills. It handled Regulation, all Sensors, Yaw control (avoid
too little or too much wind), Emergency shutdown situations, and allowed
complete reporting and control via an internet connection.
DDS role in this project:
- Design and write all software.
- Built a "Windmill Simulator" to allow most testing from home.
- Perform final testing on site in Iroquois.
- Visit customer sites to investigate problems.
Police Chase Eliminator
The Police Chase Eliminator is a system proposed by a local Ottawa company
which would enable a police officer to remotely shut-down a vehicle via a radio
channel. It consists of a control unit in the police car, which has an operating
panel and a user interface allowing the officer to select a vehicle profile and
activate the various remote functions, as well as a low-cost module unit which
resides in the target vehicles, and has the capability to flash the 4-way lights
as well as to shut down or slow the engine. Additionally, a hand-held remote
unit allows the officer to activate certain key functions on his control unit
while he is outside of his cruiser. There are many features and capability
of this system, which are too numerous to include here.
DDS role in this project:
- Help define the original system design and hardware specification.
- Design and implement all software/firmware in all units.
- Design and supply the system for field programming of the units.
- Build displays and jigs for testing and demonstration of the prototype
units.
- Re-engineer hardware prototypes supplied by third party to correct
several design and construction flaws.
Keychain Device Programmer
This is a device programmer (unit for programming flash microcontrollers)
which is small enough to attach to a keychain! It is loaded with the code
to program from a PC, and can then be carried by a field service technician
to install instant firmware updates at remote sites without having access
to a computer (PC).
DDS role in this project:
- Design and implement all firmware in the device programmer, including
the device programming algorithms.
- Design and implement PC interface software which is used to select the
device type, files to load, and program the keychain programmer with
this information.
Intelligent Device Programming "Dongle"
This is a double-headed "Dongle", which can be attached to either a PC
serial or parallel port, and supports a command set used for in-circuit
programming of flash microcontrollers. Designed as a compatible replacement
for a popular vendors serial-only dongle, this unit featured a larger
command set with more capabilities, support for more devices, and much
higher programming speed.
DDS role in this project:
- Design and implement all firmware in the device programmer.
- Design and implement PC interface software which could control the
device in either serial or parallel interface mode.
Medical Device Timer
This is a microprocessor (6805) controller replacement for a medical
device timer which had previously been implemented with discrete logic.
The upgrade was done to improve reliability and enhance the feature
content of the device. This timer is used to measure and control the
duration of radiation exposure of medical samples. Many failsafe and
failure detection functions were implemented, including monitoring the
radiation source, the rotation rate of the sample beaker, failsafe
limits on times, and monitoring of the timers own hardware and software
operations.
DDS role in this project:
- Participate in hardware design discussions.
- Design and implement all software in the timer.
- Extensive testing, including construction of test jigs etc.
EBT Retail Terminal
This is a point-of-sale terminal for processing EBT (Electronic Benefits
Transfer) cards. Implemented on a Verifone Tranz330, the EBT terminal has
many "modern" features including multiple printout reports, configuration
menus, statistics logging, user/cashier administration and more.
DDS role in this project:
- Design and implement all terminal application software.
- Develop these additional resources/tools:
- TCLP, a preprocessor/compiler for the Verifone Terminal Control
Language (TCL) to give it modern symbolic features (without this
tool, the project would not have been feasible).
- SIM330 a PC based simulator for the TRANZ330 terminal and pin pad
which provides comprehensive debugging capabilities.
- EBTHOST a PC based full-featured simulator for the customers host
network which provided many debugging capabilities not possible
on the actual host network.
- Participate in the certification process for this terminal.
- Ongoing development and maintenance as required.
EBT Voucher Clear Terminal
This is a TRANZ/TCL terminal application which handles the clearing of
EBT vouchers submitted by non-electronic retailers through a clearing
house. It is unique in that it has the capability to dynamically assume
the identify of the submitting retailer, and maintains log records and
statistics for each retailer. Otherwise features are similar to the EBT
terminal above.
DDS role in this project:
- Assist in the requirements analysis of the project.
- Design and implement all terminal application software.
- Participate in the certification process for this terminal.
- Ongoing development and maintenance as required.
Debit/Credit POS Terminal
This is a TRANZ/TCL application which implements a full Point Of Sale
terminal supporting Debit, Credit, EBT as well as proprietary cards.
Replacing an existing application, this terminal added many updated
features including: support for more cards, enhanced printout reports,
administration and configuration menus and more.
DDS role in this project:
- Design and implement all terminal application software.
- Develop these additional resources/tools:
- DUMP330, a utility to extract an existing application from a terminal
and recreate the original .UDL file used to load the terminal.
- TCLD, a decompiler, which reads a .UDL file and produces a TCLP
(symbolic TCL) source file. Includes features for automatically
generating symbols, as well as user supplied symbols/comments.
- Update the EBTHOST simulator to provide a complete host simulation
incorporating all transactions.
- MDT, a message debug terminal, which allows you to perform real-time
debugging with request/response messages and host communication.
- Participate in the certification process for this terminal.
- Ongoing development and maintenance as required.
Coupon Redemption Application
This TRANZ/TCL application is used to validate "coupons" for an internet
edition of a popular television game show. The communications protocol
was based on an XML format common to internet applications rather than
the BASE24 formal traditional to TRANZ/TCL financial applications.
DDS role in this project:
- Assist in the requirements analysis of the project.
- Assist in the host protocol specification.
- Design and implement all terminal application software.
- Develop a host simulator for the XML based protocol.
- Ongoing development and maintenance as required.
Stand Alone POS Capture Application
A custom TRANZ/TCL application developed for use in a remote situation
where the vendor did not have access to a network connection, this
application performs sale entry, capture of the customer card information,
and printing of a receipt. The customer manually clears the transactions
through his PC software after returning to his working location.
DDS role in this project:
- Assist in the requirements analysis of the project.
- Design and implement all terminal application software.
Network POS Interface
This job involved modification of an existing dial-up application for a
Verifone Omni3200 POS terminal to interface it to a local network through
an RS-232 serial concentrator.
DDS role in this project:
- Modify the low-level application drivers to interface through the RS-232
serial port to the concentrator. This involved building a state machine
and "faking" the modem responses back to the upper level application.
- Integrate modifications into a single firmware source code tree which
can be used to build either (Dial or RS-232) version of the terminal.
- Construct a "Serial TAP" to allow the serial/concentrator messages to
be monitored by the customer to debug problems with the concentrator
and network.
High-End POS Terminal
Operating as a member of a small team, DDS is involved in developing
the applications and support software to launch a high-end Point Of
Sale terminal currently being introduced into North America.
DDS role in this project:
- Initial design work to specify application/operating structure,
including a "hands on" PC based demo/mock-up of the system.
- Design of a general data management resource, and a compiler which
accepts data definitions and produces the various files needed to
manage the data from applications written in multiple languages.
- Design of a table-driven host interface module, with a compiler to
turn text descriptions of the host messages into binary parsing
tables. This included the design of a message template specification
language.
- Ongoing development.
Prototype Voice Over Ethernet
This was software and device drivers for audio codecs and an ethernet
controller chip, which demonstrated the feasibility and quality of
sending voice data over an ethernet network in real time. It was used
by the manufacturer of a small "smart telephone switch" (PABX) as the
basis for the development of an ethernet voice switching interface on
the unit (Development of this network interface was subsequently handed
back to DDS - see description above).
DDS role in this project:
- Design and Implement low level device drivers to communicate with
the audio-codecs and ethernet controllers.
- Design and implement higher-level software to perform network voice
transmission and switching using the devices described above, this
included a variable speed mediation scheme to compensate for minor
differences in voice data rates from system to system.
- Design and implement software to perform P&P (Plug and Play) setup
of the devices so that the prototype system could be operated on a
PC/DOS platform.
MP3 Audio Player
This MP3 player uses an IDE hard drive and an MP3 decoder chip to
provide instant access and playback to a large selection of music
which could be loaded from a PC.
H3DDS role in this project:';
- Design and implement a file system which would accommodate very
large hard drives, provide random-access, and could efficiently
allocate and re-use space, and work with the very limited RAM
buffer space available on an AVR microcontroller (128 bytes!).
- Design and implement PC based control software which communicates
with the device via parallel port, and permits the loading and
removing of MP3 audio files to and from the device.
- Design and implement low-level code to control the MP3 decoder
chip, as well as higher-level code to play audio by reading the
stored MP3 files on the hard drive and sending them to the MP3
decoder.
Diagnostic Tools
This was a small job, but it was quite interesting... A small technical
company had been asked to maintain and repair the 8085 based control boards
from a ships telegraph (the ornate lever that relays engine speed and
direction from the bridge to the engine room) on a cruise ship. Several
boards had failed, and there was no documentation or technical information
available.
DDS role in the project:
- Provide RAMless probe firmware which could map the ROM/RAM and I/O
ports of the system.
- Provide a higher level monitor which would allow the operator to
manually probe the system. We also did a small "basic" interpreter
which would let simple programs be written and entered so that I/O
lines could be repeatedly strobed etc.
- Once all hardware functions were determined, we provided an automated
diagnostic ROM which exercised all hardware functions (including a
600Hz interrupt) and provided a complete printed diagnostic report.
Gas Pump Data Retrieval
Another small job - A local government building required a means of
retrieving the logs and statistics generated by their gas pump from
an off-site location.
DDS role in the project:
- Review documentation and analyze the serial communications from the
existing DOS based data retrieval application to determine how to
obtain the data from the pump.
- Develop and install a small application to automatically retrieve the
information at a predefined time of day, and to append this information
to a log file which can be accessed over a wide area network. Several
configuration parameters were provided to accommodate potential
requirement changes identified by the customer.
Back to "About Dave".
Back to DDS main page.