static void usage_all(void) { common_usage(); tuner_usage(); io_usage(); stds_usage(); vidcap_usage(); vidout_usage(); overlay_usage(); vbi_usage(); sdr_usage(); selection_usage(); misc_usage(); streaming_usage(); edid_usage(); }
void edid_cmd(int ch, char *optarg) { char *value, *subs; switch (ch) { case OptSetEdid: memset(&sedid, 0, sizeof(sedid)); file_in = NULL; if (!optarg) break; subs = optarg; while (*subs != '\0') { static const char *const subopts[] = { "pad", "edid", "file", NULL }; switch (parse_subopt(&subs, subopts, &value)) { case 0: sedid.pad = strtoul(value, 0, 0); break; case 1: if (!strcmp(value, "dvid")) { sedid.edid = dvid_edid; sedid.blocks = sizeof(dvid_edid) / 128; } else if (!strcmp(value, "vga")) { sedid.edid = vga_edid; sedid.blocks = sizeof(vga_edid) / 128; } else if (!strcmp(value, "hdmi")) { sedid.edid = hdmi_edid; sedid.blocks = sizeof(hdmi_edid) / 128; } else { edid_usage(); exit(1); } if (file_in) { fprintf(stderr, "The edid and file options can't be used together.\n"); exit(1); } break; case 2: if (value) { file_in = value; if (sedid.edid) { fprintf(stderr, "The edid and file options can't be used together.\n"); exit(1); } } break; default: edid_usage(); exit(1); } } break; case OptClearEdid: if (optarg) clear_pad = strtoul(optarg, 0, 0); break; case OptGetEdid: memset(&gedid, 0, sizeof(gedid)); gedid.blocks = 256; /* default all blocks */ gformat = HEX; /* default hex output */ file_out = NULL; if (!optarg) break; subs = optarg; while (*subs != '\0') { static const char *const subopts[] = { "pad", "startblock", "blocks", "format", "file", NULL }; switch (parse_subopt(&subs, subopts, &value)) { case 0: gedid.pad = strtoul(value, 0, 0); break; case 1: gedid.start_block = strtoul(value, 0, 0); if (gedid.start_block > 255) { fprintf(stderr, "startblock %d too large, max 255\n", gedid.start_block); exit(1); } break; case 2: gedid.blocks = strtoul(value, 0, 0); break; case 3: if (!strcmp(value, "hex")) { gformat = HEX; } else if (!strcmp(value, "raw")) { gformat = RAW; } else if (!strcmp(value, "carray")) { gformat = CARRAY; } else { edid_usage(); exit(1); } break; case 4: if (value) file_out = value; break; default: edid_usage(); exit(1); } } if (gedid.start_block + gedid.blocks > 256) gedid.blocks = 256 - gedid.start_block; } }