2013-04-23 08:08:29 -07:00
|
|
|
#include "Eldbus.h"
|
2013-01-04 08:11:48 -08:00
|
|
|
|
|
|
|
#define BLUEZ_BUS "org.bluez"
|
|
|
|
#define MANAGER_PATH "/"
|
2013-01-04 08:12:15 -08:00
|
|
|
#define INPUT_INTERFACE "org.bluez.Input"
|
2013-01-04 08:12:24 -08:00
|
|
|
#define AUDIO_SOURCE_INTERFACE "org.bluez.AudioSource"
|
|
|
|
#define AUDIO_SINK_INTERFACE "org.bluez.AudioSink"
|
2013-01-04 08:12:15 -08:00
|
|
|
#define DEVICE_INTERFACE "org.bluez.Device"
|
2013-01-04 08:11:48 -08:00
|
|
|
#define ADAPTER_INTERFACE "org.bluez.Adapter"
|
|
|
|
#define MANAGER_INTERFACE "org.bluez.Manager"
|
|
|
|
|
2013-01-04 08:12:24 -08:00
|
|
|
#define HumanInterfaceDevice_UUID "00001124-0000-1000-8000-00805f9b34fb"
|
|
|
|
#define AudioSource_UUID "0000110a-0000-1000-8000-00805f9b34fb"
|
|
|
|
#define AudioSink_UUID "0000110b-0000-1000-8000-00805f9b34fb"
|
|
|
|
|
|
|
|
typedef enum _Profile
|
|
|
|
{
|
|
|
|
INPUT,
|
|
|
|
AUDIO_SOURCE,
|
|
|
|
AUDIO_SINK,
|
|
|
|
NONE
|
|
|
|
} Profile;
|
|
|
|
|
|
|
|
typedef struct _Service
|
|
|
|
{
|
|
|
|
const char *uuid;
|
|
|
|
Profile profile;
|
|
|
|
} Service;
|
|
|
|
|
2013-01-04 08:11:48 -08:00
|
|
|
typedef struct _Device
|
|
|
|
{
|
|
|
|
const char *addr;
|
|
|
|
const char *name;
|
2013-01-04 08:13:30 -08:00
|
|
|
const char *type;
|
2013-01-04 08:12:15 -08:00
|
|
|
Eina_Bool paired;
|
|
|
|
Eina_Bool connected;
|
2013-04-23 08:08:29 -07:00
|
|
|
Eldbus_Object *obj;
|
2013-01-04 08:12:24 -08:00
|
|
|
struct
|
|
|
|
{
|
2013-04-23 08:08:29 -07:00
|
|
|
Eldbus_Proxy *dev;
|
|
|
|
Eldbus_Proxy *input;
|
|
|
|
Eldbus_Proxy *audio_sink;
|
|
|
|
Eldbus_Proxy *audio_source;
|
2013-01-04 08:12:24 -08:00
|
|
|
} proxy;
|
2013-01-04 08:11:48 -08:00
|
|
|
} Device;
|
|
|
|
|
2013-01-04 08:13:03 -08:00
|
|
|
typedef struct _Adapter
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
Eina_Bool visible;
|
|
|
|
Eina_Bool pairable;
|
|
|
|
Eina_Bool powered;
|
2013-01-04 08:13:07 -08:00
|
|
|
int visible_checked;
|
|
|
|
int pairable_checked;
|
|
|
|
int powered_checked;
|
2013-01-04 08:13:03 -08:00
|
|
|
Eina_Bool is_default;
|
2013-01-04 08:13:07 -08:00
|
|
|
E_Dialog *dialog;
|
2013-04-23 08:08:29 -07:00
|
|
|
Eldbus_Object *obj;
|
|
|
|
Eldbus_Proxy *proxy;
|
2013-01-04 08:13:03 -08:00
|
|
|
} Adapter;
|
|
|
|
|
2013-01-04 08:11:48 -08:00
|
|
|
typedef struct _Context
|
|
|
|
{
|
2013-04-23 08:08:29 -07:00
|
|
|
Eldbus_Connection *conn;
|
|
|
|
Eldbus_Object *adap_obj;
|
|
|
|
Eldbus_Proxy *man_proxy;
|
|
|
|
Eldbus_Proxy *adap_proxy;
|
2013-01-04 08:11:48 -08:00
|
|
|
Eina_List *devices;
|
2013-01-04 08:12:28 -08:00
|
|
|
Eina_List *found_devices;
|
2013-01-04 08:13:03 -08:00
|
|
|
Eina_List *adapters;
|
2013-01-04 08:11:48 -08:00
|
|
|
} Context;
|
|
|
|
|
2013-01-04 08:12:20 -08:00
|
|
|
Context *ctxt;
|
|
|
|
|
2013-04-23 08:08:29 -07:00
|
|
|
void ebluez4_eldbus_init(void);
|
|
|
|
void ebluez4_eldbus_shutdown(void);
|
2013-01-04 08:13:12 -08:00
|
|
|
void ebluez4_start_discovery(void);
|
|
|
|
void ebluez4_stop_discovery(void);
|
2013-01-04 08:12:45 -08:00
|
|
|
void ebluez4_connect_to_device(Device *dev);
|
2013-01-04 08:12:50 -08:00
|
|
|
void ebluez4_disconnect_device(Device *dev);
|
2013-01-04 08:12:58 -08:00
|
|
|
void ebluez4_pair_with_device(const char *addr, void (*cb)(void *, Eina_Bool, const char *), void *data);
|
2013-04-23 08:08:29 -07:00
|
|
|
void ebluez4_remove_device(Eldbus_Object *obj);
|
2013-01-04 08:13:03 -08:00
|
|
|
int ebluez4_dev_path_cmp(const void *d1, const void *d2);
|
2013-01-04 08:13:07 -08:00
|
|
|
void ebluez4_adapter_property_set(Adapter *adap, const char *prop_name, Eina_Bool value);
|