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; }
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; }
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; }