cl_utils: target selection '-n' argument needs optarg.

foreach now returns the number of targets.
This commit is contained in:
Uwe Bonnes 2021-02-10 21:43:44 +01:00 committed by UweBonnes
parent 4eb336277c
commit 165560edd8
3 changed files with 8 additions and 8 deletions

View File

@ -41,7 +41,7 @@ int platform_jtag_scan(const uint8_t *lrlens);
int adiv5_swdp_scan(void); int adiv5_swdp_scan(void);
int jtag_scan(const uint8_t *lrlens); int jtag_scan(const uint8_t *lrlens);
bool target_foreach(void (*cb)(int i, target *t, void *context), void *context); int target_foreach(void (*cb)(int i, target *t, void *context), void *context);
void target_list_free(void); void target_list_free(void);
/* Attach/detach functions */ /* Attach/detach functions */

View File

@ -1,7 +1,7 @@
/* /*
* This file is part of the Black Magic Debug project. * This file is part of the Black Magic Debug project.
* *
* Copyright (C) 2019 - 2020 Uwe Bonnes * Copyright (C) 2019 - 2021 Uwe Bonnes
* (bon@elektron.ikp.physik.tu-darmstadt.de) * (bon@elektron.ikp.physik.tu-darmstadt.de)
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -168,7 +168,7 @@ void cl_init(BMP_CL_OPTIONS_t *opt, int argc, char **argv)
opt->opt_flash_size = 16 * 1024 *1024; opt->opt_flash_size = 16 * 1024 *1024;
opt->opt_flash_start = 0xffffffff; opt->opt_flash_start = 0xffffffff;
opt->opt_max_swj_frequency = 4000000; opt->opt_max_swj_frequency = 4000000;
while((c = getopt(argc, argv, "eEhHv:d:f:s:I:c:CnltVtTa:S:jpP:rR")) != -1) { while((c = getopt(argc, argv, "eEhHv:d:f:s:I:c:Cln:tVtTa:S:jpP:rR")) != -1) {
switch(c) { switch(c) {
case 'c': case 'c':
if (optarg) if (optarg)
@ -333,11 +333,11 @@ int cl_execute(BMP_CL_OPTIONS_t *opt)
DEBUG_WARN("No target found\n"); DEBUG_WARN("No target found\n");
return res; return res;
} else { } else {
target_foreach(display_target, NULL); num_targets = target_foreach(display_target, &num_targets);
} }
if (opt->opt_target_dev > num_targets) { if (opt->opt_target_dev > num_targets) {
DEBUG_WARN("Given target nummer %d not available\n", DEBUG_WARN("Given target nummer %d not available max %d\n",
opt->opt_target_dev); opt->opt_target_dev, num_targets);
return res; return res;
} }
target *t = target_attach_n(opt->opt_target_dev, NULL); target *t = target_attach_n(opt->opt_target_dev, NULL);

View File

@ -69,13 +69,13 @@ target *target_new(void)
return t; return t;
} }
bool target_foreach(void (*cb)(int, target *t, void *context), void *context) int target_foreach(void (*cb)(int, target *t, void *context), void *context)
{ {
int i = 1; int i = 1;
target *t = target_list; target *t = target_list;
for (; t; t = t->next, i++) for (; t; t = t->next, i++)
cb(i, t, context); cb(i, t, context);
return target_list != NULL; return i;
} }
void target_mem_map_free(target *t) void target_mem_map_free(target *t)