예제 #1
0
int network_manager_init(DBusConnection *conn)
{
	read_config(CONFIGDIR "/network.conf");

	if (bnep_init()) {
		error("Can't init bnep module");
		return -1;
	}

	/*
	 * There is one socket to handle the incomming connections. NAP,
	 * GN and PANU servers share the same PSM. The initial BNEP message
	 * (setup connection request) contains the destination service
	 * field that defines which service the source is connecting to.
	 */

	if (server_init(conn, conf_security, conf_master) < 0)
		return -1;

	/* Register network server if it doesn't exist */
	btd_register_adapter_driver(&network_server_driver);

	if (connection_init(conn) < 0)
		return -1;

	btd_register_device_driver(&network_panu_driver);
	btd_register_device_driver(&network_gn_driver);
	btd_register_device_driver(&network_nap_driver);

	connection = dbus_connection_ref(conn);

	return 0;
}
int input_manager_init(DBusConnection *conn, GKeyFile *config)
{
	GError *err = NULL;

	if (config) {
		idle_timeout = g_key_file_get_integer(config, "General",
						"IdleTimeout", &err);
		if (err) {
			DBG("input.conf: %s", err->message);
			g_error_free(err);
		}
	}

	connection = dbus_connection_ref(conn);

#ifndef BT_ALT_STACK
	btd_register_adapter_driver(&input_server_driver);
#endif

	btd_register_device_driver(&input_hid_driver);
#ifndef BT_ALT_STACK
	btd_register_device_driver(&input_headset_driver);
#endif

	return 0;
}
예제 #3
0
int reporter_init(struct btd_adapter *adapter)
{
	struct reporter_adapter *radapter;
	DBusConnection *conn;

	if (!main_opts.gatt_enabled) {
		DBG("GATT is disabled");
		return -ENOTSUP;
	}

	conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
	if (!conn)
		return -1;

	radapter = g_new0(struct reporter_adapter, 1);
	radapter->adapter = adapter;
	radapter->conn = conn;

	link_loss_register(adapter, radapter->conn);
	register_tx_power(adapter);
	imm_alert_register(adapter, radapter->conn);

	btd_register_device_driver(&reporter_device_driver);

	reporter_adapters = g_slist_prepend(reporter_adapters, radapter);
	DBG("Proximity Reporter for adapter %p", adapter);

	return 0;
}
예제 #4
0
파일: manager.c 프로젝트: Bisheg/bluez
int serial_manager_init(DBusConnection *conn)
{
	connection = dbus_connection_ref(conn);

	btd_register_adapter_driver(&serial_proxy_driver);
	btd_register_device_driver(&serial_port_driver);

	return 0;
}
예제 #5
0
int batterystate_manager_init(DBusConnection *conn)
{
	int ret;

	ret = btd_register_device_driver(&battery_device_driver);
	if (!ret)
		connection = dbus_connection_ref(conn);

	return ret;
}
예제 #6
0
int thermometer_manager_init(DBusConnection *conn)
{
	int ret;

	ret = btd_register_device_driver(&thermometer_device_driver);
	if (ret < 0)
                return ret;

	connection = dbus_connection_ref(conn);
	return 0;
}
예제 #7
0
int hdp_manager_init(DBusConnection *conn)
{
	if (hdp_manager_start(conn))
		return -1;

	connection = dbus_connection_ref(conn);
	btd_register_adapter_driver(&hdp_adapter_driver);
	btd_register_device_driver(&hdp_device_driver);

	return 0;
}
예제 #8
0
static int serial_init(void)
{
	conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
	if (conn == NULL)
		return -EIO;

	if (serial_manager_init(conn) < 0) {
		dbus_connection_unref(conn);
		return -EIO;
	}

	btd_register_device_driver(&serial_driver);

	return 0;
}
예제 #9
0
static int hog_manager_init(void)
{
	return btd_register_device_driver(&hog_driver);
}
예제 #10
0
int audio_manager_init(DBusConnection *conn, GKeyFile *conf,
							gboolean *enable_sco)
{
	char **list;
	int i;
	char *str;
	gboolean b;
	GError *err = NULL;

	connection = dbus_connection_ref(conn);

	if (!conf)
		goto proceed;

	config = conf;

	list = g_key_file_get_string_list(config, "General", "Enable",
						NULL, NULL);
	for (i = 0; list && list[i] != NULL; i++) {
		if (g_str_equal(list[i], "Headset"))
			enabled.headset = TRUE;
		else if (g_str_equal(list[i], "Gateway"))
			enabled.gateway = TRUE;
		else if (g_str_equal(list[i], "Sink"))
			enabled.sink = TRUE;
		else if (g_str_equal(list[i], "Source"))
			enabled.source = TRUE;
		else if (g_str_equal(list[i], "Control"))
			enabled.control = TRUE;
		else if (g_str_equal(list[i], "Socket"))
			enabled.socket = TRUE;
		else if (g_str_equal(list[i], "Media"))
			enabled.media = TRUE;
	}
	g_strfreev(list);

	list = g_key_file_get_string_list(config, "General", "Disable",
						NULL, NULL);
	for (i = 0; list && list[i] != NULL; i++) {
		if (g_str_equal(list[i], "Headset"))
			enabled.headset = FALSE;
		else if (g_str_equal(list[i], "Gateway"))
			enabled.gateway = FALSE;
		else if (g_str_equal(list[i], "Sink"))
			enabled.sink = FALSE;
		else if (g_str_equal(list[i], "Source"))
			enabled.source = FALSE;
		else if (g_str_equal(list[i], "Control"))
			enabled.control = FALSE;
		else if (g_str_equal(list[i], "Socket"))
			enabled.socket = FALSE;
		else if (g_str_equal(list[i], "Media"))
			enabled.media = FALSE;
	}
	g_strfreev(list);

	b = g_key_file_get_boolean(config, "General", "AutoConnect", &err);
	if (err) {
		DBG("audio.conf: %s", err->message);
		g_clear_error(&err);
	} else
		auto_connect = b;

	b = g_key_file_get_boolean(config, "Headset", "HFP",
					&err);
	if (err)
		g_clear_error(&err);
	else
		enabled.hfp = b;

	err = NULL;
	i = g_key_file_get_integer(config, "Headset", "MaxConnected",
					&err);
	if (err) {
		DBG("audio.conf: %s", err->message);
		g_clear_error(&err);
	} else
		max_connected_headsets = i;

	str = g_key_file_get_string(config, "WBspeech",
						"I2sEnable", &err);
	if (err)
		g_clear_error(&err);
	else {
		wbs_commands_param.I2sEnable = strtol(str, NULL, 16);
	}

	str = g_key_file_get_string(config, "WBspeech",
						"IsMaster", &err);
	if (err)
		g_clear_error(&err);
	else {
		wbs_commands_param.IsMaster = strtol(str, NULL, 16);
	}

	str = g_key_file_get_string(config, "WBspeech",
						"ClockRate", &err);
	if (err)
		g_clear_error(&err);
	else {
		wbs_commands_param.ClockRate = strtol(str, NULL, 16);
	}


	str = g_key_file_get_string(config, "WBspeech",
						"PcmInterfaceRate", &err);
	if (err)
		g_clear_error(&err);
	else {
		wbs_commands_param.PcmInterfaceRate = strtol(str, NULL, 16);
	}

proceed:
	if (enabled.socket)
		unix_init();

	if (enabled.media)
		btd_register_adapter_driver(&media_server_driver);

	if (enabled.headset)
		btd_register_adapter_driver(&headset_server_driver);

	if (enabled.gateway)
		btd_register_adapter_driver(&gateway_server_driver);

	if (enabled.source || enabled.sink)
		btd_register_adapter_driver(&a2dp_server_driver);

	if (enabled.control)
		btd_register_adapter_driver(&avrcp_server_driver);

	btd_register_device_driver(&audio_driver);

	*enable_sco = (enabled.gateway || enabled.headset);

	return 0;
}