Re: Phone functionality in GUI applications

2007-10-18 Thread Daniel Willmann
Hello Thomas,

On Thu, 18 Oct 2007 03:34:36 +0200
Thomas Seiler <[EMAIL PROTECTED]> wrote:

> (drawing board only ;-)
> 
> I would like to see a more generic "Context Service", that takes
> the various inputs of
> 
> - last known GPS longitude / latitude and speed
> - GSM Area Code and Cell ID and rate at which these codes change
> - ESSID of avaibale WLANS
> - Bluetooth MAC Addresses of nearby Workstations and other Handies

have a look at GeoClue: http://www.freedesktop.org/wiki/Software/GeoClue
This already provides some of the functionality you mention and new
backends are fairly easy to implement.

Regards,
Daniel Willmann


signature.asc
Description: PGP signature


Re: Phone functionality in GUI applications

2007-10-18 Thread Koen Kooi
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Rodolphe Ortalo schreef:
> Le jeudi 18 octobre 2007 à 02:19 +0200, Thomas Seiler a écrit :
>> Am 17.10.2007 um 13:58 schrieb Joachim Steiger:
> [...skipped...]
>>> [...] first it has to be a
>>> working phone.
>> Ok, then lets discuss what is all needed for a minimalistic interface  
>> to get the phone working:
>>
>> - GSM: trigger network registration,  get registration infos, signal  
>> registration info and signal strength updates
>> - SIM: get state, signal PIN entry required, enter pin
>> - VoiceCall: call number, end call, accept incomming, reject  
>> incomming,  signal for dialing, waiting, talking, busy and ringing
>>
>> Anything else ?
> 
> Personnally, I would (try to) add a GPS entry here as it's one of the
> main hardware innovation of modern "phones".
> 
>  - GPS: location available/not available, trigger acquisition, get last
> known location, (...?)

Both gpsd and gypsy already have a dbus interface for that, no need to reinvent 
the wheel
thare.

> 
> Apart from this (purely personal) subject, the following aspects are
> probably expected too in a working phone:
> 
>  - "Energy" state/requirements: power-line available, on battery, on low
> battery, low-energy target (for user-requested long duration)...
>  - (Data) Network availability (zero-cost/cheap/expensive)

Isn't that the territory of HAL+OHM?

> Lalo recommended looking at the existing Telepathy APIs. Any more
> precise pointers available? (Especially for the last point.)

IIRC maemo has a dbus connection interface ("connect to gprs", "connect to 
wifi", etc).


> 
> Rodolphe
> 
> 
> 
> 
> 

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFHFxMsMkyGM64RGpERAiVXAJ0WvbTGOLPrJcrSXV8YfUuCLkBeIQCeP5Ks
EA2cMeqxOLhhN9jy12QOspo=
=Es5A
-END PGP SIGNATURE-




Re: Phone functionality in GUI applications

2007-10-18 Thread Rodolphe Ortalo
Le jeudi 18 octobre 2007 à 02:19 +0200, Thomas Seiler a écrit :
> Am 17.10.2007 um 13:58 schrieb Joachim Steiger:
[...skipped...]
> > [...] first it has to be a
> > working phone.
> 
> Ok, then lets discuss what is all needed for a minimalistic interface  
> to get the phone working:
> 
> - GSM: trigger network registration,  get registration infos, signal  
> registration info and signal strength updates
> - SIM: get state, signal PIN entry required, enter pin
> - VoiceCall: call number, end call, accept incomming, reject  
> incomming,  signal for dialing, waiting, talking, busy and ringing
> 
> Anything else ?

Personnally, I would (try to) add a GPS entry here as it's one of the
main hardware innovation of modern "phones".

 - GPS: location available/not available, trigger acquisition, get last
known location, (...?)

Apart from this (purely personal) subject, the following aspects are
probably expected too in a working phone:

 - "Energy" state/requirements: power-line available, on battery, on low
battery, low-energy target (for user-requested long duration)...
 - (Data) Network availability (zero-cost/cheap/expensive)

Lalo recommended looking at the existing Telepathy APIs. Any more
precise pointers available? (Especially for the last point.)

Rodolphe






Re: Phone functionality in GUI applications

2007-10-17 Thread Lalo Martins
Please don't reinvent any wheels.  Use the Telepathy APIs for everything 
where it's applicable, and only invent new interfaces where it isn't.

best,
   Lalo Martins
-- 
  So many of our dreams at first seem impossible,
   then they seem improbable, and then, when we
   summon the will, they soon become inevitable.
   -
personal:http://lalo.hystericalraisins.net/
technical:http://www.hystericalraisins.net/
GNU: never give up freedom http://www.gnu.org/




Re: Phone functionality in GUI applications

2007-10-17 Thread Thomas Seiler


Am 16.10.2007 um 21:32 schrieb Rodolphe Ortalo:



What about adding GPS to the overall picture? Maybe that it's too  
early,

but if there are some interactions with the phone aspects, it would be
better to try to anticipate them. (Of course, only on the *drawing*
board.)


(drawing board only ;-)

I would like to see a more generic "Context Service", that takes
the various inputs of

- last known GPS longitude / latitude and speed
- GSM Area Code and Cell ID and rate at which these codes change
- ESSID of avaibale WLANS
- Bluetooth MAC Addresses of nearby Workstations and other Handies

and creates a context out if it, i.e.

- AtHome / AtWork/ AtUserConfiguredLocationX / Y / Z...
- Driving / Walking / Stationary
- Meeting with Boss / Near Workstation, etc...

at a later stage, these contexts could be linked to automatic actions:

Meeting with Boss => Mute Ringer
Driving => Speakerphone Mode, AutoAccept after 3 Rings, etc...
etc...




Thomas

Re: Phone functionality in GUI applications

2007-10-17 Thread Thomas Seiler


Am 17.10.2007 um 13:58 schrieb Joachim Steiger:


please do not overengineer this from the beginning, i think interfaces
should be added when being implemented.


Yes, sorry for this. I have exaggerated there. I wanted to show that
we are dealing with many interdependent state machines, and my point
is that a DBUS-interface for openmoko should be fine grained and
orthogonal rather than monolithic.

The rationale behind the fine grained idea is that it allows  
applications to
test for availability of specific functionality (i.e. GPS) using DBUS  
Introspection.

So we wont need a capability query layer.

The rationale behind orthogonality is that its easier to get going,  
test and extend.

We can start with a single state machine (i.e. SIM) and add others as we
move forward without changing what was done to drastically.


also note that gnome already has a way of handling network interfaces
when it comes to ip connectivity (see
http://www.gnome.org/projects/NetworkManager/)


Thanks for pointing that out. I somehow completely missed this.


i think we should make use of that/extend that functionality before
reinventing the wheel once again (remember, there are wifi with hidden
essid, wpa/wep/wpa2 and similar crap which needs to fit in there)


I like the idea to reuse and extend what is already there.
The GPRS IP Connectivity is a bit special, though.
I can see that applications that would benefit to know if network  
access is

"expensive" or "cheap" at the moment and change their behavior.

One other thing to keep in mind is the EAP-SIM Standard (RFC4186)
Its a method to authenticate yourself on a WPA Network with a SIM Card,
many hotspots in main stations and the like do support it.


i really do NOT wanna discourage anybody, but this just popped into my
mind while reading this.


Thanks for the reality check ;-)


[...] first it has to be a
working phone.


Ok, then lets discuss what is all needed for a minimalistic interface  
to get the phone working:


- GSM: trigger network registration,  get registration infos, signal  
registration info and signal strength updates

- SIM: get state, signal PIN entry required, enter pin
- VoiceCall: call number, end call, accept incomming, reject  
incomming,  signal for dialing, waiting, talking, busy and ringing


Anything else ?

Regards,
Thomas



Re: Phone functionality in GUI applications

2007-10-17 Thread Joachim Steiger
Thomas Seiler wrote:
[...]
> Similar Objects could be implemented for:
> 
> org.openmoko.GSMNetwork:
> org.openmoko.Ringer:
> org.openmoko.VoiceAudioRouting:
> org.openmoko.VoiceCall:
> org.openmoko.FaxCall (send and receive Faxes, integrate with CUPS ?)
> org.openmoko.DataCall (CSD Data Call to other Neo or normal modem)
> org.openmoko.Wlan (WLAN Present ? Power On / OFF, select ESSID)
> org.openmoko.GPRS (To set APN, set status)
> org.openmoko.USBNET (To sync?)
> org.openmoko.IPNetwork (General Information of kind of Connection
> org.openmoko.SIP that will be a lot of fun...
> org.openmoko.GPS (last known longitude, latitude, power on / off)
> org.openmoko.Location (more elaborate, higher level (i.e. Home, Work)


please do not overengineer this from the beginning, i think interfaces
should be added when being implemented.

also note that gnome already has a way of handling network interfaces
when it comes to ip connectivity (see
http://www.gnome.org/projects/NetworkManager/)

i think we should make use of that/extend that functionality before
reinventing the wheel once again (remember, there are wifi with hidden
essid, wpa/wep/wpa2 and similar crap which needs to fit in there)

what i do not wanna see is a 'connectivity-abstraction' which is as
simplified and crippled as on current wince/symbian devices which does
not have the possibility to connect to hidden essid, have automatic
roaming into wifi you already connected to once, remembers wep/wpa keys
etc. so i would leave that whole stuff out for now. first it has to be a
working phone.

i really do NOT wanna discourage anybody, but this just popped into my
mind while reading this.



kind regards

--

roh



Re: Phone functionality in GUI applications

2007-10-17 Thread Michael 'Mickey' Lauer
Thomas Wood wrote:
> On Wed, 2007-10-17 at 01:48 +0200, Michael 'Mickey' Lauer wrote:
>> Thomas Seiler wrote:
>> [...]
>> 
>> Thanks Thomas [to both of you ;)], that's pretty close to my
>> vision of how the OpenMoko system services architecture should look
>> like (at least considering the phone services, I want to do similar
>> with Device I/O services and PIM services).

> Ok. Are your ideas documented anywhere?

Only on paper. I didn't find a couple of undistracted days to put any
of that in the wiki as a discussion base. I'm pretty sure I can do that
while I'm in .tw next week.

>> This is extensible (new services keep appearing all the time),
>> pluggable (we can switch underneath implementations and) and generic
>> (we
>> can switch applications, deploy this in models without screens, or in
>> products using $FancyToolKitOfTheYear... :D).

> So your idea is basically an "OpenMoko Abstraction Layer" to allow the
> service and user implementations to be switchable?

In principle, yes. Making dbus interfaces the line. Initially, this
what was I wanted to do with libmoko*, however you have convinced me
that doing this in the library/framework may not be the best way to do
it.

> What are your time scales for this?

Within the next 12 months.

> Do you expect it to be shipping when GTA02 goes on sale?

No.

> If PIM services are part of it, then will it not
> require a major rewriting of the existing core applications?

Not as long as they work fine.

I added PIM services to this list of things because I want to rethink
whether eds is really high level enough to allow arbitrary
applications querying and attaching personal data in a simple way.
It needs more experimentation, but then again, the phone and device
I/O services should be priorized now.

- Michael Lauer <[EMAIL PROTECTED]>   http://openmoko.org/

Software for the worlds' first truly open Free Software mobile phone




Re: Phone functionality in GUI applications

2007-10-17 Thread Thomas Wood
On Wed, 2007-10-17 at 01:48 +0200, Michael 'Mickey' Lauer wrote:
> Thomas Seiler wrote:
> [...]
> 
> Thanks Thomas [to both of you ;)], that's pretty close to my
> vision of how the OpenMoko system services architecture should look
> like (at least considering the phone services, I want to do similar
> with Device I/O services and PIM services).

Ok. Are your ideas documented anywhere?

>
> This is extensible (new services keep appearing all the time),
> pluggable (we can switch underneath implementations and) and generic
> (we
> can switch applications, deploy this in models without screens, or in
> products using $FancyToolKitOfTheYear... :D).

So your idea is basically an "OpenMoko Abstraction Layer" to allow the
service and user implementations to be switchable?

What are your time scales for this? Do you expect it to be shipping when
GTA02 goes on sale? If PIM services are part of it, then will it not
require a major rewriting of the existing core applications?


Regards,

Thomas


-- 
OpenedHand Ltd.

Unit R Homesdale Business Center / 216-218 Homesdale Road /
Bromley / BR1 2QZ / UK Tel: +44 (0)20 8819 6559

Expert Open Source For Consumer Devices - http://o-hand.com/





Re: Phone functionality in GUI applications

2007-10-16 Thread Michael 'Mickey' Lauer
Thomas Seiler wrote:
[...]

Thanks Thomas [to both of you ;)], that's pretty close to my
vision of how the OpenMoko system services architecture should look
like (at least considering the phone services, I want to do similar
with Device I/O services and PIM services).

This is extensible (new services keep appearing all the time),
pluggable (we can switch underneath implementations and) and generic (we
can switch applications, deploy this in models without screens, or in
products using $FancyToolKitOfTheYear... :D).

> I hope you get the idea. I would like hear what other think about this.
> Maybe it would be a good idea to start documenting possible interfaces
> in the WIKI ?

Absolutely. Feel free to go ahead and launch a page if you have a
chance. Next week I'll discuss this with the people working in .tw
and then join.

Cheers,

:M:

- Michael Lauer <[EMAIL PROTECTED]>   http://openmoko.org/

Software for the worlds' first truly open Free Software mobile phone




Re: Phone functionality in GUI applications

2007-10-16 Thread Thomas Seiler
Hi

> On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> used in the final software stack. Instead, he would prefer a d-bus based
> interface to GSMD.

Great !

> Yesterday, Rob, Chris and I sat down around a
> whiteboard and came up with some thoughts on how the phone functionality
> in GUI applications might be managed.

Great ! Good News...

I have already spend quite some time thinking about how such an
interface might look like.
In my opinion, the best solution is to have a separate DBus-Service
for each independent State machine of the openmoko problem space, and
to implement all these DBus-Services in a single daemon.
Lets call this daemon "openmokod" or just "mokod". It would provide
the openmoko platform abstraction.

This daemon might for example implement a DBUS-Service / Object to
access the SIM Card.

org.openmoko.SIM:
* Goals:
  - Abstract the fact that you need to access the SIM via gsmd / libgsmd,
  - multiplex SIM Access between different applications (phone book,
SMS, setting, pin dialogs)
  - maybe cache some things (phone book ?) in memory
  - send a signal that can be hooked in GUI whenever there is a need
to enter a PIN / PUK.
* Possible States: NO_SIM_PRESENT, SIM_OPEN, SIM_LOCKED, NEED_PIN,
NEED_PUK, NEED_PIN2, NEED_PUK2,
* Possible Methodes: enterPIN, enterPUK, enterPIN2, enterPUK2,
changePIN/PUK, close_sim, accessPhonebook, accessSMS, etc...
* Possible Signals: OnNeedPIN, OnNeedPUK, etc...

Advantages of this orthogonal approach: The PIN Problem is dealt with,
whatever reason there is for PIN entry (i.e. reseting the SIM expense
counters from a SIM menu) when the GUI reacts to the
right signal it will show whenever there is a need to enter some PIN / PUK.

Similar Objects could be implemented for:

org.openmoko.GSMNetwork:
* Goal: Abstract all Meta Information about the GSM Network, provide
an interface to choose the network to connect to.
* States: NO_SIGNAL, EMERGENCY-ONLY, REGISTERED_HOME, REGISTERED_VISITOR
* Methodes: getNetworks, setPreferredNetwork, register, unregister,
getDeviationStatus
* Signals: OnSelectNetwork, OnRSSIDChange (to update signal strength
bar), OnAreaCodeChange()

Here we can place some hooks for least cost network selection when on
visitor networks (abroad)
or we can have listeners for the OnAreaCodeChange if they want to do
fancy things like strarting the GPS to update location.

org.openmoko.Ringer:
* Goal: Abstract the possible Mixer Issues, and the loud / meeting profile thing
* States: Profile_X, Profile_Y etc...
* Methods: Ring(callerID) to be called by gsmd , etc...
* Signals: AboutToRing, OnRing...

org.openmoko.VoiceAudioRouting:
* Goal: Abstract the Mixer and Audio Routing during a Voice Call
* States: Audio Routing: STANDBY, HANDSET, HEADSET, SPEAKERPHONE, BLUETOOTH
Mic Mute: MIC_ON, MIC_MUTED

org.openmoko.VoiceCall:
* Goal: Abstract the fact that you need to talk to gmsd for a VoiceCall
   Manage Conference Calls, put calls on hold, Mnage different Lines etc...
* States: ON-HOOK, DIALING, WAITING, TALKING, RINGING (incomming call)
This one is a quite complex one.

We will need to include hooks for Least Cost Routing, or Send Signals
to the Jurnal, etc...

org.openmoko.FaxCall (send and receive Faxes, integrate with CUPS ?)
org.openmoko.DataCall (CSD Data Call to other Neo or normal modem)
org.openmoko.Wlan (WLAN Present ? Power On / OFF, select ESSID)
org.openmoko.GPRS (To set APN, set status)
org.openmoko.USBNET (To sync?)
org.openmoko.IPNetwork (General Information of kind of Connection
(WLAN/GPRS or how cheap/expensive it is )
org.openmoko.SIP that will be a lot of fun...
org.openmoko.GPS (last known longitude, latitude, power on / off)
org.openmoko.Location (more elaborate, higher level (i.e. Home, Work)
based on GPS,  WLAN ESSID, Area Code of  Cell ID or Bluetooth Adresses
(PCs), whatever there is) These signals might be used to switch
profiles, etc...


I hope you get the idea. I would like hear what other think about this.
Maybe it would be a good idea to start documenting possible interfaces
in the WIKI ?

Cheers,
Thomas

-- 
Excercise 17:
If the human brain was simple enough for us to understand we'd be so
simple we couldn't understand.
Prove this by induction.



Re: Phone functionality in GUI applications

2007-10-16 Thread Rodolphe Ortalo
Le mardi 16 octobre 2007 à 12:57 +0100, Thomas Wood a écrit :
> Hi,
> 
> On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> used in the final software stack. Instead, he would prefer a d-bus based
> interface to GSMD. Yesterday, Rob, Chris and I sat down around a
> whiteboard and came up with some thoughts on how the phone functionality
> in GUI applications might be managed.

What about adding GPS to the overall picture? Maybe that it's too early,
but if there are some interactions with the phone aspects, it would be
better to try to anticipate them. (Of course, only on the *drawing*
board.)

>
[...remaining stripped...]
>

Apart from that, I find the overall design pretty good (including the
remarks wrt UI separation via software libs or plugins).

Regards,

Rodolphe





Re: Phone functionality in GUI applications

2007-10-16 Thread Nuutti Kotivuori
Wolfgang Spraul wrote:
> I don't know d-bus (on my to-do list), just curious, if we would first
> have certain calls statically linked in a certain process, then  in a
> later build move those same calls to another process, would we  break
> backwards compatibility for applications (let's say without
> recompiling those apps)?
> In other words, are the names of processes or such encoded in d-bus or
> is it flexible enough to survive this kind of code move?

Nothing should break. With dbus, you register to provide a well known
name and other processes look for connections which have the well
known name. As long as the names are different, the calling process
will not know whether they are provided by the same process or
different processes.

In this case however, the question was about showing dialogs - and no
dbus communication would be there to take place if PhoneKit does it
itself. Unless ofcourse this is implemented with PhoneKit talking to
itself over dbus, which would be a bit odd.

-- Naked





Re: Phone functionality in GUI applications

2007-10-16 Thread Nuutti Kotivuori
Thomas Wood wrote:
> The reason we included the call handling GUI parts in PhoneKit was that
> we wanted to keep the number of processes running to a minimum. We
> started out thinking purely in terms of OpenMoko's requirements and we
> assumed GTK+ would be the "official" GUI toolkit. However, if there is
> demand for PhoneKit outside of OpenMoko, or even if OpenMoko decide to
> use another GUI library, it should be easy to do this. I would suggest
> using a very simply plugin system such as a shared (or even static)
> library would be sufficient.

How about integrating this with the home (today) application? I think
it fits there better since that application already has an X
connection, is always on and already takes some system management
responsibilities (such as task switching etc.). Also, if somebody
wants to replace home with something else, it is very conceivable that
the call handling will have to be somewhat different as well.

> The most important thing is to get the correct balance between
> modularity and abstraction, against the requirements of speed and
> low resource usage.

Definitely!

-- Naked




Re: Phone functionality in GUI applications

2007-10-16 Thread pHilipp Zabel
On 10/16/07, Thomas Wood <[EMAIL PROTECTED]> wrote:
>
> On Tue, 2007-10-16 at 17:31 +0200, pHilipp Zabel wrote:
> > On 10/16/07, Nuutti Kotivuori <[EMAIL PROTECTED]> wrote:
> > > Thomas Wood wrote:
> > > > On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> > > > used in the final software stack. Instead, he would prefer a d-bus based
> > > > interface to GSMD. Yesterday, Rob, Chris and I sat down around a
> > > > whiteboard and came up with some thoughts on how the phone functionality
> > > > in GUI applications might be managed.
> > >
> > > I wholeheartedly applaud this decision. I was about to write a long
> > > mail with just about the same idea - good thing I don't have to :-)
> > >
> > > > PhoneKit
> >
> > *Kit naming seems to be popular nowadays :)
>
> Well, the other contenders were PhoneD and PhoneManager. We decided
> PhoneKit probably fitted best. Plus what you mentioned.

Agreed, that was just an observation.

> > I wonder how feasible it would be to specify this dbus API so that it
> > could be used as a Connection Manager (Voice Channel type) for the
> > Telepathy framework.
>
> Sounds like a good idea. Do you know what is necessary to do this?

I've only read the telepathy spec, I don't have any background in Telepathy.
But when I saw "The Telepathy project aims to provide a unified
framework for all forms of real time conversations, including [...]
voice calls [...]" on telepathy.freedesktop.org, I wondered why this
should be limited to sip+VoIP.

As far as I understand, the PhoneKit part would just have to supply
implementations of the ConnectionManager, Connection and Channel
interfaces.
AFAIU there'd need to be a new protocol (gsm, cellular, or something
like that) and a new simple channel type for voicecalls where the
sound isn't transported by the host CPU like with the StreamedMedia
channel type.

For the ConnectionManager interface, network operator selection could
be a bit awkward, as the current RequestConnection method only
specifies account name / password / server fqdn, maybe a non-standard
operator parameter would have to be used.
Also, they intend the ConnectionManager to be a D-Bus service. I guess
we wouldn't need that on the phone, where PhoneKit should be running
all the time anyway.

Most optional interfaces of the Connection (Avatars, Presence, etc.)
of the spec don't apply here. Maybe some of them (Forwarding, Privacy)
could be adapted to the corresponding GSM functionality, though.

PhoneKit would have to keep a VoiceCall Channel object for a running
call. Again, maybe some of the optional interfaces (DTMF, Group,
Transfer) could be used to add dtmf tone generation, call forwarding
or conference call functionality later.

SMS sending/receiving could be wrapped by the Channel.Type.Text
interface. I expect that an additional interface is necessary if the
sms storage selection and things like that are to be exported, too.

cheers
Philipp



Re: Phone functionality in GUI applications

2007-10-16 Thread Thomas Wood

On Wed, 2007-10-17 at 00:43 +0800, Wolfgang Spraul wrote:
[...]

> I don't know d-bus (on my to-do list), just curious, if we would  
> first have certain calls statically linked in a certain process, then
> in a later build move those same calls to another process, would we  
> break backwards compatibility for applications (let's say without  
> recompiling those apps)?
> In other words, are the names of processes or such encoded in d-bus  
> or is it flexible enough to survive this kind of code move?

D-bus at it's most basic is an IPC mechanism. Think CORBA, but without
the bloat. The API that a d-bus interface exposes is completely
independent of source language and binaries.

> 
> We should not make it overly hard to later have OpenMoko-based phones
> with toolkits other than GTK+.


Having PhoneKit toolkit agnostic and allowing plugins to implement the
GUI sounds like an excellent idea. There's no particular reason we
didn't suggest this in the first place, except that we where attacking
the problem from the current application angle.

Regards,

Thomas


-- 
OpenedHand Ltd.

Unit R Homesdale Business Center / 216-218 Homesdale Road /
Bromley / BR1 2QZ / UK Tel: +44 (0)20 8819 6559

Expert Open Source For Consumer Devices - http://o-hand.com/





Re: Phone functionality in GUI applications

2007-10-16 Thread Wolfgang Spraul

Thomas -


This I'd like to be somewhat separate. If PhoneKit creates GUI
dialogs, that ties PhoneKit to a certain GUI framework entirely.  
Also,


Perhaps a separate process communicating via dbus to handle these - I


The reason we included the call handling GUI parts in PhoneKit was  
that

we wanted to keep the number of processes running to a minimum. We
...
use another GUI library, it should be easy to do this. I would suggest
using a very simply plugin system such as a shared (or even static)
library would be sufficient. The most important thing is to get the
correct balance between modularity and abstraction, against the
requirements of speed and low resource usage.


I agree the UI and non-UI parts of PhoneKit should be 'somewhat'  
separated. Whether that's in a separate process, shared or static  
plugin, I would leave up to you.
Personally as long as the sources within PhoneKit cleanly separate  
betwen visible and non-visible functionality, statically linked in is  
enough for me.
I don't know d-bus (on my to-do list), just curious, if we would  
first have certain calls statically linked in a certain process, then  
in a later build move those same calls to another process, would we  
break backwards compatibility for applications (let's say without  
recompiling those apps)?
In other words, are the names of processes or such encoded in d-bus  
or is it flexible enough to survive this kind of code move?


We should not make it overly hard to later have OpenMoko-based phones  
with toolkits other than GTK+.


Wolfgang





Re: Phone functionality in GUI applications

2007-10-16 Thread Thomas Wood

On Tue, 2007-10-16 at 17:31 +0200, pHilipp Zabel wrote:
> On 10/16/07, Nuutti Kotivuori <[EMAIL PROTECTED]> wrote:
> > Thomas Wood wrote:
> > > On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> > > used in the final software stack. Instead, he would prefer a d-bus based
> > > interface to GSMD. Yesterday, Rob, Chris and I sat down around a
> > > whiteboard and came up with some thoughts on how the phone functionality
> > > in GUI applications might be managed.
> >
> > I wholeheartedly applaud this decision. I was about to write a long
> > mail with just about the same idea - good thing I don't have to :-)
> >
> > > PhoneKit
> 
> *Kit naming seems to be popular nowadays :)

Well, the other contenders were PhoneD and PhoneManager. We decided
PhoneKit probably fitted best. Plus what you mentioned.

> I wonder how feasible it would be to specify this dbus API so that it
> could be used as a Connection Manager (Voice Channel type) for the
> Telepathy framework.

Sounds like a good idea. Do you know what is necessary to do this?

Regards,

Thomas


-- 
OpenedHand Ltd.

Unit R Homesdale Business Center / 216-218 Homesdale Road /
Bromley / BR1 2QZ / UK Tel: +44 (0)20 8819 6559

Expert Open Source For Consumer Devices - http://o-hand.com/





Re: Phone functionality in GUI applications

2007-10-16 Thread Thomas Wood
On Tue, 2007-10-16 at 18:09 +0300, Nuutti Kotivuori wrote:
> Thomas Wood wrote:
[...]
> 
> > PhoneKit
> > 
> 
> [...]
> 
> > Produces system model GUI dialogs for call handling (incoming, outgoing,
> > in call) and manages pin entry on network registration.
> 
> This I'd like to be somewhat separate. If PhoneKit creates GUI
> dialogs, that ties PhoneKit to a certain GUI framework entirely. Also,
> people might want different functionality in these system modal
> dialogs - and it would be a bother if these changes would need to be
> made in to PhoneKit.
> 
> Perhaps a separate process communicating via dbus to handle these - I
> see these related more to the actual UI framework (main menu,
> profiles, task switching, etc.) than the phone functionality itself.

This was something that was brought up on IRC as well after I sent the
e-mail, but I would prefer to keep discussions on the list.

The reason we included the call handling GUI parts in PhoneKit was that
we wanted to keep the number of processes running to a minimum. We
started out thinking purely in terms of OpenMoko's requirements and we
assumed GTK+ would be the "official" GUI toolkit. However, if there is
demand for PhoneKit outside of OpenMoko, or even if OpenMoko decide to
use another GUI library, it should be easy to do this. I would suggest
using a very simply plugin system such as a shared (or even static)
library would be sufficient. The most important thing is to get the
correct balance between modularity and abstraction, against the
requirements of speed and low resource usage.


> 
> > Home
> > 
> >
> > The current "Today" application, provides the entry point for all
> > software.
> 
> This looks fine as such, but...
> 
> One thing which has bothered me in OpenMoko from the start is that the
> responsibilities of 'today', eg. show last calls, sms's, calendar
> entries, and a 'task manager' have been bundled. And I'm unsure where
> the other required OpenMoko specific functionality resides - main
> menu, profiles and such.

I'm not sure what is in store for profiles and settings management
(apart from using gconf I would imagine). PhoneKit would obviously have
to interact with this at some stage but it could conceivably be handled
by a plugin as well.

Regards,

Thomas

-- 
OpenedHand Ltd.

Unit R Homesdale Business Center / 216-218 Homesdale Road /
Bromley / BR1 2QZ / UK Tel: +44 (0)20 8819 6559

Expert Open Source For Consumer Devices - http://o-hand.com/





Re: Phone functionality in GUI applications

2007-10-16 Thread pHilipp Zabel
On 10/16/07, Nuutti Kotivuori <[EMAIL PROTECTED]> wrote:
> Thomas Wood wrote:
> > On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> > used in the final software stack. Instead, he would prefer a d-bus based
> > interface to GSMD. Yesterday, Rob, Chris and I sat down around a
> > whiteboard and came up with some thoughts on how the phone functionality
> > in GUI applications might be managed.
>
> I wholeheartedly applaud this decision. I was about to write a long
> mail with just about the same idea - good thing I don't have to :-)
>
> > PhoneKit

*Kit naming seems to be popular nowadays :)
I wonder how feasible it would be to specify this dbus API so that it
could be used as a Connection Manager (Voice Channel type) for the
Telepathy framework.

cheers
Philipp



Re: Phone functionality in GUI applications

2007-10-16 Thread Nuutti Kotivuori
Thomas Wood wrote:
> On Friday, Mickey mentioned to me that libmokogsmd would probably not be
> used in the final software stack. Instead, he would prefer a d-bus based
> interface to GSMD. Yesterday, Rob, Chris and I sat down around a
> whiteboard and came up with some thoughts on how the phone functionality
> in GUI applications might be managed.

I wholeheartedly applaud this decision. I was about to write a long
mail with just about the same idea - good thing I don't have to :-)

> PhoneKit
> 

[...]

> Produces system model GUI dialogs for call handling (incoming, outgoing,
> in call) and manages pin entry on network registration.

This I'd like to be somewhat separate. If PhoneKit creates GUI
dialogs, that ties PhoneKit to a certain GUI framework entirely. Also,
people might want different functionality in these system modal
dialogs - and it would be a bother if these changes would need to be
made in to PhoneKit.

Perhaps a separate process communicating via dbus to handle these - I
see these related more to the actual UI framework (main menu,
profiles, task switching, etc.) than the phone functionality itself.

> Home
> 
>
> The current "Today" application, provides the entry point for all
> software.

This looks fine as such, but...

One thing which has bothered me in OpenMoko from the start is that the
responsibilities of 'today', eg. show last calls, sms's, calendar
entries, and a 'task manager' have been bundled. And I'm unsure where
the other required OpenMoko specific functionality resides - main
menu, profiles and such.

I'm not sure if it's possible or reasonable to somehow get a clearer
distinction between these two - but I'd love it if it were possible.

And in general, I'd like to see everything built so that any component
can easily be substituted with an alternative implementation without
having to reimplement loads of secondary functionality - but I think
you know this better than me anyway :-)

-- Naked





Phone functionality in GUI applications

2007-10-16 Thread Thomas Wood
Hi,

On Friday, Mickey mentioned to me that libmokogsmd would probably not be
used in the final software stack. Instead, he would prefer a d-bus based
interface to GSMD. Yesterday, Rob, Chris and I sat down around a
whiteboard and came up with some thoughts on how the phone functionality
in GUI applications might be managed.

The following is the notes and thoughts from our meeting. I haven't
included all the decision details, so please do ask if anything seems
odd.

A diagram of our proposal is available at the following URL:
<http://folks.o-hand.com/thomas/openmoko-phonekit-proposal.pdf> 


Current Arrangement
===

GUI applications use the MokoGsmdConnection gobject provided by
libmokogsmd to access the phone functionality. MokoGsmdConnection is a
very thin object wrapper to libgsmd. It is very incomplete and operates
as one instance per process. It has no awareness of any other
applications accessing gsmd, nor does it manage any events from gsmd
itself apart from passing them on to the application.


Proposed Arrangement


PhoneKit


A new phone functionality d-bus service for GUI applications.

Exposes a high level d-bus api to phone commands and events. Very
similar to current d-bus functionality exposed by Dialer (for example,
Dial function and incoming-call event).

Updates the journal on gsmd initiated events such as incoming sms or
voice mail.

Produces system model GUI dialogs for call handling (incoming, outgoing,
in call) and manages pin entry on network registration.


MokoJournal
---

Manages communication history such as call logs and SMS messages. SMS
messages are stored in the journal. Listens to the journal for events
such as new sms.

Uses e-d-s (Evolution Data Server) calendar journal component to store
and retrieve data


Home


The current "Today" application, provides the entry point for all
software.

Uses MokoJournal to retrieve SMS and call information

Uses PhoneKit to retrieve current operator name


Dialer
--

Very simple application that just displays call history from MokoJournal
and presents user with a keypad.

Uses PhoneKit to initiate phone calls

Uses MokoJournal to retrieve call logs


Contacts


Displays the address book

Uses e-d-s to retrieve contact information

Uses MokoJournal to retrieve call history per contact

Uses PhoneKit to initiate phone calls


Panel Applets
-

Uses PhoneKit to retrieve network information such as operator name,
signal strength, voicemail indication and GPRS status.



Comments and suggestions welcome on any of the above.

Regards,

Thomas


-- 
OpenedHand Ltd.

Unit R Homesdale Business Center / 216-218 Homesdale Road /
Bromley / BR1 2QZ / UK Tel: +44 (0)20 8819 6559

Expert Open Source For Consumer Devices - http://o-hand.com/