diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2020-06-13 16:20:34 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2020-10-11 13:08:03 +0200 |
commit | cda16f9439359c79c4d8f54f63b0cdb10dc79bfb (patch) | |
tree | 52e420803c8cc66ae37019f4bdedfcdc890beea8 | |
parent | 76fbb33adf3cd0b6bcbe26dc47464904493160bd (diff) | |
download | rockbox-cda16f9439359c79c4d8f54f63b0cdb10dc79bfb.tar.gz rockbox-cda16f9439359c79c4d8f54f63b0cdb10dc79bfb.zip |
scsitools: const correctness and add "get_dnk_nvp all" subcommand.
Change-Id: Ic5cb3dfa3be684f31a2c55a3cb7d45cfe8c65b25
-rw-r--r-- | utils/nwztools/scsitools/Makefile | 2 | ||||
-rw-r--r-- | utils/nwztools/scsitools/scsitool.c | 66 |
2 files changed, 49 insertions, 19 deletions
diff --git a/utils/nwztools/scsitools/Makefile b/utils/nwztools/scsitools/Makefile index f520c10ee6..32a2ab8b49 100644 --- a/utils/nwztools/scsitools/Makefile +++ b/utils/nwztools/scsitools/Makefile | |||
@@ -6,7 +6,7 @@ CC=$(PREFIX)gcc | |||
6 | LD=$(PREFIX)gcc | 6 | LD=$(PREFIX)gcc |
7 | NWZ_DB_DIR=../../../firmware/target/hosted/sonynwz | 7 | NWZ_DB_DIR=../../../firmware/target/hosted/sonynwz |
8 | INCLUDES=-I$(NWZ_DB_DIR) -I$(SCSI_DIR) | 8 | INCLUDES=-I$(NWZ_DB_DIR) -I$(SCSI_DIR) |
9 | CFLAGS=-std=c99 -Wall -O2 $(DEFINES) $(INCLUDES) | 9 | CFLAGS=-std=c99 -g -Wall -O2 $(DEFINES) $(INCLUDES) |
10 | LDFLAGS=-L$(SCSI_DIR) -lrbscsi | 10 | LDFLAGS=-L$(SCSI_DIR) -lrbscsi |
11 | BINS=scsitool$(EXE_EXT) | 11 | BINS=scsitool$(EXE_EXT) |
12 | 12 | ||
diff --git a/utils/nwztools/scsitools/scsitool.c b/utils/nwztools/scsitools/scsitool.c index 4f7e6ad4b8..b3b8802099 100644 --- a/utils/nwztools/scsitools/scsitool.c +++ b/utils/nwztools/scsitools/scsitool.c | |||
@@ -233,7 +233,7 @@ void set_little_endian32(void *_buf, uint32_t val) | |||
233 | buf[3] = (val >> 24) & 0xff; | 233 | buf[3] = (val >> 24) & 0xff; |
234 | } | 234 | } |
235 | 235 | ||
236 | int get_dnk_prop(int argc, char **argv) | 236 | int get_dnk_prop(int argc, const char* const* argv) |
237 | { | 237 | { |
238 | if(argc != 1 && argc != 4) | 238 | if(argc != 1 && argc != 4) |
239 | { | 239 | { |
@@ -456,7 +456,7 @@ int write_nvp_node(int node_index, void *buffer, int size) | |||
456 | return 0; | 456 | return 0; |
457 | } | 457 | } |
458 | 458 | ||
459 | int get_dnk_nvp(int argc, char **argv) | 459 | int get_dnk_nvp(int argc, const char* const* argv) |
460 | { | 460 | { |
461 | if(argc != 1 && argc != 2) | 461 | if(argc != 1 && argc != 2) |
462 | { | 462 | { |
@@ -543,7 +543,30 @@ int get_dnk_nvp(int argc, char **argv) | |||
543 | return 0; | 543 | return 0; |
544 | } | 544 | } |
545 | 545 | ||
546 | int get_dnk_nvp_multi(int argc, char **argv) | 546 | int get_dnk_nvp_all() |
547 | { | ||
548 | int series_index, model_index; | ||
549 | int ret = get_model_and_series(&model_index, &series_index, NULL); | ||
550 | if(ret) | ||
551 | return ret; | ||
552 | for(int i = 0; i < NWZ_NVP_COUNT; i++) | ||
553 | { | ||
554 | int node_index = NWZ_NVP_INVALID; | ||
555 | if(nwz_series[series_index].nvp_index) | ||
556 | node_index = (*nwz_series[series_index].nvp_index)[i]; | ||
557 | if(node_index == NWZ_NVP_INVALID) | ||
558 | continue; /* device doesn't have this node */ | ||
559 | /* this is suboptimal, it will query again the model on each request but there aren't | ||
560 | * so many nodes anyway */ | ||
561 | char buffer[10]; | ||
562 | sprintf(buffer, "%d", node_index); | ||
563 | cprintf(BLUE, "querying '%s'\n", nwz_nvp[i].name); | ||
564 | get_dnk_nvp(1, &nwz_nvp[i].name); | ||
565 | } | ||
566 | return 0; | ||
567 | } | ||
568 | |||
569 | int get_dnk_nvp_multi(int argc, const char* const* argv) | ||
547 | { | 570 | { |
548 | if(argc == 0) | 571 | if(argc == 0) |
549 | { | 572 | { |
@@ -554,12 +577,19 @@ int get_dnk_nvp_multi(int argc, char **argv) | |||
554 | printf(" %-6s%s\n", nwz_nvp[i].name, nwz_nvp[i].desc); | 577 | printf(" %-6s%s\n", nwz_nvp[i].name, nwz_nvp[i].desc); |
555 | return 1; | 578 | return 1; |
556 | } | 579 | } |
580 | /* special case for 'all' */ | ||
581 | if(argc == 1 && strcmp(argv[0], "all") == 0) | ||
582 | return get_dnk_nvp_all(); | ||
583 | /* otherwise normal */ | ||
557 | for(int i = 0; i < argc; i++) | 584 | for(int i = 0; i < argc; i++) |
585 | { | ||
586 | cprintf(BLUE, "querying '%s'\n", argv[i]); | ||
558 | get_dnk_nvp(1, &argv[i]); | 587 | get_dnk_nvp(1, &argv[i]); |
588 | } | ||
559 | return 0; | 589 | return 0; |
560 | } | 590 | } |
561 | 591 | ||
562 | int set_dnk_nvp(int argc, char **argv) | 592 | int set_dnk_nvp(int argc, const char* const* argv) |
563 | { | 593 | { |
564 | if(argc <= 1) | 594 | if(argc <= 1) |
565 | { | 595 | { |
@@ -717,7 +747,7 @@ int do_dpcc_cmd(uint32_t cmd, struct dpcc_prop_t *prop, void *buffer, int *buffe | |||
717 | return 0; | 747 | return 0; |
718 | } | 748 | } |
719 | 749 | ||
720 | int get_dpcc_prop(int argc, char **argv) | 750 | int get_dpcc_prop(int argc, const char* const* argv) |
721 | { | 751 | { |
722 | if(argc != 1 && argc != 3) | 752 | if(argc != 1 && argc != 3) |
723 | { | 753 | { |
@@ -778,7 +808,7 @@ struct user_timer_t | |||
778 | uint8_t res2[17]; | 808 | uint8_t res2[17]; |
779 | } __attribute__((packed)); | 809 | } __attribute__((packed)); |
780 | 810 | ||
781 | int get_user_time(int argc, char **argv) | 811 | int get_user_time(int argc, const char* const* argv) |
782 | { | 812 | { |
783 | (void) argc; | 813 | (void) argc; |
784 | (void )argv; | 814 | (void )argv; |
@@ -798,7 +828,7 @@ int get_user_time(int argc, char **argv) | |||
798 | return 0; | 828 | return 0; |
799 | } | 829 | } |
800 | 830 | ||
801 | int get_dev_info(int argc, char **argv) | 831 | int get_dev_info(int argc, const char* const* argv) |
802 | { | 832 | { |
803 | (void) argc; | 833 | (void) argc; |
804 | (void )argv; | 834 | (void )argv; |
@@ -824,7 +854,7 @@ int get_dev_info(int argc, char **argv) | |||
824 | return 0; | 854 | return 0; |
825 | } | 855 | } |
826 | 856 | ||
827 | int get_dhp(int argc, char **argv) | 857 | int get_dhp(int argc, const char* const* argv) |
828 | { | 858 | { |
829 | (void) argc; | 859 | (void) argc; |
830 | (void) argv; | 860 | (void) argv; |
@@ -850,7 +880,7 @@ int get_dhp(int argc, char **argv) | |||
850 | return 0; | 880 | return 0; |
851 | } | 881 | } |
852 | 882 | ||
853 | int try_fw_upgrade(unsigned flags, int argc, char **argv) | 883 | int try_fw_upgrade(unsigned flags, int argc, const char* const* argv) |
854 | { | 884 | { |
855 | (void) argc; | 885 | (void) argc; |
856 | (void) argv; | 886 | (void) argv; |
@@ -882,7 +912,7 @@ int try_fw_upgrade(unsigned flags, int argc, char **argv) | |||
882 | return 0; | 912 | return 0; |
883 | } | 913 | } |
884 | 914 | ||
885 | int do_fw_upgrade(int argc, char **argv) | 915 | int do_fw_upgrade(int argc, const char* const* argv) |
886 | { | 916 | { |
887 | if(!try_fw_upgrade(0x80, argc, argv)) | 917 | if(!try_fw_upgrade(0x80, argc, argv)) |
888 | return 0; | 918 | return 0; |
@@ -916,7 +946,7 @@ static struct | |||
916 | 946 | ||
917 | #define DEST_COUNT (sizeof(g_dest_list) / sizeof(g_dest_list[0])) | 947 | #define DEST_COUNT (sizeof(g_dest_list) / sizeof(g_dest_list[0])) |
918 | 948 | ||
919 | int do_dest(int argc, char **argv) | 949 | int do_dest(int argc, const char* const* argv) |
920 | { | 950 | { |
921 | /* it is possile to write any NVP node using the SCSI interface but only | 951 | /* it is possile to write any NVP node using the SCSI interface but only |
922 | * give the user the possibility to write destination, because that's the | 952 | * give the user the possibility to write destination, because that's the |
@@ -1032,7 +1062,7 @@ int do_dest(int argc, char **argv) | |||
1032 | return 0; | 1062 | return 0; |
1033 | } | 1063 | } |
1034 | 1064 | ||
1035 | int do_help_us(int argc, char **argv) | 1065 | int do_help_us(int argc, const char* const* argv) |
1036 | { | 1066 | { |
1037 | unsigned long model_id; | 1067 | unsigned long model_id; |
1038 | if(get_model_id(&model_id)) | 1068 | if(get_model_id(&model_id)) |
@@ -1041,7 +1071,7 @@ int do_help_us(int argc, char **argv) | |||
1041 | return 0; | 1071 | return 0; |
1042 | } | 1072 | } |
1043 | 1073 | ||
1044 | typedef int (*cmd_fn_t)(int argc, char **argv); | 1074 | typedef int (*cmd_fn_t)(int argc, const char* const* argv); |
1045 | 1075 | ||
1046 | struct cmd_t | 1076 | struct cmd_t |
1047 | { | 1077 | { |
@@ -1067,7 +1097,7 @@ struct cmd_t cmd_list[] = | |||
1067 | 1097 | ||
1068 | #define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0])) | 1098 | #define NR_CMDS (sizeof(cmd_list) / sizeof(cmd_list[0])) |
1069 | 1099 | ||
1070 | int process_cmd(const char *cmd, int argc, char **argv) | 1100 | int process_cmd(const char *cmd, int argc, const char* const* argv) |
1071 | { | 1101 | { |
1072 | for(unsigned i = 0; i < NR_CMDS; i++) | 1102 | for(unsigned i = 0; i < NR_CMDS; i++) |
1073 | if(strcmp(cmd_list[i].name, cmd) == 0) | 1103 | if(strcmp(cmd_list[i].name, cmd) == 0) |
@@ -1310,7 +1340,7 @@ static int decode_scsi_fc(uint8_t *cdb, int cdb_len) | |||
1310 | return 0; | 1340 | return 0; |
1311 | } | 1341 | } |
1312 | 1342 | ||
1313 | static int decode_scsi(int argc, char **argv) | 1343 | static int decode_scsi(int argc, const char* const* argv) |
1314 | { | 1344 | { |
1315 | /* we need to parse the arguments, we support either as one big hexdump: | 1345 | /* we need to parse the arguments, we support either as one big hexdump: |
1316 | * fc002064626d6e0080000000 | 1346 | * fc002064626d6e0080000000 |
@@ -1333,7 +1363,7 @@ static int decode_scsi(int argc, char **argv) | |||
1333 | if(argc == 1) | 1363 | if(argc == 1) |
1334 | { | 1364 | { |
1335 | /* allow the string to start with 0x */ | 1365 | /* allow the string to start with 0x */ |
1336 | char *str = argv[0]; | 1366 | const char *str = argv[0]; |
1337 | if(str[0] == '0' && str[1] == 'x') | 1367 | if(str[0] == '0' && str[1] == 'x') |
1338 | str += 2; | 1368 | str += 2; |
1339 | cdb_len = strlen(str); | 1369 | cdb_len = strlen(str); |
@@ -1446,7 +1476,7 @@ int main(int argc, char **argv) | |||
1446 | if(argc >= optind + 1 && strcmp(argv[optind], "list_devices") == 0) | 1476 | if(argc >= optind + 1 && strcmp(argv[optind], "list_devices") == 0) |
1447 | return list_devices(list_all); | 1477 | return list_devices(list_all); |
1448 | if(argc >= optind + 1 && strcmp(argv[optind], "decode_scsi") == 0) | 1478 | if(argc >= optind + 1 && strcmp(argv[optind], "decode_scsi") == 0) |
1449 | return decode_scsi(argc - optind - 1, argv + optind + 1); | 1479 | return decode_scsi(argc - optind - 1, (const char * const *)(argv + optind + 1)); |
1450 | 1480 | ||
1451 | if(argc - optind < 2) | 1481 | if(argc - optind < 2) |
1452 | { | 1482 | { |
@@ -1466,7 +1496,7 @@ int main(int argc, char **argv) | |||
1466 | goto Lend; | 1496 | goto Lend; |
1467 | } | 1497 | } |
1468 | 1498 | ||
1469 | ret = process_cmd(argv[optind + 1], argc - optind - 2, argv + optind + 2); | 1499 | ret = process_cmd(argv[optind + 1], argc - optind - 2, (const char * const *)(argv + optind + 2)); |
1470 | 1500 | ||
1471 | rb_scsi_close(g_dev); | 1501 | rb_scsi_close(g_dev); |
1472 | Lend: | 1502 | Lend: |