list_devices.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "device.h"
  2. #include <linux/media.h>
  3. #include <stdio.h>
  4. int
  5. main(int argc, char *argv[])
  6. {
  7. MPDeviceList *list = mp_device_list_new();
  8. while (list) {
  9. MPDevice *device = mp_device_list_get(list);
  10. const struct media_device_info *info = mp_device_get_info(device);
  11. printf("%s (%s) %s\n", info->model, info->driver, info->serial);
  12. printf(" Bus Info: %s\n", info->bus_info);
  13. printf(" Media Version: %d\n", info->media_version);
  14. printf(" HW Revision: %d\n", info->hw_revision);
  15. printf(" Driver Version: %d\n", info->driver_version);
  16. const struct media_v2_entity *entities =
  17. mp_device_get_entities(device);
  18. size_t num = mp_device_get_num_entities(device);
  19. printf(" Entities (%ld):\n", num);
  20. for (int i = 0; i < num; ++i) {
  21. printf(" %d %s (%d)\n",
  22. entities[i].id,
  23. entities[i].name,
  24. entities[i].function);
  25. }
  26. const struct media_v2_interface *interfaces =
  27. mp_device_get_interfaces(device);
  28. num = mp_device_get_num_interfaces(device);
  29. printf(" Interfaces (%ld):\n", num);
  30. for (int i = 0; i < num; ++i) {
  31. printf(" %d (%d - %d) devnode %d:%d\n",
  32. interfaces[i].id,
  33. interfaces[i].intf_type,
  34. interfaces[i].flags,
  35. interfaces[i].devnode.major,
  36. interfaces[i].devnode.minor);
  37. }
  38. const struct media_v2_pad *pads = mp_device_get_pads(device);
  39. num = mp_device_get_num_pads(device);
  40. printf(" Pads (%ld):\n", num);
  41. for (int i = 0; i < num; ++i) {
  42. printf(" %d for device:%d (%d)\n",
  43. pads[i].id,
  44. pads[i].entity_id,
  45. pads[i].flags);
  46. }
  47. const struct media_v2_link *links = mp_device_get_links(device);
  48. num = mp_device_get_num_links(device);
  49. printf(" Links (%ld):\n", num);
  50. for (int i = 0; i < num; ++i) {
  51. printf(" %d from:%d to:%d (%d)\n",
  52. links[i].id,
  53. links[i].source_id,
  54. links[i].sink_id,
  55. links[i].flags);
  56. }
  57. list = mp_device_list_next(list);
  58. }
  59. mp_device_list_free(list);
  60. }