Re: RFC: API for Neighbouring Cell Info

2010-01-31 Thread Jussi Kukkonen

Hi,

First, as a general comment: if this sort of info was available, I'd 
definitely use it (see http://github.com/jku/geoclue/commits/new-stuff 
for a first version using currently available API). Neighbor cell info 
would make non-complete cell location databases so much more useful...


Aki Niemi wrote:

pe, 2010-01-29 kello 16:56 +0100, ext Denis Kenzior kirjoitti:

Honestly I don't like either approach, the Agent pattern would be a
much better fit here.  This would allow us to specify 
the polling/update interval and stop neighbor cell updates when no one

is interested in them.


In my experience, the positioning guys don't need periodic updates at
all. The data needs to be fetched on demand. Like whenever the user
starts up a location-aware application.


I'm willing to bet this is a chicken-egg problem: Why design software 
that uses periodic location updates if they aren't available?


Only exposing plain polling is fine if it makes sense in a powersaving 
(and api simplicity) sense: a version of periodic updating can always be 
implemented at the position service (geoclue) level if it seems useful.


 - Jussi

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: RFC: API for Neighbouring Cell Info

2010-01-31 Thread Marcel Holtmann
Hi Jussi,

  Honestly I don't like either approach, the Agent pattern would be a
  much better fit here.  This would allow us to specify 
  the polling/update interval and stop neighbor cell updates when no one
  is interested in them.
  
  In my experience, the positioning guys don't need periodic updates at
  all. The data needs to be fetched on demand. Like whenever the user
  starts up a location-aware application.
 
 I'm willing to bet this is a chicken-egg problem: Why design software 
 that uses periodic location updates if they aren't available?
 
 Only exposing plain polling is fine if it makes sense in a powersaving 
 (and api simplicity) sense: a version of periodic updating can always be 
 implemented at the position service (geoclue) level if it seems useful.

there is no problem in polling the hardware if we have to. However if
that is the case, then we obviously should only poll when we have a
user/client asking for the information. And we should poll in an
interval that the user/client needs this information.

As Denis mentioned, if we have a D-Bus API for retrieving these
information then we need to able to handle multiple users in a smart way
without wasting system resources or blocking each other.

I consider this similar to usage statistics. And in ConnMan I went for
an agent concept to solve this. The similar approach seems to fit here
perfectly if we wanna expose these information over D-Bus. That is the
only way, we have control over clients. If nothing has changed there is
not point in waking up more processes and let the determine noting has
changed to only go back to sleep afterwards. If these clients actually
have UI components that redraw, it is even worse.

Regards

Marcel


___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: RFC: API for Neighbouring Cell Info

2010-01-29 Thread Aki Niemi
to, 2010-01-28 kello 19:03 +0100, ext Bastian, Waldo kirjoitti:
 I would like to propose an API for exposing neighbouring cell info. 
 Since the exact information provided is rather modem specific my
 thinking is to use the following API as the generic framework and then
 the actual per-cell information attributes that a driver provides can
 be different from modem to modem with the constraint that _if_ a modem
 provides a certain attribute that is specified by this API definition
 the driver must format it as specified.

There are two parts to neighbor cell information. The first part
provides meta-information on the second part, which is the actual
measurement data.

Like you propose, the first part is a dict, with keys like cell type and
current MCC and MNC.

The second part is the measurement data, and that is different for
different types of cells. Not all information is mandatory for all
modems and all cell types.

For the measurement data, there is a standard available. OMA SUPL, User
Plane Location Protocol describes the sets of measurements available for
different types of cells:

http://www.openmobilealliance.org/Technical/release_program/supl_v2_0.aspx

 Your feedback is highly appreciated, especially from those who plan to
 use this information for location purposes.

I think the pattern you use here is wrong. This needs to be a method
call; a signal won't work. The measurement data is constantly changing,
and you don't want a constant stream of PropertyChanged() signals.

So I think something like this instead:

GetNeighborCells() - a{sv}, aa{sv}

That is: a dict for the meta-data, and an array of dicts for cell
measurements. That response signature looks a bit intimidating, but I've
implemented it, it's not a big deal.

The important property here is that the location system has a single
method call that retrieves all relevant information from the modem, so
that they can then do their triangulation magic.

 Once there is agreement on the API we can discuss whether it makes
 sense to add some skeleton support in the oFono core or leave it to
 each individual modem plugin to implement the DBUS service in its
 entire.

I think it's reasonable to assume that most modems support this. There
is a standard to follow, and at least isimodem will have a driver for
it. So I would make it a proper atom from the beginning.

The modem plugin API should distinguish between different types of
cells; there should be ops to retrieve cell type specific measurements.

Other comments on the interface:

 Properties boolean Enabled [readwrite] 
 
   Boolean representing whether the interface provides
   neighbouring cell information.
 

This is useless. If a modem driver doesn't support neighbor cell info,
it won't registered a driver and the interface just doesn't show up.

   int8 RSCP [readonly, UMTS only]
 
   Received Signal Code Power [3GPP TS 25.133 
 s9.1.1.3] in dBm [-120...-25]
 
   int8 ECNO [readonly, UMTS only]
 
   CPICH Ec/No [3GPP TS 25.133 s9.1.2.3] in dB  
 [-24...0]

This is already part of the measurement data, which I think should be in
the per-cell information (the serving cell measurement data is still
measurement data).

Cheers,
Aki

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: RFC: API for Neighbouring Cell Info

2010-01-29 Thread Denis Kenzior
Hi Aki,

  Your feedback is highly appreciated, especially from those who plan to
  use this information for location purposes.
 
 I think the pattern you use here is wrong. This needs to be a method
 call; a signal won't work. The measurement data is constantly changing,
 and you don't want a constant stream of PropertyChanged() signals.
 
 So I think something like this instead:
 
 GetNeighborCells() - a{sv}, aa{sv}

How is this information obtained from the modem? Is the modem polled? Does it 
signal this data as it changes?  Honestly I don't like either approach, the 
Agent pattern would be a much better fit here.  This would allow us to specify 
the polling/update interval and stop neighbor cell updates when no one is 
interested in them.

  Once there is agreement on the API we can discuss whether it makes
  sense to add some skeleton support in the oFono core or leave it to
  each individual modem plugin to implement the DBUS service in its
  entire.
 
 I think it's reasonable to assume that most modems support this. There
 is a standard to follow, and at least isimodem will have a driver for
 it. So I would make it a proper atom from the beginning.

I'd like to see the low level driver API proposal first.  The Nokia isimodem 
interface is actually quite sane, AT command modems are usually not so...  If 
we make this into a proper atom we have to make this work for all hardware 
from the beginning.

 Other comments on the interface:
  Properties boolean Enabled [readwrite]
 
  Boolean representing whether the interface provides
  neighbouring cell information.
 
 This is useless. If a modem driver doesn't support neighbor cell info,
 it won't registered a driver and the interface just doesn't show up.

Being able to turn this capability off is useful.  If there are no consumers, 
then these types of notifications should be turned off to save power / wakeups.

Regards,
-Denis
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: RFC: API for Neighbouring Cell Info

2010-01-29 Thread Aki Niemi
pe, 2010-01-29 kello 16:56 +0100, ext Denis Kenzior kirjoitti:
   Your feedback is highly appreciated, especially from those who plan to
   use this information for location purposes.
  
  I think the pattern you use here is wrong. This needs to be a method
  call; a signal won't work. The measurement data is constantly changing,
  and you don't want a constant stream of PropertyChanged() signals.
  
  So I think something like this instead:
  
  GetNeighborCells() - a{sv}, aa{sv}
 
 How is this information obtained from the modem? Is the modem polled? Does it 
 signal this data as it changes?

It is polled, by design.

 Honestly I don't like either approach, the Agent pattern would be a
 much better fit here.  This would allow us to specify 
 the polling/update interval and stop neighbor cell updates when no one
 is interested in them.

In my experience, the positioning guys don't need periodic updates at
all. The data needs to be fetched on demand. Like whenever the user
starts up a location-aware application.

   Once there is agreement on the API we can discuss whether it makes
   sense to add some skeleton support in the oFono core or leave it to
   each individual modem plugin to implement the DBUS service in its
   entire.
  
  I think it's reasonable to assume that most modems support this. There
  is a standard to follow, and at least isimodem will have a driver for
  it. So I would make it a proper atom from the beginning.
 
 I'd like to see the low level driver API proposal first.  The Nokia isimodem 
 interface is actually quite sane, AT command modems are usually not so...  If 
 we make this into a proper atom we have to make this work for all hardware 
 from the beginning.

Right, we perhaps need a datapoint from an AT modem to know for sure,
but the fact that OMA SUPL standardizes this, and the ISI interface is
close to that standard already, makes me think the AT modems can't be
that far off.

I could take a stab at a driver API for this as soon as I clear up some
space on my todo list.

Cheers,
Aki

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: RFC: API for Neighbouring Cell Info

2010-01-29 Thread Denis Kenzior
Hi Aki,

  Honestly I don't like either approach, the Agent pattern would be a
  much better fit here.  This would allow us to specify
  the polling/update interval and stop neighbor cell updates when no one
  is interested in them.
 
 In my experience, the positioning guys don't need periodic updates at
 all. The data needs to be fetched on demand. Like whenever the user
 starts up a location-aware application.

Fair enough, but we also have to consider the case of multiple applications 
being interested in this information.  We can't assume that it will be polled 
on demand by just one...

 
Once there is agreement on the API we can discuss whether it makes
sense to add some skeleton support in the oFono core or leave it to
each individual modem plugin to implement the DBUS service in its
entire.
  
   I think it's reasonable to assume that most modems support this. There
   is a standard to follow, and at least isimodem will have a driver for
   it. So I would make it a proper atom from the beginning.
 
  I'd like to see the low level driver API proposal first.  The Nokia
  isimodem interface is actually quite sane, AT command modems are usually
  not so...  If we make this into a proper atom we have to make this work
  for all hardware from the beginning.
 
 Right, we perhaps need a datapoint from an AT modem to know for sure,
 but the fact that OMA SUPL standardizes this, and the ISI interface is
 close to that standard already, makes me think the AT modems can't be
 that far off.

I have a few modems that support this capability, so we can definitely check.

 
 I could take a stab at a driver API for this as soon as I clear up some
 space on my todo list.

Yes, that would be great.

Regards,
-Denis
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


RE: RFC: API for Neighbouring Cell Info

2010-01-29 Thread Bastian, Waldo
 Hi Aki,
 
   Honestly I don't like either approach, the Agent pattern would be a
   much better fit here.  This would allow us to specify
   the polling/update interval and stop neighbor cell updates when no one
   is interested in them.
 
  In my experience, the positioning guys don't need periodic updates at
  all. The data needs to be fetched on demand. Like whenever the user
  starts up a location-aware application.
 
 Fair enough, but we also have to consider the case of multiple
 applications
 being interested in this information.  We can't assume that it will be
 polled on demand by just one...

Ny understanding is that typically there would be a location service that 
queries this information from oFono and converts it into actual coordinates 
through voodoo and black magic and that location-aware applications will ask 
this location service for coordinates. E.g. you would have something like 
GeoClue providing a single API for providing coordinates to applications and 
under GeoClue there is the location service, and the location service in turn 
talks to oFono.

Cheers,
Waldo
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono