I have been working with a local company in the development of a desktop office phone system. As part of that project, I have also designed a companion feature telephone.
The photo above shows the actual telephone, as well as the front-panel view of a simulator that I developed in order to proceed with software development months before the actual hardware was available. The simulator also provides comprehensive debugging capabilities, and continues to be used in ongoing devlopment.
This telephone is quite unique - although it contains only a low-cost "caller-ID" processor, I have implemented a 16-bit virtual machine which allows it to run a fairly complex application. Some of the features which this phone performs are:
I was the prime developer on this project, and the only software developer, and as such, I specified or implemented virtually all aspects of the phone. Here are some of the highlights:
HARDWARE SPECIFICATION: In the early stages of the project, I worked closely with the hardware designer to specify the electrical design of the phone.
CUSTOM LCD: I designed a custom LCD panel for this phone. This included development of a PC based layout tool to visually design the LCD, which also doubled as a display simulator so that we could test the design in operation (it took several months to obtain samples of the actual LCD panel). The simulation portion of this tool was later incorporated into the complete phone simulator.
VIRTUAL MACHINE: For this project, I adapted my "C-FLEA" virtual 16-bit prcoessor designed to run C. All application software was developed using my own Micro-C compiler and related development tools.
OPERATING KERNEL: This is a block of code which runs on the caller-id chip, and provides low-level control of the phone's hardware, as well as the platform for the virtual machine. It is written in assembly language for the caller-id chips own processor instruction set.
APPLICATION: This is the higher-level code which defines the user interface and visible functionality of the phone. This is written in C, and can be updated by download over the phone line.
SIMULATOR: To aid in the rapid development of the phone, very early in the project I developed a comprehensive simulation of the phone at the application level. Presenting the same environment as the resident kernel, this allows the phone application to be run on a PC, and provides detailed logging and debugging facilities not available when running on the actual caller-id chip.
TEST TOOLS: Over the course of the project, I developed several test tools, such as downloaders, and a custom FSK message generation tool. This allowed me to verify and debug the operation of the phone before support for these features was made available on the host PBX.