Re: HDP proposed API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Tue, May 4, 2010 at 10:55 AM, Santiago Carot-Nemesio
<scarot@xxxxxxxxxxxx> wrote:
> Hello,
> Next is the API wich we have been working last weeks.
>
> Regards.
>
>
> BlueZ D-Bus HDP API description
> ***********************************
>
> Authors:
> Santiago Carot-Nemesio          sancane@xxxxxxxxx
> Jose Antonio Santos-Cadenas     santoscadenas@xxxxxxxxx
>
>
> Health Device Profile hierarchy
> ===============================
>
> Service         org.bluez
> Interface       org.bluez.Hdp
> Object path     [variable prefix]/{hci0,hci1,...}
>
> Methods         object CreateSession(object path, byte data_spec)
>
>                        Returns the object path for the new HDP session.
>                        The path parameter is the path of the remote object
>                        with the callbacks to nofity events (see
>                        org.bluez.HdpAgent at the end of this document)
>                        The data_spec is the data exchange specficication
>                        (see section 5.2.10 of the specification document)
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>
>                void DeleteSession(object path)
>
>                        Delete the HDP session identified by the object path.
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.NotFound
>
>
> --------------------------------------------------------------------------------
>
> Service         org.bluez
> Interface       org.bluez.HdpSession
> Object path     [variable prefix]/{hci0,hci1,...}/{hdp0,hdp1,...}
>
>                uint8 AllocateMdep(uint8 role)
>
>                        This method allocates a logical end point. Valids values
>                        for MDEP roles are:
>                                * 0x00 For source
>                                * 0x01 For sink
>
>                        The return value is the allocated MDEP.
>
>                void AddFeature(uint8 mdepid, uint16 dtype, string dscr)
>
>                        Add a new entry in the HDP supported feature list with
>                        the role given in the MDEP id.
>
>                        If the new feature has the same data type as other
>                        previusly added feature for the same MDEP id, the old
>                        feature will be overwritten.
>
>                void Start()
>
>                        Starts the associated MCAP layer and set up the SDP
>                        registry with all supported features.
>
>                        Possible errors: org.bluez.Error.HdpError
>
>                object Connect(string btaddr)
>
>                        Connect with the device and returns the object path of
>                        the remote device.
>                        To call this method, the session must be started.
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.HdpError
>
>                void Disconnect(object device, boolean delete)
>
>                        Disconnect from the remote device. If delete is true, any
>                        status will also be deleted. Otherwise, the status will
>                        be keeped for allowing future reconnections.
>                        To call this method, the session must be started.
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.NotFound
>                                         org.bluez.Error.HdpError
>
> --------------------------------------------------------------------------------
>
> Service         org.bluez
> Interface       org.bluez.HdpDevice
> Object path     [variable prefix]/{hci0,hci1,...}/{hdp0,hdp1,...}/dev_XX_XX_XX_XX_XX_XX
>
>                boolean Echo(array{byte})
>
>                        Sends an echo petition to the remote device. Return True
>                        if response matches with the buffer sended. If some error
>                        is detected False value is returned and the associated
>                        MCL is closed.
>
>                uint16 OpenDc(byte mdepid, byte config)
>
>                        Creates a new data channel with the indicated config
>                        to the remote MCAP Data End Point (MDEP).
>                        The configuration should indicate the channel quality of
>                        service.
>                        Returns the data channel id.
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.HdpError
>
>                file_descriptor GetDcFd(uint16 mdlid)
>
>                        Gets a file descriptor where data can be readed or
>                        writed for receive or sent by the data channel.
>                        Returns the file descriptor
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.NotFound
>                                         org.bluez.Error.HdpError
>
>                void DeleteDc(uint16 mdlid)
>
>                        Deletes a data channel so it will not be available for
>                        use.
>
>                        Possible errors: org.bluez.Error.InvalidArguments
>                                         org.bluez.Error.NotFound
>                                         org.bluez.Error.HdpError
>
>                void DeleteAllDc()
>
>                        Deletes all data channels so it will not be available
>                        for use. Typically this function is called when the
>                        connection with the remote device will be closed
>                        permanently
>
>                        Possible errors: org.bluez.Error.HdpError
>
>                uint16 FirstRelDc()
>
>                        Returns the identificator of the first reliable data
>                        channel connected for this device.
>
>                        Possible errors: org.bluez.Error.HdpError
>
> HDPAgent hierarchy
> ==================
>
> Service         unique name
> Interface       org.bluez.HdpAgent
> Object path     freely definable
>
>                void DeviceConnected(object path)
>
>                        This method is called whenever a new device connection
>                        has been established over the control channel of the
>                        current HDP session. The objectpath contains the object
>                        path of the remote device.
>
>                void DeviceDisconnected(object path)
>
>                        This method is called when a remote device is
>                        disconnected definitively. Any future reconnections
>                        will fail. Also all data channels associated to this
>                        device will be closed.
>
>                void CreatedDc(object path, uint16 mdlid, filedescriptor fd)
>
>                        This method is called when a new data channel is created
>                        The path contains the object path of the device whith
>                        the new connection is created, the mdlid the data
>                        channel identificator and the fd is the file descriptor
>                        where the data can be readed or writed.
>
>                void DeletedDc(object path, uint16 mdlid)
>
>                        This method is called when a data channel is closed.
>                        After this call the data channel will not be valid and
>                        can be reused for future created data channels.
>
>                void DataReady(object path, uint16 mdlid, filedescriptor fd)
>
>                        This method is called when there is new data that can be
>                        readed in a data channel
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

This sounds a little too complicated for me, my suggestion for you
guys is to first discuss a python script for the supported use cases
to figure out what is the best approach here, a tool written in C
would be nice too, so you will notice how much logic will got
duplicate if someone has to do the same thing as the script does. Also
I must say that this API goes against the design of our current 4.x
API, since it creates its own device representation.


-- 
Luiz Augusto von Dentz
Computer Engineer
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux