Add Channel Mask TLV CLI support (#549)

- Add a new Dataset::Set method to support variable TLV data payload. This is mainly for Channel Mask TLV
- Add CLI to support Channel Mask TLV
This commit is contained in:
Lu Wang
2016-09-13 20:55:11 -07:00
committed by Jonathan Hui
parent 84079beb3a
commit fb823f4f72
4 changed files with 100 additions and 22 deletions
+21
View File
@@ -55,6 +55,7 @@ const DatasetCommand Dataset::sCommands[] =
{ "active", &ProcessActive },
{ "activetimestamp", &ProcessActiveTimestamp },
{ "channel", &ProcessChannel },
{ "channelmask", &ProcessChannelMask },
{ "clear", &ProcessClear },
{ "commit", &ProcessCommit },
{ "delay", &ProcessDelay },
@@ -99,6 +100,11 @@ ThreadError Dataset::Print(otOperationalDataset &aDataset)
sServer->OutputFormat("Channel: %d\r\n", aDataset.mChannel);
}
if (aDataset.mIsChannelMaskPage0Set)
{
sServer->OutputFormat("Channel Mask Page 0: %x\r\n", aDataset.mChannelMaskPage0);
}
if (aDataset.mIsDelaySet)
{
sServer->OutputFormat("Delay: %d\r\n", aDataset.mDelay);
@@ -261,6 +267,21 @@ exit:
return error;
}
ThreadError Dataset::ProcessChannelMask(otInstance *aInstance, int argc, char *argv[])
{
ThreadError error = kThreadError_None;
long value;
VerifyOrExit(argc > 0, error = kThreadError_Parse);
SuccessOrExit(error = Interpreter::ParseLong(argv[0], value));
sDataset.mChannelMaskPage0 = static_cast<uint32_t>(value);
sDataset.mIsChannelMaskPage0Set = true;
(void)aInstance;
exit:
return error;
}
ThreadError Dataset::ProcessClear(otInstance *aInstance, int argc, char *argv[])
{
memset(&sDataset, 0, sizeof(sDataset));
+1
View File
@@ -77,6 +77,7 @@ private:
static ThreadError ProcessActive(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessActiveTimestamp(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessChannel(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessChannelMask(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessClear(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessCommit(otInstance *aInstance, int argc, char *argv[]);
static ThreadError ProcessDelay(otInstance *aInstance, int argc, char *argv[]);