mirror of
https://github.com/espressif/openthread.git
synced 2026-08-30 13:59:54 +00:00
Let MTD device could response to MGMT_ACTIVE_GET.req (#1360)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user