Monday, November 30, 2009

Phome: a new generation home phone

It’s been a while since my first post. I had promised myself to dedicate the right time and efforts in order to regularly write articles about my technology interests, but unfortunately I failed. I’ve been a lot busy in the last two months. Precisely, not just in the last two months, but in the last ten: a part from finishing my University exams, I worked almost every day (and night) on my Master Degree Thesis. Now, I got everything finished.
Here’s a description of what I developed, maybe some of you may find it interesting.

The beginning: the digital house of the future

Everything started in December 2008. I was looking for an idea to participate to the international contest SPARKS Will Fly 2009, organized by Microsoft to promote its embedded technologies among hobbyists developers and technology geeks. The contest’s theme was the Digital House of the future: to participate one had to submit a 1-3-page paper that outlined an embedded project that could be built using Microsoft Embedded technologies such as Windows Embedded CE 6.0 R2, Visual Studio 2005 and an EmbeddedSpark Kit (VIA ARTiGO A1000 Barebone Pico-ITX Builder Kit).

The basic idea was suggested to me by my 80-years-old grandmother, after the ordinary “tech-lesson” we had almost every evening, due to her difficulties using mobile phones, TV+VCR+DVD remote controllers, or any other technological device. I had a vision of a possible partial solution to a problem that people continuously faces every day.

We are surrounded by a huge amount of communication devices: home telephone, mobile/smart phones, fax, Instant Messaging applications, web browsers, E-Mail clients, VoIP software, Media Centers, gaming consoles, etc. Beyond the connection line there is the whole world, but often all these technologies are designed to be used just by a minority of family members, for young technology-minded people and always on-the-move: children, teenagers, parents. And the others? Aged people, technology-scared housewives, people with disabilities, people who have no in-house tech-children, people who think that sending an SMS or surfing the web is too much difficult? Why one’s grandmother cannot chat, surf on the web or send an E-Mail or an SMS? And what if she lives alone and has some disabilities (e.g. deafness, blindness, etc.) and would like to call somebody, keep in touch with relatives or receive phone-calls?

Almost all communication devices are too much difficult to be used for non-technologic people and offer their functionalities in inaccessible ways, with hundreds of buttons, menus, sub-menus, options. Each device is different from the others (user interfaces are complex and require dedicated training before it is possible to use their functionalities) and rarely they can share data in an easy and automatic way or let inter-communication processes take place.

What if something could manage all communication tasks in a consistent, automatic, easy and accessible way for all family members?

Here’s the paper submitted in January 2009 to contest’s first round: Home Communication Concentrator (HCC).

HCC: contest prototype

Home Communication Concentrator’s vision consists of a wired/wireless network of embedded devices with touch-screen display, which manages home communication tasks for non-technologic people especially. Devices can be placed wherever is most suitable for one’s needs and good-looking according to one’s house architectural styles, on flat surfaces or hung to walls.

HCC device main activity is to monitor and manage home communication tasks:
  • phone calls / video calls / VOIP
  • E-Mail messages
  • Instant Messaging and chat sessions
  • Web browsing
  • Contact list / Calendars / To-Do list
All activities can be controlled directly via natural voice commands or by touching the display. User interface is very simple and does not need any training: doing any of the activity is as simple as making a phone call (or even simpler). The system can interact with the user by voice and sounds and/or by text messages and images on the display.
While not in use, an HCC device can be used as a digital picture for photo slideshows, video playback or almost any purpose someone can think of (it is possible to extend stand-by activities with custom widgets).

The proposed idea passed the first round judgment (just 50 entries on more than 150) and between January and March 2009 I started to develop a working prototype of the system, using Windows Embedded CE 6.0 R2, Visual Studio 2005 and the VIA Artigo Kit. To participate to contest’s second round, one had to submit a 2-minutes video showing the working device.
My HCC’s video is available here. And here there is the accompanying presentation paper.

Unfortunately the work didn’t pass to the final round, meanwhile I shown the “proof-of-concept” prototype to a professor of mine at the Polytechnic of Turin, Giovanni Malnati, and he agreed to let me continue the work in my Information Technology Engineering Master Degree thesis. Thanks to him, to Beppe Platania (Beps Engineering) and to Raffaele Menolascino (Microsoft), I developed my thesis hosted by Microsoft Innovation Center Torino.

Phome: thesis, technologies and architecture

Thesis main goal was to design and develop a prototypal embedded system to manage communication tasks, which in a near future could become a new generation home-phone. The system had to make modern communication technologies such as Internet, Mobile Phones, E-Mail, SMS and Telephone easy and accessible to all family members, for aged and non-technologic people especially. Everything had to be implemented using existing technologies (Microsoft Embedded, especially) in order to reduce costs and have a little time-to-market.

Due to many problems faced during the development of the contest’s prototype, particularly the lack of a rich-user-interface framework in Windows Embedded CE and a limited hardware kit (Bluetooth USB dongle compatibility problems, little touch-screen display, limited network capabilities), for the thesis work I decided to switch to another Microsoft Embedded technology and another hardware platform. So the new prototype has been implemented using an Asus EeeTop device, equipped with a custom Microsoft Windows Embedded Standard (WES) image. Telephony features are provided by a Bluetooth enabled HTC Touch Diamond mobile phone, based on Microsoft Windows Mobile 6.1 operating system.

is a multi-purpose, all-in-one and good-looking new generation home-phone: it can manage phone calls, phonebook, SMS, E-Mails, Web Browser and Photos (digital frame) through an intuitive, easy and touch-friendly user interface, especially designed for aged and/or non-technologic people, which requires just a minimum effort to learn how to use it. The user interface, among other things, includes a Virtual Keyboard and a Virtual Numpad to let the system be used without external keyboard/mouse, a predictive large vocabulary input system and Text-To-Speech helper features.

Telephone and SMS features are provided by a Bluetooth mobile phone: Phome is a “Home” Bluetooth Headset unit that, when connected to a device, becomes its wireless speakerphone. Thanks to the Phome Mobile Service, a custom Bluetooth profile based on an ad-hoc client/server protocol, it represents a simple and intuitive remote control interface for mobile phones, letting aged people to use these devices to make phone calls, send/receive SMS messages or managing the phonebook through a simple and eyesight-friendly interface. The profile has been introduced to abstract the implementation from a particular mobile phone and its operating system, making Phome potentially compatible with any Bluetooth mobile phone.
The prototype has been implemented on Windows Mobile based phones (using .NET Compact Framework 3.5), but a feasibility study has been conducted on Android and Java J2ME platforms as well.

To add Bluetooth connectivity to the EeeTop, a Bluetooth USB adapter based on Widcomm stack has been used: the Widcomm stack has been chosen because it’s the only stack which gives free and well documented API that developers can use to access low-level parts, audio SCO connection included, and which let me to re-implement the Bluetooth Headset profile according to standard specifications, and to control audio routing using Win32 Multimedia API.

In addition to the WES system image, I designed and implemented:
  • a Windows Presentation Foundation application, PhomeUI, which acts as the system shell and replaces the native Windows shell “explorer”; it has been designed with a layered and modular architecture, using some recent design pattern like Model-View-ViewModel (MVVM), Separated Presentation and Composite Application, in order to support designer/developer roles separation, expansions/plug-ins, testing and a rich-user-interface framework (that let me develop all the user interface in less than two months, while working on all the other system components).
  • shared libraries (some native C++ and some managed C#) that provide the shell:
    • Bluetooth management + profiles (native)
    • Bluetooth audio management (native)
    • 3-tier database access layer to MS-SQL CE db
    • Many custom WPF UI controls
    • Basic shell and application modules functions such as events, commands, Bluetooth Manager, Audio Manager, E-Mail Manager/POP3 Client, Settings Manager, MSAPI 5.1 Text-To-Speech)
    • Basic UI functionalities (run-time loaded modules and composite user interface, Module Manager, Virtual Keyboard/Numpad and other UI controls)
  • a .NET Compact Framework 3.5 application, PhomeServiceServer, which implements the custom Bluetooth Profile Phome Mobile Service on Windows Mobile 6.0 (or greater) devices.
  • sample application modules, all developed with the MVVM pattern, which provide the end-user:
    • phone management functionalities (phone call dialing/answer, phonebook, favorite numbers);
    • SMS management (received, sent, draft, composition, Virtual Keyboard + Predictive Input aids);
    • E-Mail management (multi-POP3 account support, received/sent/draft messages, composition);
    • Phome Device Settings/one-touch Bluetooth configuration;
    • Home screen
    • Web Browser (based on Google Chromium project, integrated in WPF using a modified open-source wrapper which make it usable with the virtual keyboard);
    • Photo Album (photo viewer and full screen slideshow).

Here are some screenshots and photo taken of the device and its touch-enabled user interface during the development stage.


The implemented prototype system has got a minimum set of sample features, which let people and developers to evaluate its behavior in a common house environment. The goals were not to obtain a complete and working device, but to show that such kind of easy-to-use devices can be built today, with existent hardware and software technologies, despite the thousands of complicated communication device that surrounds us every day.

Obviously there’s plenty room for improvements and I already have some ideas for future developments and better user-machine interaction and house-environment integration, but for now I’m very satisfied about the reached results, the Master Degree and happy about the fact that now my grandmother can send and receive SMS/E-mails and make phone calls using its mobile phone with just few taps on Phome.

Wednesday, September 9, 2009

A new adventure

Hello to everybody!
This is my first post on my first public blog. I always wanted to have a place to write some of my thoughts and to share some of my knowledge about technology and software development, in the hope that somebody could find something interesting and useful. But unfortunately I had (and still have) very little time to do such things.

Whenever I want to do something, I usually try to get it done in the best way I can: if I know I can't do it, even before starting, then I don't start at all.

Now I have decided to start blogging, in the hope that beginning on this particular day (09/09/09) will help me to do it in the best way I can, dedicating the right efforts and time to write something about me, about my hobbies and about my work: engineering, computer science, technology and software development.

As the name of the blog itself may suggests, my interests focus on Embedded development, using Microsoft technologies, to be more specific, and all the world around them: Windows CE, Windows Mobile, Windows Embedded. Additionally, I love databases, graphics and web development, so this blog will cover also issues about SQL Server, ASP.NET, WPF, Silverlight and Windows applications development in general.

Please feel free to make comments and/or give suggestions about anything you think I could have done better or that I completely misunderstood. Of course, also comments about things you may like are appreciated!