summaryrefslogtreecommitdiff
path: root/exampleCode/player/dbushandler.h
blob: 884f8c1919ba6d21d31125503bc7194f17b6daee (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
#ifndef DBUSHANDLER_H
#define DBUSHANDLER_H

/**
 * Copyright (C) 2012, BMW AG
 *
 *
 * \copyright
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation, version 2
 * of the License.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 *
 * \author Christian Mueller, christian.ei.mueller@bmw.de BMW 2011,2012
 * \author Sruthi Mohan
 *
 *
 */

/**
     * This is the Class that handles dbus message message communication.
     * This is implemented using glib-dbus-c binding
     * @author Sruthi Mohan
     * @version 1.0
     * @created 10-Feb-2012 1:31:06 PM
     */
#include <stdio.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <dbus/dbus.h>
#include <glib.h>
#include <stdint.h>
#include <dbus/dbus-glib.h>
#include "audiomanagertypes.h"
#include <dbus/dbus-glib-bindings.h>
#include <QObject>
#include <iostream>
#include <vector>

#define SERVICE_NAME "org.genivi.audiomanager"
#define PATH_NAME "/org/genivi/audiomanager/CommandInterface"
#define INTERFACENAME "org.genivi.audiomanager.CommandInterface"

using namespace std;
using namespace am;
class AudiomanagerHMIController;

class DbusHandler : public QObject
{
    Q_OBJECT
public:
    explicit DbusHandler();
signals:
    void NumberOfConnectionsChanged();
    void Volumechanged(am_sinkID_t,am_volume_t);
    void SoundpropertyChanged(am_sinkID_t,am_MainSoundProperty_s);
    void Mutestatechanged(am_sinkID_t,am_MuteState_e);
    void SourceActivity(am_sourceID_t source,am_SourceState_e state);
public slots:
    static void* Initialize(void*);
    int Sender();
    int Sender_forlists();
    am_Error_e connect(am_sourceID_t SourceID,am_sinkID_t SinkID ,am_connectionID_t &ConnectionID);
    am_Error_e disconnect(unsigned int ConnectionID);
    am_Error_e SetVolume(const am_sinkID_t sinkID, const am_mainVolume_t volume) ;
    am_Error_e VolumeStep(const am_sinkID_t sinkID, const int16_t volumeStep) ;
    am_Error_e SetSinkMuteState(const am_sinkID_t sinkID, const am_MuteState_e muteState) ;
    am_Error_e SetMainSinkSoundProperty( const am_sinkID_t sinkID,const am_MainSoundProperty_s& soundProperty) ;
    am_Error_e GetListMainConnections(std::vector<am_MainConnectionType_s* >& listConnections)  ;
    am_Error_e GetListMainSinks(std::vector<am_SinkType_s>& listSinks)  ;
    am_Error_e GetListMainSources(std::vector<am_SourceType_s>& listSources)  ;
    am_Error_e GetListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s*>& listSoundProperties)  ;
    static DBusHandlerResult signal_filter(DBusConnection *c, DBusMessage *message, void *user_data);

private:
    static DBusMessage* msg;
    static DBusMessageIter args;
    static DBusConnection* conn;
    static DBusError err;
    static DBusPendingCall* pending;
    static gboolean ret;
    static dbus_uint16_t result;
    static GMainLoop* mainloop;
};
struct s_userdata
{
    GMainLoop* Tempmainloop;
    DbusHandler *ptrDbusHanndler;
};

#endif // DBUSHANDLER_H