Aphasia

From Openmoko

Revision as of 22:49, 19 June 2009 by Skvamme (Talk | contribs)

Jump to: navigation, search

Three years ago Jane had a stroke which made her unable to speak. Her intelligence is unaffected, but she cannot find the words.

How can she use a mobile phone to communicate with her husband when the words are gone? When her husband is on the phone, asking - What are you doing? Do you want to have lunch with me?

To answer his first question about what she is doing, she’s sending him a small picture, showing a cup of tea. And then, a second picture with a heart, and he answers he loves her too. Then he asks if they can meet, he want to have a cup of tea as well, and she answers by sending him her GPS location and he can hear the street address of the small restaurant where she is right now. If there was a phone that made all this possible, I bet she would want one. You've read a short story, capturing what this project is all about -- to build a very special mobile phone.

Contents

Basics

The goal of a clean and uncluttered finger friendly GUI without menus is not an easy task, but after some trial and error (the 3d-flip source is here) I think I got the general idea. The metaphor of moving around in 2 dimensions by swiping a finger from one corner of the screen to another gave me the space I needed for the different applications such as Dialer, SMS, GPS, SketchApp and a Keyboard. I also made a DXF2ERL converter. With it I can draw GUI components in a CAD program and from the vector file automatically generate Erlang source code. DXF2ERL is here.

Why Erlang?

1. Concurrency programming is more fun than OOP. And apparently Kay himself early on described his early conception of objects as being "little computers" that would communicate with each other via messages.

2. Hot Code loading.

3. Supports multi core processors.

4. Ex11, the Erlang X11 client implementation makes the Aphasia GUI latency-free, and with an instant feedback you are not used to get on any phone.

The first step, the dialer

FSO takes care of most of the functionality when it comes to dial, answer, ring-tone etc. All I had to do was to create a clean dialer GUI. It sits in the space you are at when you start fresh. There is no presentation of the number you are dialing, just the buttons with figures and * and #. To place the call you dial the number and press_and_hold the green button. To hang up you press_and_hold the red button. When there is an incoming call the GUI will move to this space, and you press_and_hold the green button. Source code is here.

Dialer.jpeg

Swipe the screen to the right and you will go to the...

Clock, Battery and GSM Signal

Clock.jpeg

Some nice-to-have widgets. Push_and_hold the clock face and it adjusts to GPS-time. Touch the battery and it will force fast_charge, even from a dumb USB_charger. The green bar in the antenna shows 0-100% GSM signal strength. Source code is here.

Swipe the screen to the right and you will go to the...

GPS reticle

Reticle.jpeg

Each button can hold a location (waypoint). It could be home, school, your hotel or your favourite Chanterelle (Cantharellus cibarius) spot. Push_and_hold a button to store your current location. The reticle goes red when you have satellites, and a target-point slides at the reticle horizontal line. Keep it in center and you are heading at the target. Close enough (within 100 square meters) your position will show on the reticle surface with the target locked in reticle center. Source code is here.

Make sure you have Gllin, else Install gllin_1.1+r931-r0_om-gta01.ipk and gpsd.

E_call

E call.jpeg

The simplest possible phone. Press the button and you are dialing 911, 112, your mother...

Configurator

In a previous incarnation of this page I thought about an application on the phone that could, in an intelligent way, choose among thousands of images when the user started to make a simple sketch.

Now I have another idea. You talk to different people about different things. You talk to you doctor about how you feel and getting better or worse, improvements and maybe you agree on a date to visit him or her.

You talk to your husband or wife about dinner, love, life and kids.

With your best friend it is mostly about baseball, shopping, motorcycles or computers.

So, create an application on a PC that can be used to configure the phone GUI to suit the one you are talking to. If you are about to talk to someone new, take the time to prepare the call by collecting the relevant images and lay them out on the phone.

SMS

Send and receive SMS. Address book included.

Finger Keyboard

During a phone call, type a word and press OK, and a database-application takes the word and returns the sound-clip that is sent to your partner.

This keyboard should also work as a normal keyboard when typing SMS.

Reminder

When the builtin GPS indicates you are at the bus stop, a quick look at your phone should remind you that it is bus 93 you are taking and nothing else.

Host-based application is used for composing events that could be geograpic and/or time triggered. Host application and phone reminder are synchronized with erlang hot code loading.

Personal tools

Three years ago Jane had a stroke which made her unable to speak. Her intelligence is unaffected, but she cannot find the words.

How can she use a mobile phone to communicate with her husband when the words are gone? When her husband is on the phone, asking - What are you doing? Do you want to have lunch with me?

To answer his first question about what she is doing, she’s sending him a small picture, showing a cup of tea. And then, a second picture with a heart, and he answers he loves her too. Then he asks if they can meet, he want to have a cup of tea as well, and she answers by sending him her GPS location and he can hear the street address of the small restaurant where she is right now. If there was a phone that made all this possible, I bet she would want one. You've read a short story, capturing what this project is all about -- to build a very special mobile phone.

Basics

The goal of a clean and uncluttered finger friendly GUI without menus is not an easy task, but after some trial and error (the 3d-flip source is here) I think I got the general idea. The metaphor of moving around in 2 dimensions by swiping a finger from one corner of the screen to another gave me the space I needed for the different applications such as Dialer, SMS, GPS, SketchApp and a Keyboard. I also made a DXF2ERL converter. With it I can draw GUI components in a CAD program and from the vector file automatically generate Erlang source code. DXF2ERL is here.

Why Erlang?

1. Concurrency programming is more fun than OOP. And apparently Kay himself early on described his early conception of objects as being "little computers" that would communicate with each other via messages.

2. Hot Code loading.

3. Supports multi core processors.

4. Ex11, the Erlang X11 client implementation makes the Aphasia GUI latency-free, and with an instant feedback you are not used to get on any phone.

The first step, the dialer

FSO takes care of most of the functionality when it comes to dial, answer, ring-tone etc. All I had to do was to create a clean dialer GUI. It sits in the space you are at when you start fresh. There is no presentation of the number you are dialing, just the buttons with figures and * and #. To place the call you dial the number and press_and_hold the green button. To hang up you press_and_hold the red button. When there is an incoming call the GUI will move to this space, and you press_and_hold the green button. Source code is here.

Dialer.jpeg

Swipe the screen to the right and you will go to the...

Clock, Battery and GSM Signal

Clock.jpeg

Some nice-to-have widgets. Push_and_hold the clock face and it adjusts to GPS-time. Touch the battery and it will force fast_charge, even from a dumb USB_charger. The green bar in the antenna shows 0-100% GSM signal strength. Source code is here.

Swipe the screen to the right and you will go to the...

GPS reticle

Reticle.jpeg

Each button can hold a location (waypoint). It could be home, school, your hotel or your favourite Chanterelle (Cantharellus cibarius) spot. Push_and_hold a button to store your current location. The reticle goes red when you have satellites, and a target-point slides at the reticle horizontal line. Keep it in center and you are heading at the target. Close enough (within 100 square meters) your position will show on the reticle surface with the target locked in reticle center. Source code is here.

Make sure you have Gllin, else Install gllin_1.1+r931-r0_om-gta01.ipk and gpsd.

E_call

E call.jpeg

The simplest possible phone. Press the button and you are dialing 911, 112, your mother...

Configurator

In a previous incarnation of this page I thought about an application on the phone that could, in an intelligent way, choose among thousands of images when the user started to make a simple sketch.

Now I have another idea. You talk to different people about different things. You talk to you doctor about how you feel and getting better or worse, improvements and maybe you agree on a date to visit him or her.

You talk to your husband or wife about dinner, love, life and kids.

With your best friend it is mostly about baseball, shopping, motorcycles or computers.

So, create an application on a PC that can be used to configure the phone GUI to suit the one you are talking to. If you are about to talk to someone new, take the time to prepare the call by collecting the relevant images and lay them out on the phone.

SMS

Send and receive SMS. Address book included.

Finger Keyboard

During a phone call, type a word and press OK, and a database-application takes the word and returns the sound-clip that is sent to your partner.

This keyboard should also work as a normal keyboard when typing SMS.

Reminder

When the builtin GPS indicates you are at the bus stop, a quick look at your phone should remind you that it is bus 93 you are taking and nothing else.

Host-based application is used for composing events that could be geograpic and/or time triggered. Host application and phone reminder are synchronized with erlang hot code loading.