Beispiel #1
0
static int bluetooth_sap_probe(const char *device, const char *dev_addr,
				const char *adapter_addr, const char *alias)
{
	struct ofono_modem *modem;
	char buf[256];

	if (sap_hw_modem == NULL)
		return -ENODEV;

	/* We already have this device in our hash, ignore */
	if (g_hash_table_lookup(modem_hash, device) != NULL)
		return -EALREADY;

	ofono_info("Using device: %s, devaddr: %s, adapter: %s",
			device, dev_addr, adapter_addr);

	strcpy(buf, "sap/");
	bluetooth_create_path(dev_addr, adapter_addr, buf + 4,
						sizeof(buf) - 4);

	modem = ofono_modem_create(buf, "sap");
	if (modem == NULL)
		return -ENOMEM;

	ofono_modem_set_string(modem, "ServerPath", device);
	ofono_modem_set_name(modem, alias);
	ofono_modem_register(modem);

	g_hash_table_insert(modem_hash, g_strdup(device), modem);

	return 0;
}
Beispiel #2
0
static int hfp_hf_probe(const char *device, const char *dev_addr,
				const char *adapter_addr, const char *alias)
{
	struct ofono_modem *modem;
	struct hfp_data *data;
	char buf[256];

	/* We already have this device in our hash, ignore */
	if (g_hash_table_lookup(modem_hash, device) != NULL)
		return -EALREADY;

	ofono_info("Using device: %s, devaddr: %s, adapter: %s",
			device, dev_addr, adapter_addr);

	strcpy(buf, "hfp/");
	bluetooth_create_path(dev_addr, adapter_addr, buf + 4, sizeof(buf) - 4);

	modem = ofono_modem_create(buf, "hfp");
	if (modem == NULL)
		return -ENOMEM;

	data = g_try_new0(struct hfp_data, 1);
	if (data == NULL)
		goto free;

	data->handsfree_path = g_strdup(device);
	if (data->handsfree_path == NULL)
		goto free;

	data->handsfree_address = g_strdup(dev_addr);
	if (data->handsfree_address == NULL)
		goto free;

	ofono_modem_set_data(modem, data);
	ofono_modem_set_name(modem, alias);
	ofono_modem_register(modem);

	g_hash_table_insert(modem_hash, g_strdup(device), modem);

	return 0;

free:
	if (data != NULL)
		g_free(data->handsfree_path);

	g_free(data);
	ofono_modem_remove(modem);

	return -ENOMEM;
}
Beispiel #3
0
static int bt_probe(const char *path, const char *dev_addr,
				const char *adapter_addr, const char *alias)
{
	struct bluetooth_device *bt;
	struct dundee_device *device;
	char buf[256];

	DBG("");

	/* We already have this device in our hash, ignore */
	if (g_hash_table_lookup(bluetooth_hash, path) != NULL)
		return -EALREADY;

	ofono_info("Using device: %s, devaddr: %s, adapter: %s",
			path, dev_addr, adapter_addr);

	strcpy(buf, "dun/");
	bluetooth_create_path(dev_addr, adapter_addr, buf + 4, sizeof(buf) - 4);

	bt = g_try_new0(struct bluetooth_device, 1);
	if (bt == NULL)
		return -ENOMEM;

	DBG("%p", bt);

	device = dundee_device_create(&bluetooth_driver);
	if (device == NULL)
		goto free;

	dundee_device_set_data(device, bt);

	bt->path = g_strdup(path);
	if (bt->path == NULL)
		goto free;

	bt->address = g_strdup(dev_addr);
	if (bt->address == NULL)
		goto free;

	bt->name = g_strdup(alias);
	if (bt->name == NULL)
		goto free;

	dundee_device_set_name(device, bt->name);

	if (dundee_device_register(device) < 0) {
		g_free(device);
		goto free;
	}

	bt->device = device;
	g_hash_table_insert(bluetooth_hash, g_strdup(path), bt);

	return 0;

free:
	g_free(bt->path);
	g_free(bt->address);
	g_free(bt->name);
	g_free(bt);

	return -ENOMEM;
}