|
@@ -115,9 +115,32 @@ static struct run_cmds {
|
115
|
115
|
struct vcmd_entry entry[MAX_RUN_CMDS];
|
116
|
116
|
} parsed_cmds;
|
117
|
117
|
|
|
118
|
+static void parse_cmd2(int argc, char **argv, enum vcmd vcmd) {
|
|
119
|
+ struct vcmd_entry *c = &parsed_cmds.entry[num_parsed_cmds];
|
|
120
|
+ if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
|
|
121
|
+ die("No more than %u commands are supported.", num_parsed_cmds);
|
|
122
|
+ if (optind == argc || argv[optind - 1][0] == '-' || argv[optind][0] == '-') {
|
|
123
|
+ fprintf(stderr, "%s: option '%s' requires two arguments\n", argv[0], argv[optind - 2]);
|
|
124
|
+ exit(EXIT_FAILURE);
|
|
125
|
+ }
|
|
126
|
+ c->cmd = &videohub_commands[vcmd];
|
|
127
|
+ c->param1 = argv[optind - 1];
|
|
128
|
+ c->param2 = argv[optind];
|
|
129
|
+ num_parsed_cmds++;
|
|
130
|
+}
|
|
131
|
+
|
|
132
|
+static void parse_cmd1(int argc, char **argv, enum vcmd vcmd, bool do_lock) {
|
|
133
|
+ struct vcmd_entry *c = &parsed_cmds.entry[num_parsed_cmds];
|
|
134
|
+ if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
|
|
135
|
+ die("No more than %u commands are supported.", num_parsed_cmds);
|
|
136
|
+ c->cmd = &videohub_commands[vcmd];
|
|
137
|
+ c->param1 = argv[optind - 1];
|
|
138
|
+ c->do_lock = do_lock;
|
|
139
|
+ num_parsed_cmds++;
|
|
140
|
+}
|
|
141
|
+
|
118
|
142
|
static void parse_options(struct videohub_data *data, int argc, char **argv) {
|
119
|
143
|
int j, err = 0;
|
120
|
|
- struct vcmd_entry *c = &parsed_cmds.entry[0];
|
121
|
144
|
// Check environment
|
122
|
145
|
data->dev_host = getenv("VIDEOHUB_HOST");
|
123
|
146
|
data->dev_port = getenv("VIDEOHUB_PORT");
|
|
@@ -169,36 +192,11 @@ static void parse_options(struct videohub_data *data, int argc, char **argv) {
|
169
|
192
|
case 901: show_list |= action_list_device; break; // --list-device
|
170
|
193
|
case 902: show_list |= action_list_vinputs; break; // --list-vinputs
|
171
|
194
|
case 903: show_list |= action_list_voutputs; break; // --list-voutputs
|
172
|
|
- case 1001: // --vi-name
|
173
|
|
- case 1002: // --vo-name
|
174
|
|
- case 1011: // --vi-route
|
175
|
|
- case 1012: // --vo-route
|
176
|
|
- if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
|
177
|
|
- die("No more than %u commands are supported.", num_parsed_cmds);
|
178
|
|
- if (optind == argc || argv[optind - 1][0] == '-' || argv[optind][0] == '-') {
|
179
|
|
- fprintf(stderr, "%s: option '%s' requires two arguments\n", argv[0], argv[optind - 2]);
|
180
|
|
- exit(EXIT_FAILURE);
|
181
|
|
- }
|
182
|
|
- switch (j) {
|
183
|
|
- case 1001: c->cmd = &videohub_commands[CMD_INPUT_LABELS]; break; // --vi-name
|
184
|
|
- case 1002: c->cmd = &videohub_commands[CMD_OUTPUT_LABELS]; break; // --vo-name
|
185
|
|
- case 1011: c->cmd = &videohub_commands[CMD_VIDEO_OUTPUT_ROUTING]; break; // --vo-route
|
186
|
|
- }
|
187
|
|
- c->param1 = argv[optind - 1];
|
188
|
|
- c->param2 = argv[optind];
|
189
|
|
- c->param1 = argv[optind - 1];
|
190
|
|
- c->param2 = argv[optind];
|
191
|
|
- c = &parsed_cmds.entry[++num_parsed_cmds];
|
192
|
|
- break;
|
193
|
|
- case 1021: // --vo-lock
|
194
|
|
- case 1022: // --vo-unlock
|
195
|
|
- if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
|
196
|
|
- die("No more than %u commands are supported.", num_parsed_cmds);
|
197
|
|
- c->cmd = &videohub_commands[CMD_VIDEO_OUTPUT_LOCKS];
|
198
|
|
- c->param1 = argv[optind - 1];
|
199
|
|
- c->do_lock = (j == 1021);
|
200
|
|
- c = &parsed_cmds.entry[++num_parsed_cmds];
|
201
|
|
- break;
|
|
195
|
+ case 1001: parse_cmd2(argc, argv, CMD_INPUT_LABELS); break; // --vi-name
|
|
196
|
+ case 1002: parse_cmd2(argc, argv, CMD_OUTPUT_LABELS); break; // --vo-name
|
|
197
|
+ case 1011: parse_cmd2(argc, argv, CMD_VIDEO_OUTPUT_ROUTING); break; // --vo-route
|
|
198
|
+ case 1021: parse_cmd1(argc, argv, CMD_VIDEO_OUTPUT_LOCKS, true); break; // --vo-lock
|
|
199
|
+ case 1022: parse_cmd1(argc, argv, CMD_VIDEO_OUTPUT_LOCKS, false); break; // --vo-unlock
|
202
|
200
|
case 'H': // --help
|
203
|
201
|
show_help(data);
|
204
|
202
|
exit(EXIT_SUCCESS);
|