summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2021-12-20 17:17:37 -0500
committerScott Murray <scott.murray@konsulko.com>2021-12-20 17:55:18 -0500
commit701f44587eabaa78dc1c180d8ca0ac8f848941d5 (patch)
tree3c81191543cfa4be02f0b1237fd1129916b8e0ab /include
parent5a2ac9498d1aed3d1307dde3a3028dd3444bba0f (diff)
GLib based interface library for BlueZ, factored out of the agl-service-bluetooth binding code. See README.md for build and usage notes and the mapping of the new source files to those in the binding if that is for some reason required. Currently untested functionality: * autoconnect on startup * mediaplayer controls Bug-AGL: SPEC-4182 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I7e70962ebabb138f81b9ba69af82f4ca0152dc31
Diffstat (limited to 'include')
-rw-r--r--include/bluez-glib.h161
-rw-r--r--include/meson.build1
2 files changed, 162 insertions, 0 deletions
diff --git a/include/bluez-glib.h b/include/bluez-glib.h
new file mode 100644
index 0000000..25abecb
--- /dev/null
+++ b/include/bluez-glib.h
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2021 Konsulko Group
+ *
+ * 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 BLUEZ_GLIB_H
+#define BLUEZ_GLIB_H
+
+#include <glib.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef enum {
+ BLUEZ_LOG_LEVEL_ERROR,
+ BLUEZ_LOG_LEVEL_WARNING,
+ BLUEZ_LOG_LEVEL_INFO,
+ BLUEZ_LOG_LEVEL_DEBUG
+} bluez_log_level_t;
+
+// Hook to allow users to override the default level
+#ifndef BLUEZ_LOG_LEVEL_DEFAULT
+#define BLUEZ_LOG_LEVEL_DEFAULT BLUEZ_LOG_LEVEL_ERROR
+#endif
+
+typedef enum {
+ BLUEZ_EVENT_ADD,
+ BLUEZ_EVENT_REMOVE,
+ BLUEZ_EVENT_CHANGE
+} bluez_event_t;
+
+typedef enum {
+ BLUEZ_AGENT_EVENT_REQUEST_CONFIRMATION,
+ BLUEZ_AGENT_EVENT_AUTHORIZE_SERVICE,
+ BLUEZ_AGENT_EVENT_CANCELLED_PAIRING
+} bluez_agent_event_t;
+
+typedef enum {
+ BLUEZ_MEDIA_CONTROL_CONNECT,
+ BLUEZ_MEDIA_CONTROL_DISCONNECT,
+ BLUEZ_MEDIA_CONTROL_PLAY,
+ BLUEZ_MEDIA_CONTROL_PAUSE,
+ BLUEZ_MEDIA_CONTROL_STOP,
+ BLUEZ_MEDIA_CONTROL_NEXT,
+ BLUEZ_MEDIA_CONTROL_PREVIOUS,
+ BLUEZ_MEDIA_CONTROL_FASTFORWARD,
+ BLUEZ_MEDIA_CONTROL_REWIND
+} bluez_media_control_t;
+
+typedef void (*bluez_init_cb_t)(gchar *adapter, gboolean status, gpointer user_data);
+
+typedef void (*bluez_adapter_event_cb_t)(gchar *adapter,
+ bluez_event_t event,
+ GVariant *properties,
+ gpointer user_data);
+
+typedef void (*bluez_device_event_cb_t)(gchar *adapter,
+ gchar *device,
+ bluez_event_t event,
+ GVariant *properties,
+ gpointer user_data);
+
+typedef void (*bluez_media_control_event_cb_t)(gchar *adapter,
+ gchar *device,
+ gchar *endpoint,
+ bluez_event_t event,
+ GVariant *properties,
+ gpointer user_data);
+
+typedef void (*bluez_media_player_event_cb_t)(gchar *adapter,
+ gchar *device,
+ gchar *player,
+ bluez_event_t event,
+ GVariant *properties,
+ gpointer user_data);
+
+typedef void (*bluez_agent_event_cb_t)(gchar *device,
+ bluez_agent_event_t event,
+ GVariant *properties,
+ gpointer user_data);
+
+typedef void (*bluez_device_connect_cb_t)(gchar *device, gboolean status, gpointer user_data);
+
+typedef void (*bluez_device_pair_cb_t)(gchar *device, gboolean status, gpointer user_data);
+
+void bluez_add_adapter_event_callback(bluez_adapter_event_cb_t cb, gpointer user_data);
+
+void bluez_add_device_event_callback(bluez_device_event_cb_t cb, gpointer user_data);
+
+void bluez_add_media_control_event_callback(bluez_media_control_event_cb_t cb, gpointer user_data);
+
+void bluez_add_media_player_event_callback(bluez_media_player_event_cb_t cb, gpointer user_data);
+
+void bluez_add_agent_event_callback(bluez_agent_event_cb_t cb, gpointer user_data);
+
+void bluez_set_log_level(bluez_log_level_t level);
+
+gboolean bluez_init(gboolean register_agent,
+ gboolean autoconnect,
+ bluez_init_cb_t cb,
+ gpointer user_data);
+
+char *bluez_get_default_adapter(void);
+
+gboolean bluez_set_default_adapter(const char *adapter, char **adapter_new);
+
+gboolean bluez_get_managed_objects(GVariant **reply);
+
+gboolean bluez_get_adapters(GArray **reply);
+
+gboolean bluez_adapter_get_state(const char *adapter, GVariant **reply);
+
+gboolean bluez_adapter_get_devices(const char *adapter, GVariant **reply);
+
+gboolean bluez_adapter_set_discovery(const char *adapter, gboolean scan);
+
+gboolean bluez_adapter_set_discovery_filter(const char *adapter, gchar **uuids, gchar *transport);
+
+gboolean bluez_adapter_set_discoverable(const char *adapter, gboolean discoverable);
+
+gboolean bluez_adapter_set_powered(const char *adapter, gboolean powered);
+
+gboolean bluez_device_connect(const char *device,
+ const char *uuid,
+ bluez_device_connect_cb_t cb,
+ gpointer user_data);
+
+gboolean bluez_device_disconnect(const char *device, const char *uuid);
+
+gboolean bluez_device_pair(const char *device,
+ bluez_device_pair_cb_t cb,
+ gpointer user_data);
+
+gboolean bluez_cancel_pairing(void);
+
+gboolean bluez_confirm_pairing(const char *pincode_str);
+
+gboolean bluez_device_remove(const char *device);
+
+gboolean bluez_device_avrcp_controls(const char *device, bluez_media_control_t action);
+
+gboolean bluez_set_pincode(const char *pincode);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif /* BLUEZ_GLIB_H */
diff --git a/include/meson.build b/include/meson.build
new file mode 100644
index 0000000..40776e2
--- /dev/null
+++ b/include/meson.build
@@ -0,0 +1 @@
+install_headers('bluez-glib.h')