summaryrefslogtreecommitdiffstats
path: root/bluetooth-manager.h
blob: 3602a786da25fb5d1218c0ac0d56dae505427ed8 (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*  Copyright 2016 ALPS ELECTRIC CO., LTD.
*
*   Licensed under the Apache License, Version 2.0 (the "License");
*   you may not use this file except in compliance with the License.
*   You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software
*   distributed under the License is distributed on an "AS IS" BASIS,
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*   See the License for the specific language governing permissions and
*   limitations under the License.
*/


#ifndef BLUETOOTH_MANAGER_H
#define BLUETOOTH_MANAGER_H

#include <glib.h>
#include <glib-object.h>
//#include <dbus/dbus.h>
#include <glib.h>
#include <gio/gio.h>
#include <glib-object.h>
//service
#define AGENT_SERVICE               "org.agent"

//remote service
#define BLUEZ_SERVICE               "org.bluez"
#define OFONO_SERVICE               "org.ofono"
#define CLIENT_SERVICE              "org.bluez.obex"

//object path
#define OFONO_MANAGER_PATH          "/"
#define ADAPTER_PATH                "/org/bluez/hci0"
#define OBEX_CLIENT_PATH            "/org/bluez/obex"
#define AGENT_PATH                  "/org/bluez"

//interface
#define ADAPTER_INTERFACE           "org.bluez.Adapter1"
#define DEVICE_INTERFACE            "org.bluez.Device1"
#define AGENT_MANAGER_INTERFACE     "org.bluez.AgentManager"
#define SERVICE_INTERFACE           "org.bluez.Service"
#define AGENT_INTERFACE             "org.bluez.Agent"

#define CLIENT_INTERFACE            "org.bluez.obex.Client"
#define TRANSFER_INTERFACE          "org.bluez.obex.Transfer"
#define SESSION_INTERFACE           "org.bluez.obex.Session"
#define OBEX_ERROR_INTERFACE        "org.bluez.obex.Error"
#define BLUEZ_ERROR_INTERFACE       "org.bluez.Error"
#define PBAP_INTERFACE              "org.bluez.obex.PhonebookAccess"
#define MAP_INTERFACE               "org.bluez.obex.MessageAccess"
#define MAP_MSG_INTERFACE           "org.bluez.obex.Message"

#define MEDIA_PLAYER_INTERFACE      "org.bluez.MediaPlayer"
#define MEDIA_FOLDER_INTERFACE      "org.bluez.MediaFolder"
#define MEDIA_ITEM_INTERFACE        "org.bluez.MediaItem"
#define MEDIA_TRANSPORT_INTERFACE   "org.bluez.MediaTransport"
#define MEDIA_CONTROL1_INTERFACE   "org.bluez.MediaControl1"


#define OFONO_HANDSFREE_INTERFACE               "org.ofono.Handsfree"
#define OFONO_MANAGER_INTERFACE                 "org.ofono.Manager"
#define OFONO_MODEM_INTERFACE                   "org.ofono.Modem"
#define OFONO_VOICECALL_INTERFACE               "org.ofono.VoiceCall"
#define OFONO_VOICECALL_MANAGER_INTERFACE       "org.ofono.VoiceCallManager"
#define OFONO_NETWORK_REGISTRATION_INTERFACE    "org.ofono.NetworkRegistration"
#define OFONO_NETWORK_OPERATOR_INTERFACE        "org.ofono.NetworkOperator"
#define OFONO_CALL_VOLUME_INTERFACE             "org.ofono.CallVolume"

#define FREEDESKTOP_INTROSPECT      "org.freedesktop.DBus.Introspectable"
#define FREEDESKTOP_PROPERTIES      "org.freedesktop.DBus.Properties"


#define CONVERTER_CONN              (cli.sys_conn)
#define AGENT_CONN                  (cli.agent_conn)
#define OBEX_CONN                   (cli.obex_conn)

#define HOMESCREEN_SERVICE				"org.agl.homescreen"
#define HOMESCREEN_ICON_INTERFACE		"org.agl.statusbar"
#define HOMESCREEN_ICON_PATH			"/StatusBar"
#define HOMESCREEN_BT_ICON_POSITION		1

#define DBUS_REPLY_TIMEOUT (120 * 1000)
#define DBUS_REPLY_TIMEOUT_SHORT (10 * 1000)

//typedef void(*callback)(void);
typedef void(*callback)(int password_rejected_flag);
void register_callback(callback ptr);


typedef struct _client
{
    GDBusConnection *sys_conn;
    GDBusConnection *agent_conn;
    GDBusConnection *obex_conn;
    GMainLoop *clientloop;
//    FILE *fd;
//    int conn_fd;
} Client;

//Bluetooth Device Properties
struct btd_device {
    gchar   *bdaddr;
    gchar   *path;
    gchar   *name;
    gboolean    paired;
    gboolean    trusted;
    gboolean    blocked;
    gboolean    connected;
    gboolean    avconnected;
    gboolean    hfpconnected;
    GSList        *uuids;
};

typedef struct {
    gboolean inited;
    GMutex m;
    GSList * device;
} stBluetoothManage;

enum btStates {INACTIVE, ACTIVE};


int BluetoothManageInit(void);

int adapter_set_powered(gboolean value);
int adapter_get_powered(gboolean *value);
int adapter_set_discoverable(gboolean value);
int adapter_start_discovery();
int adapter_stop_discovery();
int adapter_update_devices();
GSList* adapter_get_devices_list();
int adapter_remove_device(struct btd_device * addr);
int device_pair(struct btd_device * addr);
int device_cancelPairing(struct btd_device * addr);
int device_connect(struct btd_device * addr);
//int device_connectProfile();
int device_disconnect(struct btd_device * addr);
//int device_disconnectProfile();
int device_set_property(struct btd_device * addr, const char *property, const char *value);

int isAVPConnected(struct btd_device *BDdevice);
int isHFPConnected(struct btd_device *BDdevice);

GError* setHMIStatus(enum btStates);


#endif /* BLUETOOTH_MANAGER_H */


/************************************** The End Of File **************************************/