static const struct option options[] = {
{ .name = "tty", .has_arg = 1, .val = 'T' },
{ .name = "device", .has_arg = 1, .val = 'D' },
- { .name = "remote", .has_arg = 1, .val = 'R' },
+ { .name = "remote", .has_arg = 0, .val = 'R' },
{ .name = "channel", .has_arg = 1, .val = 'C' },
{ 0, 0, 0, 0},
};
int any_valid;
int invalid;
char serial_line[8192];
+ unsigned storage_size;
+ int blocks;
- while ((c = getopt_long(argc, argv, "T:D:R", options, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "T:D:C:R", options, NULL)) != -1) {
switch (c) {
case 'T':
tty = optarg;
cc_usb_close(cc);
exit(1);
}
- printf ("Serial number: %d\n", serial_number);
+ cc_usb_printf(cc, "f\n");
+ storage_size = 0;
+ for (;;) {
+ cc_usb_getline(cc, line, sizeof(line));
+ if (sscanf(line, "Storage size: %u", &storage_size) == 1)
+ break;
+ }
+ printf ("Serial number: %d Storage size: %u\n", serial_number, storage_size);
+ if (storage_size)
+ blocks = storage_size / 256;
+ else
+ blocks = 511;
done = 0;
column = 0;
- for (block = 0; !done && block < 511; block++) {
+ for (block = 0; !done && block < blocks; block++) {
cc_usb_printf(cc, "e %x\n", block);
if (column == 64) {
putchar('\n');