struct media_device *media_open(const char *name) { return media_open_debug(name, NULL, NULL); }
int main(int argc, char **argv) { struct media_device *media; int ret = -1; if (parse_cmdline(argc, argv)) return EXIT_FAILURE; /* Open the media device and enumerate entities, pads and links. */ if (media_opts.verbose) media = media_open_debug( media_opts.devname, (void (*)(void *, ...))fprintf, stdout); else media = media_open(media_opts.devname); if (media == NULL) { printf("Failed to open %s\n", media_opts.devname); goto out; } if (media_opts.print) { printf("Media controller API version %u.%u.%u\n\n", (media->info.media_version << 16) & 0xff, (media->info.media_version << 8) & 0xff, (media->info.media_version << 0) & 0xff); printf("Media device information\n" "------------------------\n" "driver %s\n" "model %s\n" "serial %s\n" "bus info %s\n" "hw revision 0x%x\n" "driver version %u.%u.%u\n\n", media->info.driver, media->info.model, media->info.serial, media->info.bus_info, media->info.hw_revision, (media->info.driver_version << 16) & 0xff, (media->info.driver_version << 8) & 0xff, (media->info.driver_version << 0) & 0xff); } if (media_opts.entity) { struct media_entity *entity; entity = media_get_entity_by_name(media, media_opts.entity, strlen(media_opts.entity)); if (entity == NULL) { printf("Entity '%s' not found\n", media_opts.entity); goto out; } printf("%s\n", entity->devname); } if (media_opts.pad) { struct media_pad *pad; pad = media_parse_pad(media, media_opts.pad, NULL); if (pad == NULL) { printf("Pad '%s' not found\n", media_opts.pad); goto out; } v4l2_subdev_print_format(pad->entity, pad->index, V4L2_SUBDEV_FORMAT_ACTIVE); } if (media_opts.print || media_opts.print_dot) { media_print_topology(media, media_opts.print_dot); printf("\n"); } if (media_opts.reset) { if (media_opts.verbose) printf("Resetting all links to inactive\n"); ret = media_reset_links(media); if (ret) { printf("Unable to reset links: %s (%d)\n", strerror(-ret), -ret); goto out; } } if (media_opts.links) { ret = media_parse_setup_links(media, media_opts.links); if (ret) { printf("Unable to parse link: %s (%d)\n", strerror(-ret), -ret); goto out; } } if (media_opts.formats) { ret = v4l2_subdev_parse_setup_formats(media, media_opts.formats); if (ret) { printf("Unable to parse format: %s (%d)\n", strerror(-ret), -ret); goto out; } } if (media_opts.interactive) { while (1) { char buffer[32]; char *end; printf("Enter a link to modify or enter to stop\n"); if (fgets(buffer, sizeof buffer, stdin) == NULL) break; if (buffer[0] == '\n') break; ret = media_parse_setup_link(media, buffer, &end); if (ret) printf("Unable to parse link: %s (%d)\n", strerror(-ret), -ret); } } ret = 0; out: if (media) media_close(media); return ret ? EXIT_FAILURE : EXIT_SUCCESS; }