Let MTD device could response to MGMT_ACTIVE_GET.req (#1360)

This commit is contained in:
Shu Chen
2017-02-21 23:15:22 -08:00
committed by Jonathan Hui
parent cc97c869ef
commit bd161d5750
4 changed files with 46 additions and 42 deletions
+32 -2
View File
@@ -872,8 +872,10 @@ exit:
}
ActiveDatasetBase::ActiveDatasetBase(ThreadNetif &aThreadNetif):
DatasetManager(aThreadNetif, Tlv::kActiveTimestamp, OPENTHREAD_URI_ACTIVE_SET, OPENTHREAD_URI_ACTIVE_GET)
DatasetManager(aThreadNetif, Tlv::kActiveTimestamp, OPENTHREAD_URI_ACTIVE_SET, OPENTHREAD_URI_ACTIVE_GET),
mResourceGet(OPENTHREAD_URI_ACTIVE_GET, &ActiveDatasetBase::HandleGet, this)
{
mNetif.GetCoapServer().AddResource(mResourceGet);
}
ThreadError ActiveDatasetBase::Restore(void)
@@ -940,12 +942,27 @@ exit:
return error;
}
void ActiveDatasetBase::HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
static_cast<ActiveDatasetBase *>(aContext)->HandleGet(
*static_cast<Coap::Header *>(aHeader), *static_cast<Message *>(aMessage),
*static_cast<const Ip6::MessageInfo *>(aMessageInfo));
}
void ActiveDatasetBase::HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
DatasetManager::Get(aHeader, aMessage, aMessageInfo);
}
PendingDatasetBase::PendingDatasetBase(ThreadNetif &aThreadNetif):
DatasetManager(aThreadNetif, Tlv::kPendingTimestamp, OPENTHREAD_URI_PENDING_SET, OPENTHREAD_URI_PENDING_GET),
mTimer(aThreadNetif.GetIp6().mTimerScheduler, &PendingDatasetBase::HandleTimer, this),
mLocalTime(0),
mNetworkTime(0)
mNetworkTime(0),
mResourceGet(OPENTHREAD_URI_PENDING_GET, &PendingDatasetBase::HandleGet, this)
{
mNetif.GetCoapServer().AddResource(mResourceGet);
}
ThreadError PendingDatasetBase::Restore(void)
@@ -1137,5 +1154,18 @@ void PendingDatasetBase::HandleNetworkUpdate(uint8_t &aFlags)
DatasetManager::HandleNetworkUpdate(aFlags);
}
void PendingDatasetBase::HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
static_cast<PendingDatasetBase *>(aContext)->HandleGet(
*static_cast<Coap::Header *>(aHeader), *static_cast<Message *>(aMessage),
*static_cast<const Ip6::MessageInfo *>(aMessageInfo));
}
void PendingDatasetBase::HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
DatasetManager::Get(aHeader, aMessage, aMessageInfo);
}
} // namespace MeshCoP
} // namespace Thread
+14
View File
@@ -122,6 +122,13 @@ public:
ThreadError Set(const Dataset &aDataset);
ThreadError Set(const Timestamp &aTimestamp, const Message &aMessage, uint16_t aOffset, uint8_t aLength);
private:
static void HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
Coap::Resource mResourceGet;
};
class PendingDatasetBase: public DatasetManager
@@ -155,6 +162,13 @@ protected:
Timer mTimer;
uint32_t mLocalTime;
uint32_t mNetworkTime;
private:
static void HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
Coap::Resource mResourceGet;
};
} // namespace MeshCoP
-30
View File
@@ -59,10 +59,8 @@ namespace MeshCoP {
ActiveDataset::ActiveDataset(ThreadNetif &aThreadNetif):
ActiveDatasetBase(aThreadNetif),
mResourceGet(OPENTHREAD_URI_ACTIVE_GET, &ActiveDataset::HandleGet, this),
mResourceSet(OPENTHREAD_URI_ACTIVE_SET, &ActiveDataset::HandleSet, this)
{
mNetif.GetCoapServer().AddResource(mResourceGet);
}
bool ActiveDataset::IsTlvInitialized(Tlv::Type aType)
@@ -191,19 +189,6 @@ void ActiveDataset::StopLeader(void)
mNetif.GetCoapServer().RemoveResource(mResourceSet);
}
void ActiveDataset::HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
static_cast<ActiveDataset *>(aContext)->HandleGet(
*static_cast<Coap::Header *>(aHeader), *static_cast<Message *>(aMessage),
*static_cast<const Ip6::MessageInfo *>(aMessageInfo));
}
void ActiveDataset::HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
DatasetManager::Get(aHeader, aMessage, aMessageInfo);
}
void ActiveDataset::HandleSet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
@@ -223,10 +208,8 @@ exit:
PendingDataset::PendingDataset(ThreadNetif &aThreadNetif):
PendingDatasetBase(aThreadNetif),
mResourceGet(OPENTHREAD_URI_PENDING_GET, &PendingDataset::HandleGet, this),
mResourceSet(OPENTHREAD_URI_PENDING_SET, &PendingDataset::HandleSet, this)
{
mNetif.GetCoapServer().AddResource(mResourceGet);
}
void PendingDataset::StartLeader(void)
@@ -244,19 +227,6 @@ void PendingDataset::StopLeader(void)
mNetif.GetCoapServer().RemoveResource(mResourceSet);
}
void PendingDataset::HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
static_cast<PendingDataset *>(aContext)->HandleGet(
*static_cast<Coap::Header *>(aHeader), *static_cast<Message *>(aMessage),
*static_cast<const Ip6::MessageInfo *>(aMessageInfo));
}
void PendingDataset::HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
{
DatasetManager::Get(aHeader, aMessage, aMessageInfo);
}
void PendingDataset::HandleSet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo)
{
-10
View File
@@ -57,17 +57,12 @@ public:
void StopLeader(void);
private:
static void HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
static void HandleSet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleSet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
bool IsTlvInitialized(Tlv::Type aType);
Coap::Resource mResourceGet;
Coap::Resource mResourceSet;
};
@@ -81,15 +76,10 @@ public:
void StopLeader(void);
private:
static void HandleGet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleGet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
static void HandleSet(void *aContext, otCoapHeader *aHeader, otMessage aMessage,
const otMessageInfo *aMessageInfo);
void HandleSet(Coap::Header &aHeader, Message &aMessage, const Ip6::MessageInfo &aMessageInfo);
Coap::Resource mResourceGet;
Coap::Resource mResourceSet;
};