Skip to content

Commit 1224956

Browse files
isiu-applepull[bot]
authored andcommitted
[chip-tool] Implement framework for adding and displaying command line argument descriptions (#18075)
* - Update AddArgument() to take in optional argument description. - Update Usage blurb to print out argument descriptions if available. * Update some descriptions used in AddArgument(). * scripts/helpers/restyle-diff.sh * Code review changes.
1 parent 1a33a7b commit 1224956

File tree

4 files changed

+127
-70
lines changed

4 files changed

+127
-70
lines changed

examples/chip-tool/commands/clusters/ReportCommand.h

+7-4
Original file line numberDiff line numberDiff line change
@@ -528,10 +528,13 @@ class SubscribeEvent : public ReportCommand
528528
ReportCommand("subscribe-event", credsIssuerConfig),
529529
mClusterIds(1, clusterId), mEventIds(1, eventId)
530530
{
531-
AddArgument("attr-name", eventName);
532-
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval);
533-
AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval);
534-
AddArgument("keepSubscriptions", 0, 1, &mKeepSubscriptions);
531+
AddArgument("event-name", eventName, 0, "Event name.");
532+
AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval, 0,
533+
"The requested minimum interval between reports. Sets MinIntervalFloor in the Subscribe Request.");
534+
AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval, 0,
535+
"The requested maximum interval between reports. Sets MaxIntervalCeiling in the Subscribe Request.");
536+
AddArgument("keepSubscriptions", 0, 1, &mKeepSubscriptions,
537+
"0 - Terminate existing subscriptions from initiator.\n 1 - Otherwise.");
535538
AddArgument("event-min", 0, UINT64_MAX, &mEventNumber);
536539
ReportCommand::AddArguments();
537540
}

examples/chip-tool/commands/common/Command.cpp

+40-14
Original file line numberDiff line numberDiff line change
@@ -486,62 +486,67 @@ bool Command::InitArgument(size_t argIndex, char * argValue)
486486
return isValidArgument;
487487
}
488488

489-
size_t Command::AddArgument(const char * name, const char * value, uint8_t flags)
489+
size_t Command::AddArgument(const char * name, const char * value, uint8_t flags, const char * desc)
490490
{
491491
Argument arg;
492492
arg.type = ArgumentType::Attribute;
493493
arg.name = name;
494494
arg.value = const_cast<void *>(reinterpret_cast<const void *>(value));
495495
arg.flags = flags;
496+
arg.desc = desc;
496497

497498
return AddArgumentToList(std::move(arg));
498499
}
499500

500-
size_t Command::AddArgument(const char * name, char ** value, uint8_t flags)
501+
size_t Command::AddArgument(const char * name, char ** value, uint8_t flags, const char * desc)
501502
{
502503
Argument arg;
503504
arg.type = ArgumentType::String;
504505
arg.name = name;
505506
arg.value = reinterpret_cast<void *>(value);
506507
arg.flags = flags;
508+
arg.desc = desc;
507509

508510
return AddArgumentToList(std::move(arg));
509511
}
510512

511-
size_t Command::AddArgument(const char * name, chip::CharSpan * value, uint8_t flags)
513+
size_t Command::AddArgument(const char * name, chip::CharSpan * value, uint8_t flags, const char * desc)
512514
{
513515
Argument arg;
514516
arg.type = ArgumentType::CharString;
515517
arg.name = name;
516518
arg.value = reinterpret_cast<void *>(value);
517519
arg.flags = flags;
520+
arg.desc = desc;
518521

519522
return AddArgumentToList(std::move(arg));
520523
}
521524

522-
size_t Command::AddArgument(const char * name, chip::ByteSpan * value, uint8_t flags)
525+
size_t Command::AddArgument(const char * name, chip::ByteSpan * value, uint8_t flags, const char * desc)
523526
{
524527
Argument arg;
525528
arg.type = ArgumentType::OctetString;
526529
arg.name = name;
527530
arg.value = reinterpret_cast<void *>(value);
528531
arg.flags = flags;
532+
arg.desc = desc;
529533

530534
return AddArgumentToList(std::move(arg));
531535
}
532536

533-
size_t Command::AddArgument(const char * name, AddressWithInterface * out, uint8_t flags)
537+
size_t Command::AddArgument(const char * name, AddressWithInterface * out, uint8_t flags, const char * desc)
534538
{
535539
Argument arg;
536540
arg.type = ArgumentType::Address;
537541
arg.name = name;
538542
arg.value = reinterpret_cast<void *>(out);
539543
arg.flags = flags;
544+
arg.desc = desc;
540545

541546
return AddArgumentToList(std::move(arg));
542547
}
543548

544-
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::vector<uint16_t> * value)
549+
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::vector<uint16_t> * value, const char * desc)
545550
{
546551
Argument arg;
547552
arg.type = ArgumentType::Vector16;
@@ -550,11 +555,12 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::v
550555
arg.min = min;
551556
arg.max = max;
552557
arg.flags = 0;
558+
arg.desc = desc;
553559

554560
return AddArgumentToList(std::move(arg));
555561
}
556562

557-
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::vector<uint32_t> * value)
563+
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::vector<uint32_t> * value, const char * desc)
558564
{
559565
Argument arg;
560566
arg.type = ArgumentType::Vector32;
@@ -563,11 +569,13 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, std::v
563569
arg.min = min;
564570
arg.max = max;
565571
arg.flags = 0;
572+
arg.desc = desc;
566573

567574
return AddArgumentToList(std::move(arg));
568575
}
569576

570-
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, chip::Optional<std::vector<uint32_t>> * value)
577+
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, chip::Optional<std::vector<uint32_t>> * value,
578+
const char * desc)
571579
{
572580
Argument arg;
573581
arg.type = ArgumentType::Vector32;
@@ -576,57 +584,63 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, chip::
576584
arg.min = min;
577585
arg.max = max;
578586
arg.flags = Argument::kOptional;
587+
arg.desc = desc;
579588

580589
return AddArgumentToList(std::move(arg));
581590
}
582591

583-
size_t Command::AddArgument(const char * name, ComplexArgument * value)
592+
size_t Command::AddArgument(const char * name, ComplexArgument * value, const char * desc)
584593
{
585594
Argument arg;
586595
arg.type = ArgumentType::Complex;
587596
arg.name = name;
588597
arg.value = static_cast<void *>(value);
589598
arg.flags = 0;
599+
arg.desc = desc;
590600

591601
return AddArgumentToList(std::move(arg));
592602
}
593603

594-
size_t Command::AddArgument(const char * name, CustomArgument * value)
604+
size_t Command::AddArgument(const char * name, CustomArgument * value, const char * desc)
595605
{
596606
Argument arg;
597607
arg.type = ArgumentType::Custom;
598608
arg.name = name;
599609
arg.value = const_cast<void *>(reinterpret_cast<const void *>(value));
600610
arg.flags = 0;
611+
arg.desc = desc;
601612

602613
return AddArgumentToList(std::move(arg));
603614
}
604615

605-
size_t Command::AddArgument(const char * name, float min, float max, float * out, uint8_t flags)
616+
size_t Command::AddArgument(const char * name, float min, float max, float * out, uint8_t flags, const char * desc)
606617
{
607618
Argument arg;
608619
arg.type = ArgumentType::Float;
609620
arg.name = name;
610621
arg.value = reinterpret_cast<void *>(out);
611622
arg.flags = flags;
623+
arg.desc = desc;
612624
// Ignore min/max for now; they're always +-Infinity anyway.
613625

614626
return AddArgumentToList(std::move(arg));
615627
}
616628

617-
size_t Command::AddArgument(const char * name, double min, double max, double * out, uint8_t flags)
629+
size_t Command::AddArgument(const char * name, double min, double max, double * out, uint8_t flags, const char * desc)
618630
{
619631
Argument arg;
620632
arg.type = ArgumentType::Double;
621633
arg.name = name;
622634
arg.value = reinterpret_cast<void *>(out);
623635
arg.flags = flags;
636+
arg.desc = desc;
624637
// Ignore min/max for now; they're always +-Infinity anyway.
625638

626639
return AddArgumentToList(std::move(arg));
627640
}
628641

629-
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type, uint8_t flags)
642+
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, ArgumentType type, uint8_t flags,
643+
const char * desc)
630644
{
631645
Argument arg;
632646
arg.type = type;
@@ -635,11 +649,12 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void *
635649
arg.min = min;
636650
arg.max = max;
637651
arg.flags = flags;
652+
arg.desc = desc;
638653

639654
return AddArgumentToList(std::move(arg));
640655
}
641656

642-
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, uint8_t flags)
657+
size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void * out, uint8_t flags, const char * desc)
643658
{
644659
Argument arg;
645660
arg.type = ArgumentType::Number_uint8;
@@ -648,6 +663,7 @@ size_t Command::AddArgument(const char * name, int64_t min, uint64_t max, void *
648663
arg.min = min;
649664
arg.max = max;
650665
arg.flags = flags;
666+
arg.desc = desc;
651667

652668
return AddArgumentToList(std::move(arg));
653669
}
@@ -662,6 +678,16 @@ const char * Command::GetArgumentName(size_t index) const
662678
return nullptr;
663679
}
664680

681+
const char * Command::GetArgumentDescription(size_t index) const
682+
{
683+
if (index < mArgs.size())
684+
{
685+
return mArgs.at(index).desc;
686+
}
687+
688+
return nullptr;
689+
}
690+
665691
const char * Command::GetAttribute(void) const
666692
{
667693
size_t argsCount = mArgs.size();

0 commit comments

Comments
 (0)