Refactor OpenThread Global Variables into a Single Context Structure (#357)

* Refactor OpenThread to contain all global/static variables in a single context structure.
This commit is contained in:
Nick Banks
2016-10-04 15:23:25 -07:00
committed by Jonathan Hui
parent 671964c2d4
commit 79d99e7a91
27 changed files with 619 additions and 460 deletions
+5 -6
View File
@@ -42,6 +42,7 @@
#include <string.h>
#include <openthread.h>
#include <openthread-instance.h>
#include <openthread-diag.h>
#include <commissioning/commissioner.h>
#include <commissioning/joiner.h>
@@ -59,8 +60,6 @@ using Thread::Encoding::BigEndian::HostSwap32;
namespace Thread {
extern Ip6::Ip6 *sIp6;
namespace Cli {
const struct Command Interpreter::sCommands[] =
@@ -133,10 +132,10 @@ Interpreter::Interpreter(otInstance *aInstance):
sLength(8),
sCount(1),
sInterval(1000),
sPingTimer(sIp6->mTimerScheduler, &Interpreter::s_HandlePingTimer, this),
sPingTimer(aInstance->mIp6.mTimerScheduler, &Interpreter::s_HandlePingTimer, this),
mInstance(aInstance)
{
sIp6->mIcmp.SetEchoReplyHandler(&s_HandleEchoResponse, this);
mInstance->mIp6.mIcmp.SetEchoReplyHandler(&s_HandleEchoResponse, this);
otSetStateChangedCallback(mInstance, &Interpreter::s_HandleNetifStateChanged, this);
}
@@ -1142,11 +1141,11 @@ void Interpreter::HandlePingTimer()
uint32_t timestamp = HostSwap32(Timer::GetNow());
Message *message;
VerifyOrExit((message = sIp6->mIcmp.NewMessage(0)) != NULL, error = kThreadError_NoBufs);
VerifyOrExit((message = mInstance->mIp6.mIcmp.NewMessage(0)) != NULL, error = kThreadError_NoBufs);
SuccessOrExit(error = message->Append(&timestamp, sizeof(timestamp)));
SuccessOrExit(error = message->SetLength(sLength));
SuccessOrExit(error = sIp6->mIcmp.SendEchoRequest(*message, sMessageInfo));
SuccessOrExit(error = mInstance->mIp6.mIcmp.SendEchoRequest(*message, sMessageInfo));
sCount--;
exit: