API Call proposal

Riccardo Vangelisti riccardo.vangelisti at sadel.it
Mon Apr 20 09:47:51 PDT 2015


Thanks for you support.

I agree with your opinion and I changed my proposal with your advices.
I follow the SMS and Messaging implementation and I create two new 
interfaces named CallLog and Call.
CallLog contains all Call objects created.

All Call state are described in a schema that I've attached.

About call type specification, in GSM service there are two types of 
call: Voice Call and Data Call.
In AT Standard the ATD command is described as follow:

"ATD[<digits>][I/i][;]

[...]

When ';' is contained in this command, a voice call is initiated.
When ';' is not contained in this command, a data service call is 
initiated."

Data call is used for example with ZMODEM in order to trasfer files 
between two endpoint.

Thanks,

Riccardo Vangelisti - Sadel SpA
Software Development
Via Serenari 1, Castel Maggiore (BO)

Il 20/04/2015 15:51, Aleksander Morgado ha scritto:
> Hey Riccardo,
>
>> in refer to opened bug https://bugs.freedesktop.org/show_bug.cgi?id=84981
>> I propose the attached patch, to implement voice or data call in MM core.
>>
>> Please let me know what you think.
>>
> Thanks for moving this forward :)
>
>  From my POV, this API should be managed very similar to how the
> Messaging/SMS API works, clearly separating the modem actions (in the
> Messaging interface) with the objects (in the SMS interface). In this
> specific case, I'd suggest to have a new
> "org.freedesktop.ModemManager1.Modem.Voice" interface for the modem
> object, plus then a new "org.freedesktop.ModemManager1.Call" interface
> for new "/org/freedesktop/ModemManager1/Call" objects.
>
> Some of the methods defined already assume this, but I don't think it's
> clearly explained. Having 2 separate interfaces would make more sense.
>
> Also, I'd have also added the new enums in the
> include/ModemManager-enums.h file already, and avoid explaining them in
> the API file.
>
> See my other comments inline.
>
>>  From 6cb13d8396c4e6fa3e6fc8d1e10c73664f3bfd12 Mon Sep 17 00:00:00 2001
>> From: Riccardo Vangelisti <riccardo.vangelisti at sadel.it>
>> Date: Mon, 20 Apr 2015 12:58:16 +0200
>> Subject: [PATCH] Added API proposal of voice/data call handling
>>
>> ---
>>   .../org.freedesktop.ModemManager1.Modem.Call.xml   | 118 +++++++++++++++++++++
>>   1 file changed, 118 insertions(+)
>>   create mode 100644 introspection/org.freedesktop.ModemManager1.Modem.Call.xml
>>
>> diff --git a/introspection/org.freedesktop.ModemManager1.Modem.Call.xml b/introspection/org.freedesktop.ModemManager1.Modem.Call.xml
>> new file mode 100644
>> index 0000000..3d8e08b
>> --- /dev/null
>> +++ b/introspection/org.freedesktop.ModemManager1.Modem.Call.xml
>> @@ -0,0 +1,118 @@
>> +<?xml version="1.0" encoding="UTF-8" ?>
>> +
>> +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
>> +
>> +  <!--
>> +      org.freedesktop.ModemManager1.Modem.Call:
>> +      @short_description: The ModemManager Call interface.
>> +
>> +      The Call interface handles sending calls and notification of new
>> +      incoming calls.
>> +  -->
>> +  <interface name="org.freedesktop.ModemManager1.Modem.Call">
>> +
>> +    <!--
>> +        Start:
>> +        @number: phone number
>> +        @type: The type of call, same as "Type" property
> Why @type? This would all be voice calls.
>
>> +        @result: The call object path.
>> +
>> +        Start a new call to specified number
>> +    -->
>> +    <method name="Start">
>> +      <arg name="number" type="s" direction="in" />
>> +      <arg name="type" type="i" direction="in" />
>> +      <arg name="result" type="o" direction="out" />
>> +    </method>
>> +
> When does this method exactly return? Will the method return even if the
> call hasn't been accepted/rejected yet?
>
>> +    <!--
>> +        Answer:
>> +        @call: call object path
>> +
>> +        Answer to specified call
>> +    -->
>> +    <method name="Answer">
>> +      <arg name="call" type="o" direction="in" />
>> +    </method>
>> +
>> +    <!--
>> +        HangUp:
>> +        @call: call object path
>> +
>> +        Hangup specified call
>> +    -->
>> +    <method name="HangUp">
>> +      <arg name="call" type="o" direction="in" />
>> +    </method>
>> +
> What would happen to calls that have been hungup? Will the DBus object
> still be around with state "terminated"?
>
> Shouldn't we have a method in the Modem-specific interface to list all
> Call objects managed by the modem?
>
>> +    <!--
>> +        Incoming:
>> +        @path: Object path of the new Call.
>> +
>> +        Emitted when a new Call has been received.
>> +
>> +        Check the "Type" property to determine if the call is data or voice type.
>> +    -->
>> +    <signal name="Incoming">
>> +      <arg name="path" type="o" />
>> +    </signal>
>> +
>> +    <!--
>> +        StateChanged:
>> +        @old: Old object "State"
>> +        @new: New object "State"
>> +
>> +        Emitted when a message has been deleted.
>> +    -->
>> +    <signal name="StateChanged">
>> +      <arg name="old" type="i" />
>> +      <arg name="new" type="i" />
>> +    </signal>
>> +
> What's this StateChanged here?
>
>> +    <!--
>> +        State:
>> +
>> +        The state of Call object paths.
>> +
>> +        MMCallState:
>> +          - MM_MODEM_CALL_STATE_INCOMING Incoming
>> +          - MM_MODEM_CALL_STATE_ACCEPTED Accepted
>> +          - MM_MODEM_CALL_STATE_TERMINATED Terminated
>> +          - MM_MODEM_CALL_STATE_REFUSED Refused
>> +          - MM_MODEM_CALL_STATE_ERROR Error
>> +          - MM_MODEM_CALL_STATE_INACTIVE Inactive
> When does inactive happen?
>
>> +    -->
>> +    <property name="State" type="i" access="read" />
>> +
> This state would belong in the "Call" object interface, not in the Modem
> interface.
>
>> +    <!--
>> +        Type:
>> +
>> +        The call type.
>> +
>> +        MMCallType:
>> +          - MM_MODEM_CALL_TYPE_DATA Data call
> Should we care about data calls here?
>
>> +          - MM_MODEM_CALL_TYPE_VOICE Voice call
>> +    -->
>> +    <property name="Type" type="i" access="read" />
>> +
> This state would belong in the "Call" object interface, not in the Modem
> interface.
>
>> +    <!--
>> +        Number:
>> +
>> +        The remote phone number.
>> +    -->
>> +    <property name="Number" type="s" access="read" />
>> +
> This state would belong in the "Call" object interface, not in the Modem
> interface.
>
>> +    <!--
>> +        Audio:
>> +
>> +        The audio device.
>> +
>> +        Example list:
>> +          - "analog" (PCM analog)
>> +          - "/dev/ttyUSB2" (sound device)
>> +          - "others?"
>> +    -->
>> +    <property name="Audio" type="s" access="read" />
>> +
>> +  </interface>
>> +</node>
>> -- 
>> 2.1.4
>>
>
>
>
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: modemmanager_call_voice.png
Type: image/png
Size: 13589 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/modemmanager-devel/attachments/20150420/70b2ae4b/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Added-CallLog-and-Call-interfaces-for-voice-data-cal.patch
Type: text/x-patch
Size: 8521 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/modemmanager-devel/attachments/20150420/70b2ae4b/attachment-0001.bin>


More information about the ModemManager-devel mailing list