aboutsummaryrefslogtreecommitdiffstats
path: root/src/BluetoothAdapter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/BluetoothAdapter.cpp')
-rw-r--r--src/BluetoothAdapter.cpp248
1 files changed, 248 insertions, 0 deletions
diff --git a/src/BluetoothAdapter.cpp b/src/BluetoothAdapter.cpp
new file mode 100644
index 00000000..505e46cf
--- /dev/null
+++ b/src/BluetoothAdapter.cpp
@@ -0,0 +1,248 @@
+/*
+ * Author: Petre Eftime <[email protected]>
+ * Copyright (c) 2015 Intel Corporation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "generated-code.h"
+#include "tinyb_utils.hpp"
+#include "BluetoothAdapter.hpp"
+#include "BluetoothDevice.hpp"
+#include "BluetoothManager.hpp"
+
+using namespace tinyb;
+
+std::string BluetoothAdapter::get_class_name() const
+{
+ return std::string("BluetoothAdapter");
+}
+
+std::string BluetoothAdapter::get_java_class() const
+{
+ return std::string(JAVA_PACKAGE "/BluetoothAdapter");
+}
+
+std::string BluetoothAdapter::get_object_path() const
+{
+ return std::string(g_dbus_proxy_get_object_path(G_DBUS_PROXY(object)));
+}
+
+BluetoothType BluetoothAdapter::get_bluetooth_type() const
+{
+ return BluetoothType::ADAPTER;
+}
+
+BluetoothAdapter::BluetoothAdapter(Adapter1 *object)
+{
+ this->object = object;
+ g_object_ref(object);
+}
+
+BluetoothAdapter::BluetoothAdapter(const BluetoothAdapter &object)
+{
+ BluetoothAdapter(object.object);
+}
+
+BluetoothAdapter *BluetoothAdapter::clone() const
+{
+ return new BluetoothAdapter(object);
+}
+
+BluetoothAdapter::~BluetoothAdapter()
+{
+ g_object_unref(object);
+}
+
+std::unique_ptr<BluetoothAdapter> BluetoothAdapter::make(Object *object,
+ BluetoothType type, std::string *name, std::string *identifier,
+ BluetoothObject *parent)
+{
+ Adapter1 *adapter;
+ if((type == BluetoothType::NONE || type == BluetoothType::ADAPTER) &&
+ (adapter = object_get_adapter1(object)) != NULL) {
+
+ std::unique_ptr<BluetoothAdapter> p(new BluetoothAdapter(adapter));
+
+ if ((name == nullptr || *name == p->get_name()) &&
+ (identifier == nullptr || *identifier == p->get_address()) &&
+ (parent == nullptr))
+ return p;
+ }
+
+ return std::unique_ptr<BluetoothAdapter>();
+}
+
+std::vector<std::unique_ptr<BluetoothDevice>> BluetoothAdapter::get_devices()
+{
+ std::vector<std::unique_ptr<BluetoothDevice>> vector;
+ BluetoothManager *manager = BluetoothManager::get_bluetooth_manager();
+ GList *l, *objects = g_dbus_object_manager_get_objects(gdbus_manager);
+
+ for (l = objects; l != NULL; l = l->next) {
+ Object *object = OBJECT(l->data);
+
+ auto p = BluetoothDevice::make(object,
+ BluetoothType::DEVICE, NULL, NULL, this);
+ if (p != nullptr)
+ vector.push_back(std::move(p));
+ }
+
+ return vector;
+}
+
+/* D-Bus method calls: */
+bool BluetoothAdapter::start_discovery ()
+{
+ GError *error = NULL;
+ bool result = adapter1_call_start_discovery_sync(
+ object,
+ NULL,
+ &error
+ );
+ if (error)
+ g_printerr("Error: %s\n", error->message);
+ return result;
+}
+
+bool BluetoothAdapter::stop_discovery ()
+{
+ GError *error = NULL;
+ bool result = adapter1_call_stop_discovery_sync(
+ object,
+ NULL,
+ &error
+ );
+ if (error)
+ g_printerr("Error: %s\n", error->message);
+ return result;
+}
+
+bool BluetoothAdapter::remove_device (
+ const std::string &arg_device)
+{
+ GError *error = NULL;
+ bool result = adapter1_call_remove_device_sync(
+ object,
+ arg_device.c_str(),
+ NULL,
+ &error
+ );
+ if (error)
+ g_printerr("Error: %s\n", error->message);
+ return result;
+}
+
+
+
+/* D-Bus property accessors: */
+std::string BluetoothAdapter::get_address ()
+{
+ return std::string(adapter1_get_address (object));
+}
+
+std::string BluetoothAdapter::get_name ()
+{
+ return std::string(adapter1_get_name (object));
+}
+
+std::string BluetoothAdapter::get_alias ()
+{
+ return std::string(adapter1_get_alias (object));
+}
+
+void BluetoothAdapter::set_alias (const std::string &value)
+{
+ adapter1_set_alias (object, value.c_str());
+}
+
+unsigned int BluetoothAdapter::get_class ()
+{
+ return adapter1_get_class (object);
+}
+
+bool BluetoothAdapter::get_powered ()
+{
+ return adapter1_get_powered (object);
+}
+
+void BluetoothAdapter::set_powered (bool value)
+{
+ adapter1_set_powered (object, value);
+}
+
+bool BluetoothAdapter::get_discoverable ()
+{
+ return adapter1_get_discoverable (object);
+}
+
+void BluetoothAdapter::set_discoverable (bool value)
+{
+ adapter1_set_discoverable (object, value);
+}
+
+unsigned int BluetoothAdapter::get_discoverable_timeout ()
+{
+ return adapter1_get_discoverable_timeout (object);
+}
+
+void BluetoothAdapter::set_discoverable_timeout (unsigned int value)
+{
+ adapter1_set_discoverable_timeout (object, value);
+}
+
+bool BluetoothAdapter::get_pairable ()
+{
+ return adapter1_get_pairable (object);
+}
+
+void BluetoothAdapter::set_pairable (bool value)
+{
+ adapter1_set_pairable (object, value);
+}
+
+unsigned int BluetoothAdapter::get_pairable_timeout ()
+{
+ return adapter1_get_pairable_timeout (object);
+}
+
+void BluetoothAdapter::set_pairable_timeout (unsigned int value)
+{
+ adapter1_set_pairable_timeout (object, value);
+}
+
+bool BluetoothAdapter::get_discovering ()
+{
+ return adapter1_get_discovering (object);
+}
+
+std::vector<std::string> BluetoothAdapter::get_uuids ()
+{
+ const char * const *uuids_c = adapter1_get_uuids (object);
+ std::vector<std::string> uuids;
+ for (int i = 0; uuids_c[i] != NULL ;i++)
+ uuids.push_back(std::string(uuids_c[i]));
+ return uuids;
+}
+
+std::string BluetoothAdapter::get_modalias ()
+{
+ return std::string(adapter1_get_modalias (object));
+}