summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/nwztools/scsitools/Makefile2
-rw-r--r--utils/nwztools/scsitools/scsitool.c66
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
6LD=$(PREFIX)gcc 6LD=$(PREFIX)gcc
7NWZ_DB_DIR=../../../firmware/target/hosted/sonynwz 7NWZ_DB_DIR=../../../firmware/target/hosted/sonynwz
8INCLUDES=-I$(NWZ_DB_DIR) -I$(SCSI_DIR) 8INCLUDES=-I$(NWZ_DB_DIR) -I$(SCSI_DIR)
9CFLAGS=-std=c99 -Wall -O2 $(DEFINES) $(INCLUDES) 9CFLAGS=-std=c99 -g -Wall -O2 $(DEFINES) $(INCLUDES)
10LDFLAGS=-L$(SCSI_DIR) -lrbscsi 10LDFLAGS=-L$(SCSI_DIR) -lrbscsi
11BINS=scsitool$(EXE_EXT) 11BINS=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
236int get_dnk_prop(int argc, char **argv) 236int 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
459int get_dnk_nvp(int argc, char **argv) 459int 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
546int get_dnk_nvp_multi(int argc, char **argv) 546int 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
569int 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
562int set_dnk_nvp(int argc, char **argv) 592int 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
720int get_dpcc_prop(int argc, char **argv) 750int 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
781int get_user_time(int argc, char **argv) 811int 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
801int get_dev_info(int argc, char **argv) 831int 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
827int get_dhp(int argc, char **argv) 857int 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
853int try_fw_upgrade(unsigned flags, int argc, char **argv) 883int 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
885int do_fw_upgrade(int argc, char **argv) 915int 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
919int do_dest(int argc, char **argv) 949int 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
1035int do_help_us(int argc, char **argv) 1065int 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
1044typedef int (*cmd_fn_t)(int argc, char **argv); 1074typedef int (*cmd_fn_t)(int argc, const char* const* argv);
1045 1075
1046struct cmd_t 1076struct 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
1070int process_cmd(const char *cmd, int argc, char **argv) 1100int 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
1313static int decode_scsi(int argc, char **argv) 1343static 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);
1472Lend: 1502Lend: