<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Hi Dan,<br>
I agree in almost all of your opinion; see my comments inline.<br>
<br>
(In the meanwhile, could you already create a git branch with access
for me and a colleague of mine that helps me in this project?)<br>
<br>
<pre class="moz-signature" cols="72">Riccardo Vangelisti - Sadel SpA
Software Development
Via Serenari 1, Castel Maggiore (BO)
Tel. 051 705884 Int. 2611
</pre>
<div class="moz-cite-prefix">Il 21/04/2015 19:07, Dan Williams ha
scritto:<br>
</div>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">On Tue, 2015-04-21 at 11:59 +0200, Aleksander Morgado wrote:
</pre>
<blockquote type="cite">
<pre wrap="">On Tue, Apr 21, 2015 at 11:42 AM, Riccardo Vangelisti
<a class="moz-txt-link-rfc2396E" href="mailto:riccardo.vangelisti@sadel.it"><riccardo.vangelisti@sadel.it></a> wrote:
</pre>
<blockquote type="cite">
<pre wrap="">Fiuu... ;)
I've attach'd the previuosly patch with CallLog renamed to Voice as you want
:)
</pre>
</blockquote>
<pre wrap="">
I think this is already a good start for an API.
Dan, what do you think?
</pre>
</blockquote>
<pre wrap="">
I'd use "Hangup" instead of "HangUp".</pre>
</blockquote>
Ok, I'll change it
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">
I'd also add a u32 "reason" argument to StateChanged, to provide more
information later about why a call was terminated. For example, was it
because it was an orderly termination, or due to network request (bad
signal), handoff failure, etc. It doesn't have to be used right now,
but it's there for later.</pre>
</blockquote>
Ok, I'll add it
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">
For states:
+ * MM_CALL_STATE_UNKNOWN: default state for a new outgoing call
Should we have a MM_CALL_STATE_DIALING in between here for outgoing
calls? The call isn't really RINGING until the dialing request is
complete, and that can sometimes take 10 seconds or more while network
capacity is being allocated and the circuit set up, especially in busy
cells.</pre>
</blockquote>
Logically you're right, but ATD command doesn't return a "DIALING"
response or state.<br>
When you send ATD <number>; string to modem it suspend control
until one of those strings are returned:<br>
<ul>
<li>OK (remote peer answered)</li>
<li>NO CARRIER (call terminated by network)</li>
<li>BUSY (call refused by peer)</li>
<li>NO DIALTONE (maybe wrong number)</li>
</ul>
So we can collapse dialing to ringing state.<br>
<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">+ * MM_CALL_STATE_RINGING: call is waiting for an answer
Might be worth explicitly stating that this state is valid for both
locally (eg, incoming call waiting to be answered) and remotely
(outgoing call ringing on the other side).</pre>
</blockquote>
Yes, I had thought so! In the schema that I've attach'd, ringing
state is a common state between incoming and outgoing calls.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">+ * @MM_CALL_STATE_ACCEPTED: call is active between two peers
Maybe ACTIVE here? To me, semantically acceptance happens at one
specific point in the process, after that (for 2 seconds or 1 hour or 2
hours) it's just an active call.</pre>
</blockquote>
Ok, I'll change it.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">
I think we also need STATE_HELD to indicate when the call is on hold
(see +CHLD docs), and STATE_WAITING (+CCWA).</pre>
</blockquote>
Ok, I ignored these command! I'll add these states in the next
patch.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">+ * @MM_CALL_STATE_TERMINATED: call is terminated
+ * @MM_CALL_STATE_REFUSED: call is refused or busy
+ * @MM_CALL_STATE_ERROR: call in error (wrong number, network
Could these be converted into "reason" codes instead?</pre>
</blockquote>
Yes, we can create an unique final state (eg.
MM_CALL_STATE_TERMINATED) and add a reason property with these
allowed values:<br>
<ul>
<li>Correctly terminated<br>
</li>
<li>Refused or peer busy<br>
</li>
<li>Network error<br>
</li>
</ul>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">The "Call.Audio" property concerns me a bit, I don't think it provides
enough detail. What is /dev/ttyUSB3 supposed to be as the "Audio"
value? I know on the one Huawei that I have that supports voice, the
serial device just spits out and accepts 16-bit PCM frames, but how
would that be indicated here? I don't think apps should require a
parallel database of modem voice details. Also, what does "analog"
actually mean? Where does the audio come from or go to? I think this
part needs more specification and possibly more detail in the API.</pre>
</blockquote>
<span id="result_box" class="short_text" lang="en"><span class="hps">I
will reply to this as soon as possible. In the meanwhile, what
are your suggestions?<br>
Note that i</span></span>n my case the modem provides an analog
output that must not be handled by software.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">On to Voice...
There are also some meta operations that can be done, like call
transfer, join, multiparty, etc. Ofono created a VoiceCallManager API
for that purpose, which might be useful to review for .Voice API
additions.</pre>
</blockquote>
It's true, but maybe these methods could be added later.<br>
M<span id="result_box" class="short_text" lang="en"><span
class="hps">y goal</span> <span class="hps">is to</span> <span
class="hps">start</span> <span class="hps">a call</span> <span
class="hps">as soon as possible...</span></span>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">I would make the methods/signals a bit more explicit, eg ListCalls,
CreateCall, DeleteCall, CallAdded, CallDeleted.
</pre>
</blockquote>
Ok, I'll modify these signals.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">DeleteCall needs more explanation; obviously it will terminate (hang up,
disconnect) the call and release any resources. Basically it's just
like Hangup() right?</pre>
</blockquote>
I thought to use "DeleteCall" in order to remove a terminated call
from the Voice list property.<br>
Obviously if the call is active, this method should also terminate
the call.<br>
<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">For CallAdded, instead of a boolean, how about just re-using
MM_CALL_DIRECTION? Also, is the direction argument that interesting
here? eg, what would a client do when it receives the CallAdded signal
+ direction, if it *doesn't* retrieve the call object properties?
Possibly the argument could be removed if we expect clients to get all
the properties, since eventually we'll have CLIP, phone number,
multiparty, emergency indicator, etc.
</pre>
</blockquote>
Direction is more correct than the bool value, but I prefer to
remove the property and force user to read the call object
properties.<br>
<blockquote cite="mid:1429636034.17714.62.camel@redhat.com"
type="cite">
<pre wrap="">
In any case, thanks for working on this Riccardo, lets keep moving it
foward!
Dan
</pre>
</blockquote>
You're welcome.<br>
</body>
</html>