static int hog_probe(struct btd_service *service) { struct btd_device *device = btd_service_get_device(service); const char *path = device_get_path(device); GSList *primaries, *l; DBG("path %s", path); primaries = btd_device_get_primaries(device); if (primaries == NULL) return -EINVAL; for (l = primaries; l; l = g_slist_next(l)) { struct gatt_primary *prim = l->data; struct hog_device *dev; if (strcmp(prim->uuid, HOG_UUID) != 0) continue; dev = hog_device_new(device, prim); btd_service_set_user_data(service, dev); return 0; } return -EINVAL; }
static int thermometer_driver_probe(struct btd_device *device, GSList *uuids) { struct gatt_primary *tattr; GSList *primaries, *l; primaries = btd_device_get_primaries(device); l = g_slist_find_custom(primaries, HEALTH_THERMOMETER_UUID, primary_uuid_cmp); if (l == NULL) return -EINVAL; tattr = l->data; return thermometer_register(connection, device, tattr); }
static int batterystate_driver_probe(struct btd_device *device, GSList *uuids) { struct gatt_primary *prim; GSList *primaries, *l; primaries = btd_device_get_primaries(device); l = g_slist_find_custom(primaries, BATTERY_SERVICE_UUID, primary_uuid_cmp); if (l == NULL) return -EINVAL; prim = l->data; return batterystate_register(connection, device, prim); }