KeyTrapper, as its name suggests, is an
interesting key trap utility that is designed
to capture the key press events off a mobile
phone and transmit them over to a desktop
PC running Windows NT. KeyTrapper was intended
to be used as a part of a larger mobile
application being developed at the customers
end. ADI’s Mobile-Wireless and
Embedded expertise were engaged in the development
and deployment of this crucial component
of the parent application.
Based on the requirements, we worked out
an efficient design which matched the performance
expectations from the solution. According
to our design, the asynchronous connectivity
between the phone and the PC is through
Bluetooth technology. The solution setup
required that the PC and the phone first
be paired using to Bluetooth standard protocols.
Once captured, the key press event from
the phone is transmitted and then translated
on the PC based on a pre-configured key
mapping. The process of key capture and
transmission was under tight performance
requirements of latency times – less
than 1/24th of a second.
This solution was designed and developed
as a 2 part application – one running
over the phone for key trapping and transmission,
and the other executing over the PC for
key receiving and translation. This solution
was targeted at Symbian based smart phones
which are the current rage in mobile information
devices. The key trapping routine for the
phone was developed under the VC++ environment
coupled with the Symbian SDK. The smart
phones involved in the process of development
were Nokia 6600 and Nokia 3650. This Symbian
application running on the phone would transmits
Key events – KeyUp or KeyDown, along
with the key scan code to the desktop PC.
The transmission was in the form of strings,
and was handeled by the Bluetooth Client
Controller interface. The application running
on the phone would also transmit PING commands
at regular intervals such that the service
running on the PC would discover if a connection
was lost.
The desktop counterpart of the solution
was developed as an NT service that could
execute over Windows XP and Windows 2000.
This NT service was made available as a
desktop tray icon and once started, the
service would maintain an asynchronous Bluetooth
connection with the phone, generating keyboard
events over the PC in reaction to key press
events received from the phone. According
to the requirements, the key mappings between
the phone and the PC were user-configurable
where the user could define custom key mappings
in a configuration file.
The service application listens on a virtual
Serial COM port (created by the Bluetooth
device driver) for any incoming data. On
receiving the data, the service checks the
type of key event received (KeyDown or KeyUp)
and based on the received key scan code
it retrieves the corresponding mapped key
value from the configuration file. The retrieved
key code for the PC is then posted into
the system keyboard buffer in the form of
a Key event (KeyDown or KeyUp).
An interesting scenario handled here was
that of a continuous key press on the phone.
This would generate a single KeyDown event
for the entire duration of key press, and
a single KeyUp event once the key was released.
In order to interpret the continuous key
press over the PC, on receipt of the first
KeyDown a thread is spawned that repeatedly
generates KeyDown events, of the last received
key code; over the PC, and this continues
till the arrival of the corresponding KeyUp
event from the phone. An event timeout would
be registered if the spawned thread does
not receive a corresponding KeyUp event
or a PING command.
The development phase was followed by a
detailed testing cycle. Since KeyTrapper
was to be used as a key component for its
parent application, it was expected to offer
robust and error free operations. The testing
phase included elaborate Installation, UI,
Unit, Functionality, and Regression Testing
modules.
KeyTrapper designed and developed for
a small feature set involved a short development
period of 2 weeks and engaged a team of
one manager, one developer and a QA. Within
this short time span, an application prototype
was developed aggressively over 4 days,
with the final tested stable solution delivered
in the next week. We also offered a support
period of one calendar month during which
minor functionality changes were carried
out. Our timely quality deliveries of the
prototype and the final solution helped
the customer meet his schedules thus adding
another feather to our customer satisfaction
levels and opening up future business prospects
for us. |