Open Source Telephony
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: ofono@ofono.org
Subject: Re: Please comment on callhistory API
Date: Fri, 24 Sep 2010 10:17:05 +0900	[thread overview]
Message-ID: <1285291025.20811.102.camel@localhost.localdomain> (raw)
In-Reply-To: <4C9BB865.4070301@intel.com>

[-- Attachment #1: Type: text/plain, Size: 5285 bytes --]

Hi Raji,

> Attached Callhistory API , please send me your feedback on it, I will 
> extend this include SmsHistory once callhistory API looks good.

please include such text in the email and not as attachment. We wanna
review it and not bother with just having to save it to disk first, then
copy it back into the response email to have to comment on it. I prefer
reading this and patches directly in my email client.

> 							Callhistory Adapter-Agent
> 
> 
> 	CallHistoryAdapter is a built in plugin for ofono. It uses CallHistoryAgent api exposed by dialer or client daemon to push voice call history information to client. CallHistoryAgent api is an service interface exposed by client over dbus. Plugin exposes CallHistoryAdapter interface that CallHistoryAgent registers and unregisters with. if the CallHistoryAgent registers with Adapter then plugin pushes the history information to dialer as soon as it receives from ofono, otherwise it caches the data in a disk file until agent registers, once agent registers plugin will read the data from the disk file and pushes all the records to it.
> 
> 
> Adapter: 
> 
> it is going to register and unregister the agent. Calls the methods on the agent for delivering history information whent the agent is up and running. If the record cant be delivered that means agent method returns an error then it will be written to the disk file. If the agent is down it will persist history record in disk file.
> 
> 
> CallHistoryAdapter hierarchy
> ============================
> 
> Service 	: org.ofono
> Interface	: org.ofono.CallHistoryAdapter
> Object path	: freely definable

What is Adapter meaning here. Just CallHistory would be fine. And makes
is more consistent with STK Agent.

The object path is not freely definable. You do have to pick one.

> Methods		void RegisterAgent (objectpath)  
> 
> 			RegisterAgent method registers the agent object path. Methods on this agent will be called if history needs to push data.  
> 
> 			Possible Errors: [service].Error.InvalidArguments
> 					 [service].Error.InvalidFormat
> 					 [service].Error.InUse

What is InvalidFormat? Fair enough, you copied this from STK Agent and
it uses this for invalid object path. I don't even think this is needed
at all since the D-Bus system daemon will ensure this, but fair enough
leave that in since STK Agent is using it similar. Consistency is good.

> 		void UnregisterAgent (objectpath) 
> 
> 			UnregisterAgent method unregister the already registered agent object path.
> 
> 			Possible Errors: [service].Error.InvalidArguments
> 					 [service].Error.InvalidFormat
> 					 [service].Error.InUse
> 
> 
> CallHistoryAgent hierarchy
> ==========================
> 
> Service Name	: Unique Name
> Interface	: org.ofono.CallHistoryAgent
> Objectpath	: Freely definable
> 
> Methods		void SendHistory(array {struct {uint32,uint32,uint8,uint32,uint32} }) 
> 
> 			This method gets called by ofono to deliver one record of voice call history.
> 		
> 			Possible Errors: [service].Error.Unsuccessful

Yeah. No way. Use a dictionary. We are not modeling some weird memory
structure via D-Bus. That is not extendable at all.

> 		void SendCachedHistory(array {struct {uint32,uint32,uint8,uint32,uint32} })
> 
> 			This method gets called by the ofono when CallHistoryAgent starts running. 
> 			It delivers all the history records as an array of structures.
> 
> 			Possible Errors: [service].Error.Unsuccessful

No.

One method for both here. If the client calls RegisterAgent then at that
point you start sending out the cached history. No need to make a
differentiation here. The client doesn't care. It just needs to get the
information.

> 		void Release() 
> 			Cleans up agent, assumes that agent is already unregistered, so not needed to unregister. 
> 
> CallHistory Record 
> ================
>  
> CallHistoryRecord {
> 		uint32	uid;
> 		uint8	voicecalltype;
> 		char	lineid[20];
> 		uint32	starttime;
> 		uint32	endtime;
> }
> 
> voicecalltype {
> 	outgoing = 0,
> 	incoming = 1,
> 	missed = 2
> }

Define proper dictionary key/type values pair like we do for property or
use inside the Messaging API already. Consistency.

	New immediate (class 0) SMS received. Info has Sender,
	LocalSentTime, and SentTime information.  Sender
	address is given in string format.  LocalSentTime and
	SentTime are given in string form using ISO8601 format.

So it defines already LocalSentTime, SentTime and Sender. And voicecall
already defines LineIdentifcation.

	Contains the Line Identification information returned
	by the network, if present. For incoming calls this is
	effectively the CLIP. For outgoing calls this attribute
	will hold the dialed number, or the COLP if received by
	the underlying implementation.

This could be all nicely re-used. I think you get the idea.

If the call history agent is a global agent, then you need to include
the modem object path here as well. So that a client could identify from
which modem this came. Over time the modem could change, but the IMSI
could stay the same. Or just include the IMSI here. We need to discuss
this, but keep it in mind.

Regards

Marcel



  reply	other threads:[~2010-09-24  1:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-23 20:28 Please comment on callhistory API rajyalakshmi bommaraju
2010-09-24  1:17 ` Marcel Holtmann [this message]
2010-09-24 22:00   ` rajyalakshmi bommaraju
2010-09-27 17:50     ` Marcel Holtmann
2010-09-27 20:38       ` rajyalakshmi bommaraju
2010-09-27 22:21         ` Marcel Holtmann
2010-09-27 23:30           ` rajyalakshmi bommaraju
2010-09-28 14:08             ` Marcel Holtmann
2010-09-30 18:41               ` rajyalakshmi bommaraju
2010-10-01  7:33                 ` Marcel Holtmann
2010-10-20 23:38                   ` rajyalakshmi bommaraju
2010-09-27 23:08       ` Denis Kenzior
2010-09-27 23:14         ` Marcel Holtmann
2010-09-27 23:18           ` Denis Kenzior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1285291025.20811.102.camel@localhost.localdomain \
    --to=marcel@holtmann.org \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox