summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/lib/manager.h
blob: 6c5e27f5f494d67c27c8c30aae98d1c9d131887c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

#ifndef OpieToothManager_H
#define OpieToothManager_H

#include <qobject.h>
#include <qstring.h>
#include <qvaluelist.h>

#include "remotedevice.h"
#include "services.h"

namespace OpieTooth {
  class Device;
  /** Manager manages a blueZ device (hci0 for example)
   *  with Manager you can control the things you
   *  could do from command line in a OO and asynchronus
   *  way.   
   */
  class Manager : public QObject {
Q_OBJECT
  public:
    /** c'tor whichs create a new Manager
     *  @param device is the device to use. Either a mac or blueZ device name
     *
     */
    Manager( const QString &device );
    /** c'tor
     * @param dev The Device to be managed
     * We don't care of Device so you need to delete it
     */   
    Manager( Device* dev );
    /**
     * c'tor
     */
    Manager();
    ~Manager();

    /** Set the manager to control a new device
     *  @param device the new device to control (hci0 )
     */
    void setDevice( const QString& device );
    /**
     * Convience functions for setting a new device
     */
    void setDevice( Device *dev );
    /**
     * Wether or not a device is connected. The function
     * is asynchron
     * If device is empty it will take the currently managed
     * device and see if it's up
     * for Remote devices it will ping and see
     */
    void isConnected(const QString& device= QString::null );
    /**
     * same as above
     */
    void isConnected(Device *dev );

    /** this search for devices reachable from the
     *  currently managed device   
     *  or from device if @param device is not empty
     */
    void searchDevices(const QString& device= QString::null );
    /** same as above
     *
     */
    void searchDevices(Device *d );

    /**
     * This will add the service @param name
     * to the sdpd daemon
     * It will start the daemon if necessary
     */
    void addService(const QString &name );
    /**
     * This will add the services @param names
     * to the sdpd daemon
     * It will start the daemon if necessary
     */
    void addServices( const QStringList& names );
    /**
     * This removes a service from the sdps
     */
    void removeService(const QString &name );
    /**
     * Removes a list from the sdpd
     */
    void removeServices(const QStringList& );

    /**
     * search for services on a remote device
     * 
     */
    void searchServices( const QString& remDevice );
    /**
     * search for services on a remote device
     */
    void searchServices( const RemoteDevices& );
    /*static*/ QString toDevice( const QString& mac );
    /*static*/ QString toMac( const QString &device );

  signals:
    // device either mac or dev name
    // the first device is the device which you access
    void connected( const QString& device, bool connected );
    void addedService( const QString& device, const QString& service, bool added );
    void removedService( const QString& device, const QString& service, bool removed );
    void foundServices( const QString& device, Services::ValueList );
    void foundDevices( const QString& device, RemoteDevices::ValueList );
  };
};

#endif