void libwacom_print_device_description(int fd, const WacomDevice *device) { const WacomMatch **match; WacomClass class; const char *class_name; class = libwacom_get_class(device); switch(class) { case WCLASS_UNKNOWN: class_name = "Unknown"; break; case WCLASS_INTUOS3: class_name = "Intuos3"; break; case WCLASS_INTUOS4: class_name = "Intuos4"; break; case WCLASS_INTUOS5: class_name = "Intuos5"; break; case WCLASS_CINTIQ: class_name = "Cintiq"; break; case WCLASS_BAMBOO: class_name = "Bamboo"; break; case WCLASS_GRAPHIRE: class_name = "Graphire";break; case WCLASS_ISDV4: class_name = "ISDV4"; break; case WCLASS_INTUOS: class_name = "Intuos"; break; case WCLASS_INTUOS2: class_name = "Intuos2"; break; case WCLASS_PEN_DISPLAYS: class_name = "PenDisplay"; break; case WCLASS_REMOTE: class_name = "Remote"; break; default: g_assert_not_reached(); break; } dprintf(fd, "[Device]\n"); dprintf(fd, "Name=%s\n", libwacom_get_name(device)); dprintf(fd, "DeviceMatch="); for (match = libwacom_get_matches(device); *match; match++) print_match(fd, *match); dprintf(fd, "\n"); if (libwacom_get_paired_device(device)) { dprintf(fd, "PairedID="); print_match(fd, libwacom_get_paired_device(device)); dprintf(fd, "\n"); } dprintf(fd, "Class=%s\n", class_name); dprintf(fd, "Width=%d\n", libwacom_get_width(device)); dprintf(fd, "Height=%d\n", libwacom_get_height(device)); print_integrated_flags_for_device(fd, device); print_layout_for_device(fd, device); print_styli_for_device(fd, device); dprintf(fd, "\n"); dprintf(fd, "[Features]\n"); dprintf(fd, "Reversible=%s\n", libwacom_is_reversible(device) ? "true" : "false"); dprintf(fd, "Stylus=%s\n", libwacom_has_stylus(device) ? "true" : "false"); dprintf(fd, "Ring=%s\n", libwacom_has_ring(device) ? "true" : "false"); dprintf(fd, "Ring2=%s\n", libwacom_has_ring2(device) ? "true" : "false"); dprintf(fd, "Touch=%s\n", libwacom_has_touch(device) ? "true" : "false"); dprintf(fd, "TouchSwitch=%s\n", libwacom_has_touchswitch(device)? "true" : "false"); print_supported_leds(fd, device); dprintf(fd, "NumStrips=%d\n", libwacom_get_num_strips(device)); dprintf(fd, "Buttons=%d\n", libwacom_get_num_buttons(device)); print_buttons_for_device(fd, device); }
static int compare_matches(const WacomDevice *a, const WacomDevice *b) { const WacomMatch **ma, **mb, **match_a, **match_b; ma = libwacom_get_matches(a); mb = libwacom_get_matches(b); for (match_a = ma; *match_a; match_a++) { int found = 0; for (match_b = mb; !found && *mb; mb++) { if (strcmp((*match_a)->match, (*match_b)->match) == 0) found = 1; } if (!found) return 1; } return 0; }
static void check_multiple_match(WacomDevice *device) { const WacomMatch **match; int nmatches = 0; int found_bus = 0, found_vendor_id = 0, found_product_id = 0; for (match = libwacom_get_matches(device); *match; match++) { nmatches++; if (libwacom_match_get_bustype(*match) == libwacom_get_bustype(device)) found_bus = 1; if (libwacom_match_get_vendor_id(*match) == libwacom_get_vendor_id(device)) found_vendor_id = 1; if (libwacom_match_get_product_id(*match) == libwacom_get_product_id(device)) found_product_id = 1; } assert(nmatches == 2); assert(found_bus && found_vendor_id && found_product_id); }