static int mk3_init(void) { int err; DBG(""); err = connman_network_driver_register(&network_driver); if(err < 0) { connman_error("Register network driver"); return err; } err = connman_device_driver_register(&mk3_driver); if(err < 0) { connman_error("Register device driver"); connman_network_driver_unregister(&network_driver); return err; } err = connman_technology_driver_register(&tech_driver); if(err < 0) { connman_error("Register technology driver"); connman_network_driver_unregister(&network_driver); connman_device_driver_unregister(&mk3_driver); return err; } return 0; }
static int ethernet_init(void) { int err; err = connman_technology_driver_register(ð_driver); if (err < 0) return err; err = connman_network_driver_register(&cable_driver); if (err < 0) return err; err = connman_device_driver_register(ðernet_driver); if (err < 0) { connman_network_driver_unregister(&cable_driver); return err; } err = connman_technology_driver_register(&tech_driver); if (err < 0) { connman_device_driver_unregister(ðernet_driver); connman_network_driver_unregister(&cable_driver); return err; } return 0; }
static int jolla_gps_init() { DBG(""); connection = connman_dbus_get_connection(); if (connection == NULL) { connman_warn("Failed to get dbus connection"); return -EIO; } watch = g_dbus_add_service_watch(connection, JOLLA_SERVICE, jolla_gps_connect, jolla_gps_disconnect, NULL, NULL); if (watch == 0) { connman_warn("Failed to add jolla service watcher"); dbus_connection_unref(connection); return -EIO; } device_watch = g_dbus_add_signal_watch(connection, JOLLA_SERVICE, JOLLA_DEVICE_PATH, JOLLA_DEVICE_INTERFACE, PROPERTY_CHANGED, device_changed, NULL, NULL); if (device_watch == 0) { connman_warn("Failed to add jolla device property changed signal watcher"); g_dbus_remove_watch(connection, watch); dbus_connection_unref(connection); return -EIO; } if (connman_technology_driver_register(&tech_driver) < 0) { connman_warn("Failed to initialize technology for Jolla GPS"); g_dbus_remove_watch(connection, device_watch); g_dbus_remove_watch(connection, watch); dbus_connection_unref(connection); return -EIO; } if (connman_device_driver_register(&device_driver) < 0) { connman_warn("Failed to initialize device driver for " JOLLA_SERVICE); connman_technology_driver_unregister(&tech_driver); g_dbus_remove_watch(connection, device_watch); g_dbus_remove_watch(connection, watch); dbus_connection_unref(connection); return -EIO; } jolla_gps_device = connman_device_create("gps", CONNMAN_DEVICE_TYPE_GPS); if (jolla_gps_device == NULL) { connman_warn("Failed to creat GPS device"); return -ENODEV; } if (connman_device_register(jolla_gps_device) < 0) { connman_warn("Failed to register GPS device"); connman_device_unref(jolla_gps_device); jolla_gps_device = NULL; return -EIO; } return 0; }
static int bluetooth_init(void) { connection = connman_dbus_get_connection(); if (!connection) goto out; if (connman_technology_driver_register(&tech_driver) < 0) { connman_warn("Failed to initialize technology for Bluez 5"); goto out; } devices = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, device_free); if (connman_device_driver_register(&device_driver) < 0) { connman_warn("Failed to initialize device driver for " BLUEZ_SERVICE); connman_technology_driver_unregister(&tech_driver); goto out; } if (connman_network_driver_register(&network_driver) < 0) { connman_technology_driver_unregister(&tech_driver); connman_device_driver_unregister(&device_driver); goto out; } networks = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, pan_free); client = g_dbus_client_new(connection, BLUEZ_SERVICE, BLUEZ_PATH); if (!client) { connman_warn("Failed to initialize D-Bus client for " BLUEZ_SERVICE); goto out; } g_dbus_client_set_proxy_handlers(client, object_added, object_removed, NULL, NULL); return 0; out: if (networks) g_hash_table_destroy(networks); if (devices) g_hash_table_destroy(devices); if (client) g_dbus_client_unref(client); if (connection) dbus_connection_unref(connection); return -EIO; }
static int hh2serial_init(void) { connman_device_driver_register(&hh2seial_device_driver); hh2serial_device = connman_device_create("hh2serial_gps", CONNMAN_DEVICE_TYPE_GPS); if (hh2serial_device == NULL) return -ENODEV; connman_device_register(hh2serial_device); return 0; }
static int mbm_init(void) { int err; err = connman_network_driver_register(&network_driver); if (err < 0) return err; err = connman_device_driver_register(&mbm_driver); if (err < 0) { connman_network_driver_unregister(&network_driver); return err; } return 0; }
static int hh2serial_init(void) { int err; err = connman_device_driver_register(&hh2serial_device_driver); if (err < 0) return err; hh2serial_device = connman_device_create("hh2serial_gps", CONNMAN_DEVICE_TYPE_GPS); if (!hh2serial_device) { connman_device_driver_unregister(&hh2serial_device_driver); return -ENODEV; } err = connman_device_register(hh2serial_device); if (err < 0) { connman_device_unref(hh2serial_device); return err; } return 0; }
static int qmi_init(void) { int err = 0; DBG(""); err = sem_init(&new_device_sem, 0, 0); if(err == -1) { connman_error("Failure init semaphore, error %d", errno); return -errno; } /* Create new hash table to store all connecting devices */ qmi_hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, free_hash_values); if(qmi_hash == NULL) { connman_error("Hash table could not be created."); return -ENOMEM; } connection = connman_dbus_get_connection(); if(connection == NULL) { connman_error("D-Bus connection failed"); return -EIO; } /* Create new D-Bus client to address qmi-dbus server */ qmi_client = g_dbus_client_new( connection, QMI_SERVICE, QMI_PATH); if(qmi_client == NULL) { connman_error("D-Bus client not created"); return -EIO; } /* Create new proxy client to address qmi-dbus manager interface */ qmi_proxy_manager = g_dbus_proxy_new( qmi_client, QMI_MANAGER_PATH, QMI_MANAGER_INTERFACE); if(qmi_proxy_manager == NULL) { connman_error("QMI proxy manager not created"); g_dbus_client_unref(qmi_client); return -EIO; } /* Watch appearing qmi-dbus */ watch_service = g_dbus_add_service_watch( connection, QMI_SERVICE, on_handle_qmi_connect, on_handle_qmi_disconnect, NULL, NULL); /* Watching qmi-dbus signals */ watch_property_changed = g_dbus_add_signal_watch( connection, QMI_SERVICE, NULL, QMI_DEVICE_INTERFACE, PROPERTY_CHANGED, on_handle_property_changed, NULL, NULL); watch_state_changed = g_dbus_add_signal_watch( connection, QMI_SERVICE, NULL, QMI_DEVICE_INTERFACE, STATE_CHANGED, on_handle_state_changed, NULL, NULL); watch_technology_changed = g_dbus_add_signal_watch( connection, QMI_SERVICE, NULL, QMI_DEVICE_INTERFACE, TECHNOLOGY_CHANGED, on_handle_technology_changed, NULL, NULL); if((watch_service == 0) || (watch_property_changed == 0) || (watch_state_changed == 0) || (watch_technology_changed == 0)) { connman_error("Adding service or signal watch"); err = -EIO; goto remove; } err = connman_network_driver_register(&network_driver); if(err < 0) { connman_error("Register network driver"); goto remove; } err = connman_device_driver_register(&qmi_driver); if(err < 0) { connman_error("Register device driver"); connman_network_driver_unregister(&network_driver); goto remove; } err = connman_technology_driver_register(&tech_driver); if(err < 0) { connman_error("Register technology driver"); connman_network_driver_unregister(&network_driver); connman_device_driver_unregister(&qmi_driver); goto remove; } return 0; remove: g_dbus_remove_watch(connection, watch_service); g_dbus_remove_watch(connection, watch_property_changed); g_dbus_remove_watch(connection, watch_state_changed); g_dbus_remove_watch(connection, watch_technology_changed); g_dbus_proxy_unref(qmi_proxy_manager); g_dbus_client_unref(qmi_client); dbus_connection_unref(connection); return err; }
static int ethernet_init(void) { return connman_device_driver_register(ðernet_driver); }
static int bluetooth_init(void) { int err; connection = connman_dbus_get_connection(); if (connection == NULL) return -EIO; watch = g_dbus_add_service_watch(connection, BLUEZ_SERVICE, bluetooth_connect, bluetooth_disconnect, NULL, NULL); added_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_MANAGER_INTERFACE, ADAPTER_ADDED, adapter_added, NULL, NULL); removed_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_MANAGER_INTERFACE, ADAPTER_REMOVED, adapter_removed, NULL, NULL); adapter_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_ADAPTER_INTERFACE, PROPERTY_CHANGED, adapter_changed, NULL, NULL); device_removed_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_ADAPTER_INTERFACE, DEVICE_REMOVED, device_removed, NULL, NULL); device_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_DEVICE_INTERFACE, PROPERTY_CHANGED, device_changed, NULL, NULL); network_watch = g_dbus_add_signal_watch(connection, BLUEZ_SERVICE, NULL, BLUEZ_NETWORK_INTERFACE, PROPERTY_CHANGED, network_changed, NULL, NULL); if (watch == 0 || added_watch == 0 || removed_watch == 0 || adapter_watch == 0 || network_watch == 0 || device_watch == 0 || device_removed_watch == 0) { err = -EIO; goto remove; } err = connman_network_driver_register(&pan_driver); if (err < 0) goto remove; err = connman_device_driver_register(&bluetooth_driver); if (err < 0) { connman_network_driver_unregister(&pan_driver); goto remove; } err = connman_technology_driver_register(&tech_driver); if (err < 0) { connman_device_driver_unregister(&bluetooth_driver); connman_network_driver_unregister(&pan_driver); goto remove; } return 0; remove: g_dbus_remove_watch(connection, watch); g_dbus_remove_watch(connection, added_watch); g_dbus_remove_watch(connection, removed_watch); g_dbus_remove_watch(connection, adapter_watch); g_dbus_remove_watch(connection, device_removed_watch); g_dbus_remove_watch(connection, device_watch); g_dbus_remove_watch(connection, network_watch); dbus_connection_unref(connection); return err; }