mirror of
https://github.com/espressif/openthread.git
synced 2026-10-11 10:17:35 +00:00
Remove globals from message.cpp.
This commit is contained in:
+1
-1
@@ -1060,7 +1060,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sCount)
|
if (sCount)
|
||||||
|
|||||||
+64
-65
@@ -38,88 +38,82 @@
|
|||||||
|
|
||||||
namespace Thread {
|
namespace Thread {
|
||||||
|
|
||||||
static Buffer *NewBuffer(void);
|
MessagePool::MessagePool(void)
|
||||||
static ThreadError FreeBuffers(Buffer *aBuffer);
|
{
|
||||||
static ThreadError ReclaimBuffers(int aNumBuffers);
|
mFreeBuffers = mBuffers;
|
||||||
|
|
||||||
static int sNumFreeBuffers;
|
for (int i = 0; i < kNumBuffers - 1; i++)
|
||||||
static Buffer sBuffers[kNumBuffers];
|
{
|
||||||
static Buffer *sFreeBuffers;
|
mBuffers[i].SetNextBuffer(&mBuffers[i + 1]);
|
||||||
static MessageList sAll;
|
}
|
||||||
|
|
||||||
Buffer *NewBuffer(void)
|
mBuffers[kNumBuffers - 1].SetNextBuffer(NULL);
|
||||||
|
mNumFreeBuffers = kNumBuffers;
|
||||||
|
}
|
||||||
|
|
||||||
|
Message *MessagePool::New(uint8_t aType, uint16_t aReserved)
|
||||||
|
{
|
||||||
|
Message *message = NULL;
|
||||||
|
|
||||||
|
VerifyOrExit((message = static_cast<Message *>(NewBuffer())) != NULL, ;);
|
||||||
|
|
||||||
|
memset(message, 0, sizeof(*message));
|
||||||
|
message->SetMessagePool(this);
|
||||||
|
message->SetType(aType);
|
||||||
|
message->SetReserved(aReserved);
|
||||||
|
message->SetLinkSecurityEnabled(true);
|
||||||
|
|
||||||
|
if (message->SetLength(0) != kThreadError_None)
|
||||||
|
{
|
||||||
|
Free(message);
|
||||||
|
message = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
exit:
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
ThreadError MessagePool::Free(Message *aMessage)
|
||||||
|
{
|
||||||
|
assert(aMessage->GetMessageList(MessageInfo::kListAll).mList == NULL &&
|
||||||
|
aMessage->GetMessageList(MessageInfo::kListInterface).mList == NULL);
|
||||||
|
return FreeBuffers(static_cast<Buffer *>(aMessage));
|
||||||
|
}
|
||||||
|
|
||||||
|
Buffer *MessagePool::NewBuffer(void)
|
||||||
{
|
{
|
||||||
Buffer *buffer = NULL;
|
Buffer *buffer = NULL;
|
||||||
|
|
||||||
VerifyOrExit(sFreeBuffers != NULL, ;);
|
VerifyOrExit(mFreeBuffers != NULL, ;);
|
||||||
|
|
||||||
buffer = sFreeBuffers;
|
buffer = mFreeBuffers;
|
||||||
sFreeBuffers = sFreeBuffers->GetNextBuffer();
|
mFreeBuffers = mFreeBuffers->GetNextBuffer();
|
||||||
buffer->SetNextBuffer(NULL);
|
buffer->SetNextBuffer(NULL);
|
||||||
sNumFreeBuffers--;
|
mNumFreeBuffers--;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError FreeBuffers(Buffer *aBuffer)
|
ThreadError MessagePool::FreeBuffers(Buffer *aBuffer)
|
||||||
{
|
{
|
||||||
Buffer *tmpBuffer;
|
Buffer *tmpBuffer;
|
||||||
|
|
||||||
while (aBuffer != NULL)
|
while (aBuffer != NULL)
|
||||||
{
|
{
|
||||||
tmpBuffer = aBuffer->GetNextBuffer();
|
tmpBuffer = aBuffer->GetNextBuffer();
|
||||||
aBuffer->SetNextBuffer(sFreeBuffers);
|
aBuffer->SetNextBuffer(mFreeBuffers);
|
||||||
sFreeBuffers = aBuffer;
|
mFreeBuffers = aBuffer;
|
||||||
sNumFreeBuffers++;
|
mNumFreeBuffers++;
|
||||||
aBuffer = tmpBuffer;
|
aBuffer = tmpBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
return kThreadError_None;
|
return kThreadError_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError ReclaimBuffers(int aNumBuffers)
|
ThreadError MessagePool::ReclaimBuffers(int aNumBuffers)
|
||||||
{
|
{
|
||||||
return (aNumBuffers <= sNumFreeBuffers) ? kThreadError_None : kThreadError_NoBufs;
|
return (aNumBuffers <= mNumFreeBuffers) ? kThreadError_None : kThreadError_NoBufs;
|
||||||
}
|
|
||||||
|
|
||||||
ThreadError Message::Init(void)
|
|
||||||
{
|
|
||||||
sFreeBuffers = sBuffers;
|
|
||||||
|
|
||||||
for (int i = 0; i < kNumBuffers - 1; i++)
|
|
||||||
{
|
|
||||||
sBuffers[i].SetNextBuffer(&sBuffers[i + 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
sBuffers[kNumBuffers - 1].SetNextBuffer(NULL);
|
|
||||||
sNumFreeBuffers = kNumBuffers;
|
|
||||||
|
|
||||||
return kThreadError_None;
|
|
||||||
}
|
|
||||||
|
|
||||||
Message *Message::New(uint8_t aType, uint16_t aReserved)
|
|
||||||
{
|
|
||||||
Message *message = NULL;
|
|
||||||
|
|
||||||
VerifyOrExit((message = reinterpret_cast<Message *>(NewBuffer())) != NULL, ;);
|
|
||||||
|
|
||||||
memset(message, 0, sizeof(*message));
|
|
||||||
message->SetType(aType);
|
|
||||||
message->SetReserved(aReserved);
|
|
||||||
message->SetLinkSecurityEnabled(true);
|
|
||||||
|
|
||||||
VerifyOrExit(message->SetLength(0) == kThreadError_None, Message::Free(*message));
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
ThreadError Message::Free(Message &aMessage)
|
|
||||||
{
|
|
||||||
assert(aMessage.GetMessageList(MessageInfo::kListAll).mList == NULL &&
|
|
||||||
aMessage.GetMessageList(MessageInfo::kListInterface).mList == NULL);
|
|
||||||
return FreeBuffers(reinterpret_cast<Buffer *>(&aMessage));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadError Message::ResizeMessage(uint16_t aLength)
|
ThreadError Message::ResizeMessage(uint16_t aLength)
|
||||||
@@ -135,7 +129,7 @@ ThreadError Message::ResizeMessage(uint16_t aLength)
|
|||||||
{
|
{
|
||||||
if (curBuffer->GetNextBuffer() == NULL)
|
if (curBuffer->GetNextBuffer() == NULL)
|
||||||
{
|
{
|
||||||
curBuffer->SetNextBuffer(NewBuffer());
|
curBuffer->SetNextBuffer(GetMessagePool()->NewBuffer());
|
||||||
VerifyOrExit(curBuffer->GetNextBuffer() != NULL, error = kThreadError_NoBufs);
|
VerifyOrExit(curBuffer->GetNextBuffer() != NULL, error = kThreadError_NoBufs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,12 +142,17 @@ ThreadError Message::ResizeMessage(uint16_t aLength)
|
|||||||
curBuffer = curBuffer->GetNextBuffer();
|
curBuffer = curBuffer->GetNextBuffer();
|
||||||
lastBuffer->SetNextBuffer(NULL);
|
lastBuffer->SetNextBuffer(NULL);
|
||||||
|
|
||||||
FreeBuffers(curBuffer);
|
GetMessagePool()->FreeBuffers(curBuffer);
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ThreadError Message::Free(void)
|
||||||
|
{
|
||||||
|
return GetMessagePool()->Free(this);
|
||||||
|
}
|
||||||
|
|
||||||
Message *Message::GetNext(void) const
|
Message *Message::GetNext(void) const
|
||||||
{
|
{
|
||||||
return GetMessageList(MessageInfo::kListInterface).mNext;
|
return GetMessageList(MessageInfo::kListInterface).mNext;
|
||||||
@@ -181,7 +180,7 @@ ThreadError Message::SetLength(uint16_t aLength)
|
|||||||
bufs -= (((totalLengthCurrent - kHeadBufferDataSize) - 1) / kBufferDataSize) + 1;
|
bufs -= (((totalLengthCurrent - kHeadBufferDataSize) - 1) / kBufferDataSize) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SuccessOrExit(error = ReclaimBuffers(bufs));
|
SuccessOrExit(error = GetMessagePool()->ReclaimBuffers(bufs));
|
||||||
|
|
||||||
SuccessOrExit(error = ResizeMessage(totalLengthRequest));
|
SuccessOrExit(error = ResizeMessage(totalLengthRequest));
|
||||||
mInfo.mLength = aLength;
|
mInfo.mLength = aLength;
|
||||||
@@ -292,7 +291,7 @@ uint16_t Message::Read(uint16_t aOffset, uint16_t aLength, void *aBuf) const
|
|||||||
|
|
||||||
aLength -= bytesToCopy;
|
aLength -= bytesToCopy;
|
||||||
bytesCopied += bytesToCopy;
|
bytesCopied += bytesToCopy;
|
||||||
aBuf = reinterpret_cast<uint8_t *>(aBuf) + bytesToCopy;
|
aBuf = static_cast<uint8_t *>(aBuf) + bytesToCopy;
|
||||||
|
|
||||||
aOffset = 0;
|
aOffset = 0;
|
||||||
}
|
}
|
||||||
@@ -328,7 +327,7 @@ uint16_t Message::Read(uint16_t aOffset, uint16_t aLength, void *aBuf) const
|
|||||||
|
|
||||||
aLength -= bytesToCopy;
|
aLength -= bytesToCopy;
|
||||||
bytesCopied += bytesToCopy;
|
bytesCopied += bytesToCopy;
|
||||||
aBuf = reinterpret_cast<uint8_t *>(aBuf) + bytesToCopy;
|
aBuf = static_cast<uint8_t *>(aBuf) + bytesToCopy;
|
||||||
|
|
||||||
curBuffer = curBuffer->GetNextBuffer();
|
curBuffer = curBuffer->GetNextBuffer();
|
||||||
aOffset = 0;
|
aOffset = 0;
|
||||||
@@ -367,7 +366,7 @@ int Message::Write(uint16_t aOffset, uint16_t aLength, const void *aBuf)
|
|||||||
|
|
||||||
aLength -= bytesToCopy;
|
aLength -= bytesToCopy;
|
||||||
bytesCopied += bytesToCopy;
|
bytesCopied += bytesToCopy;
|
||||||
aBuf = reinterpret_cast<const uint8_t *>(aBuf) + bytesToCopy;
|
aBuf = static_cast<const uint8_t *>(aBuf) + bytesToCopy;
|
||||||
|
|
||||||
aOffset = 0;
|
aOffset = 0;
|
||||||
}
|
}
|
||||||
@@ -403,7 +402,7 @@ int Message::Write(uint16_t aOffset, uint16_t aLength, const void *aBuf)
|
|||||||
|
|
||||||
aLength -= bytesToCopy;
|
aLength -= bytesToCopy;
|
||||||
bytesCopied += bytesToCopy;
|
bytesCopied += bytesToCopy;
|
||||||
aBuf = reinterpret_cast<const uint8_t *>(aBuf) + bytesToCopy;
|
aBuf = static_cast<const uint8_t *>(aBuf) + bytesToCopy;
|
||||||
|
|
||||||
curBuffer = curBuffer->GetNextBuffer();
|
curBuffer = curBuffer->GetNextBuffer();
|
||||||
aOffset = 0;
|
aOffset = 0;
|
||||||
@@ -694,7 +693,7 @@ Message *MessageQueue::GetHead(void) const
|
|||||||
|
|
||||||
ThreadError MessageQueue::Enqueue(Message &aMessage)
|
ThreadError MessageQueue::Enqueue(Message &aMessage)
|
||||||
{
|
{
|
||||||
aMessage.GetMessageList(MessageInfo::kListAll).mList = &sAll;
|
aMessage.GetMessageList(MessageInfo::kListAll).mList = &aMessage.GetMessagePool()->mAll;
|
||||||
aMessage.GetMessageList(MessageInfo::kListInterface).mList = &mInterface;
|
aMessage.GetMessageList(MessageInfo::kListInterface).mList = &mInterface;
|
||||||
AddToList(MessageInfo::kListAll, aMessage);
|
AddToList(MessageInfo::kListAll, aMessage);
|
||||||
AddToList(MessageInfo::kListInterface, aMessage);
|
AddToList(MessageInfo::kListInterface, aMessage);
|
||||||
|
|||||||
+58
-28
@@ -61,6 +61,7 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
class Message;
|
class Message;
|
||||||
|
class MessagePool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This structure contains pointers to the head and tail of a Message list.
|
* This structure contains pointers to the head and tail of a Message list.
|
||||||
@@ -98,6 +99,7 @@ struct BufferHeader
|
|||||||
*/
|
*/
|
||||||
struct MessageInfo
|
struct MessageInfo
|
||||||
{
|
{
|
||||||
|
MessagePool *mMessagePool; ///< Identifies the message pool for this message.
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
kListAll = 0, ///< Identifies the all messages list.
|
kListAll = 0, ///< Identifies the all messages list.
|
||||||
@@ -200,6 +202,7 @@ private:
|
|||||||
*/
|
*/
|
||||||
class Message: private Buffer
|
class Message: private Buffer
|
||||||
{
|
{
|
||||||
|
friend class MessagePool;
|
||||||
friend class MessageQueue;
|
friend class MessageQueue;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -210,6 +213,12 @@ public:
|
|||||||
kTypeMacDataPoll = 2, ///< A MAC data poll message
|
kTypeMacDataPoll = 2, ///< A MAC data poll message
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method frees this message buffer.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
ThreadError Free(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns a pointer to the next message in the same interface list.
|
* This method returns a pointer to the next message in the same interface list.
|
||||||
*
|
*
|
||||||
@@ -508,35 +517,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
uint16_t UpdateChecksum(uint16_t aChecksum, uint16_t aOffset, uint16_t aLength) const;
|
uint16_t UpdateChecksum(uint16_t aChecksum, uint16_t aOffset, uint16_t aLength) const;
|
||||||
|
|
||||||
/**
|
|
||||||
* This static method is used to initialize the message buffer pool.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static ThreadError Init(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This static method is used to obtain a new message.
|
|
||||||
*
|
|
||||||
* @param[in] aType The message type.
|
|
||||||
* @param[in] aReserveHeader The number of header bytes to reserve.
|
|
||||||
*
|
|
||||||
* @returns A pointer to the message or NULL if no message buffers are available.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static Message *New(uint8_t aType, uint16_t aReserveHeader);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This static method is used to free a message and return all message buffers to the buffer pool.
|
|
||||||
*
|
|
||||||
* @param[in] aMessage The message to free.
|
|
||||||
*
|
|
||||||
* @retval kThreadError_None Successfully freed the message.
|
|
||||||
* @retval kThreadError_InvalidArgs The message is already freed.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static ThreadError Free(Message &aMessage);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
MessagePool *GetMessagePool(void) { return mInfo.mMessagePool; }
|
||||||
|
|
||||||
|
void SetMessagePool(MessagePool *aMessagePool) { mInfo.mMessagePool = aMessagePool; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method returns a reference to a message list.
|
* This method returns a reference to a message list.
|
||||||
*
|
*
|
||||||
@@ -664,6 +649,51 @@ private:
|
|||||||
MessageList mInterface; ///< The instance-specific message list.
|
MessageList mInterface; ///< The instance-specific message list.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MessagePool
|
||||||
|
{
|
||||||
|
friend class Message;
|
||||||
|
friend class MessageQueue;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* This constructor initializes the object.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
MessagePool(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is used to obtain a new message.
|
||||||
|
*
|
||||||
|
* @param[in] aType The message type.
|
||||||
|
* @param[in] aReserveHeader The number of header bytes to reserve.
|
||||||
|
*
|
||||||
|
* @returns A pointer to the message or NULL if no message buffers are available.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Message *New(uint8_t aType, uint16_t aReserveHeader);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is used to free a message and return all message buffers to the buffer pool.
|
||||||
|
*
|
||||||
|
* @param[in] aMessage The message to free.
|
||||||
|
*
|
||||||
|
* @retval kThreadError_None Successfully freed the message.
|
||||||
|
* @retval kThreadError_InvalidArgs The message is already freed.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
ThreadError Free(Message *aMessage);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Buffer *NewBuffer(void);
|
||||||
|
ThreadError FreeBuffers(Buffer *aBuffer);
|
||||||
|
ThreadError ReclaimBuffers(int aNumBuffers);
|
||||||
|
|
||||||
|
int mNumFreeBuffers;
|
||||||
|
Buffer mBuffers[kNumBuffers];
|
||||||
|
Buffer *mFreeBuffers;
|
||||||
|
MessageList mAll;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -232,7 +232,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && replyMessage != NULL)
|
if (error != kThreadError_None && replyMessage != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*replyMessage);
|
replyMessage->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ Ip6::Ip6(void):
|
|||||||
|
|
||||||
Message *Ip6::NewMessage(uint16_t reserved)
|
Message *Ip6::NewMessage(uint16_t reserved)
|
||||||
{
|
{
|
||||||
return Message::New(Message::kTypeIp6, sizeof(Header) + sizeof(HopByHopHeader) + sizeof(OptionMpl) + reserved);
|
return mMessagePool.New(Message::kTypeIp6, sizeof(Header) + sizeof(HopByHopHeader) + sizeof(OptionMpl) + reserved);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ip6::SetForwardingEnabled(bool aEnable)
|
void Ip6::SetForwardingEnabled(bool aEnable)
|
||||||
@@ -385,7 +385,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && messageCopy != NULL)
|
if (error != kThreadError_None && messageCopy != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*messageCopy);
|
messageCopy->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -505,7 +505,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None || !forward)
|
if (error != kThreadError_None || !forward)
|
||||||
{
|
{
|
||||||
Message::Free(message);
|
message.Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|||||||
@@ -327,6 +327,7 @@ public:
|
|||||||
Icmp mIcmp;
|
Icmp mIcmp;
|
||||||
Udp mUdp;
|
Udp mUdp;
|
||||||
|
|
||||||
|
MessagePool mMessagePool;
|
||||||
TaskletScheduler mTaskletScheduler;
|
TaskletScheduler mTaskletScheduler;
|
||||||
TimerScheduler mTimerScheduler;
|
TimerScheduler mTimerScheduler;
|
||||||
|
|
||||||
|
|||||||
@@ -872,7 +872,6 @@ ThreadError otEnable(void)
|
|||||||
VerifyOrExit(!mEnabled, error = kThreadError_InvalidState);
|
VerifyOrExit(!mEnabled, error = kThreadError_InvalidState);
|
||||||
|
|
||||||
otLogInfoApi("otEnable\n");
|
otLogInfoApi("otEnable\n");
|
||||||
Message::Init();
|
|
||||||
sIp6 = new(&sIp6Raw) Ip6::Ip6;
|
sIp6 = new(&sIp6Raw) Ip6::Ip6;
|
||||||
sThreadNetif = new(&sThreadNetifRaw) ThreadNetif(*sIp6);
|
sThreadNetif = new(&sThreadNetifRaw) ThreadNetif(*sIp6);
|
||||||
mEnabled = true;
|
mEnabled = true;
|
||||||
@@ -1075,7 +1074,7 @@ otMessage otNewUdpMessage(void)
|
|||||||
|
|
||||||
ThreadError otFreeMessage(otMessage aMessage)
|
ThreadError otFreeMessage(otMessage aMessage)
|
||||||
{
|
{
|
||||||
return Message::Free(*static_cast<Message *>(aMessage));
|
return static_cast<Message *>(aMessage)->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t otGetMessageLength(otMessage aMessage)
|
uint16_t otGetMessageLength(otMessage aMessage)
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -338,7 +338,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -428,7 +428,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -624,7 +624,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,13 +113,13 @@ ThreadError MeshForwarder::Stop()
|
|||||||
while ((message = mSendQueue.GetHead()) != NULL)
|
while ((message = mSendQueue.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mSendQueue.Dequeue(*message);
|
mSendQueue.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((message = mReassemblyList.GetHead()) != NULL)
|
while ((message = mReassemblyList.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mReassemblyList.Dequeue(*message);
|
mReassemblyList.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
mEnabled = false;
|
mEnabled = false;
|
||||||
@@ -157,7 +157,7 @@ void MeshForwarder::HandleResolved(const Ip6::Address &aEid, ThreadError aError)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Message::Free(*cur);
|
cur->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -347,7 +347,7 @@ Message *MeshForwarder::GetDirectTransmission()
|
|||||||
case kThreadError_Drop:
|
case kThreadError_Drop:
|
||||||
case kThreadError_NoBufs:
|
case kThreadError_NoBufs:
|
||||||
mSendQueue.Dequeue(*curMessage);
|
mSendQueue.Dequeue(*curMessage);
|
||||||
Message::Free(*curMessage);
|
curMessage->Free();
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -620,7 +620,7 @@ void MeshForwarder::HandlePollTimer()
|
|||||||
{
|
{
|
||||||
Message *message;
|
Message *message;
|
||||||
|
|
||||||
if ((message = Message::New(Message::kTypeMacDataPoll, 0)) != NULL)
|
if ((message = mNetif.GetIp6().mMessagePool.New(Message::kTypeMacDataPoll, 0)) != NULL)
|
||||||
{
|
{
|
||||||
SendMessage(*message);
|
SendMessage(*message);
|
||||||
otLogInfoMac("Sent poll\n");
|
otLogInfoMac("Sent poll\n");
|
||||||
@@ -1048,7 +1048,7 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame)
|
|||||||
if (mSendMessage->GetDirectTransmission() == false && mSendMessage->IsChildPending() == false)
|
if (mSendMessage->GetDirectTransmission() == false && mSendMessage->IsChildPending() == false)
|
||||||
{
|
{
|
||||||
mSendQueue.Dequeue(*mSendMessage);
|
mSendQueue.Dequeue(*mSendMessage);
|
||||||
Message::Free(*mSendMessage);
|
mSendMessage->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
mScheduleTransmissionTask.Post();
|
mScheduleTransmissionTask.Post();
|
||||||
@@ -1079,7 +1079,7 @@ void MeshForwarder::HandleDiscoverTimer(void)
|
|||||||
if (mScanChannel > kPhyMaxChannel)
|
if (mScanChannel > kPhyMaxChannel)
|
||||||
{
|
{
|
||||||
mSendQueue.Dequeue(*mSendMessage);
|
mSendQueue.Dequeue(*mSendMessage);
|
||||||
Message::Free(*mSendMessage);
|
mSendMessage->Free();
|
||||||
mMac.SetChannel(mRestoreChannel);
|
mMac.SetChannel(mRestoreChannel);
|
||||||
mScanning = false;
|
mScanning = false;
|
||||||
mMle.HandleDiscoverComplete();
|
mMle.HandleDiscoverComplete();
|
||||||
@@ -1235,7 +1235,8 @@ void MeshForwarder::HandleMesh(uint8_t *aFrame, uint8_t aFrameLength, const Thre
|
|||||||
|
|
||||||
meshHeader->SetHopsLeft(meshHeader->GetHopsLeft() - 1);
|
meshHeader->SetHopsLeft(meshHeader->GetHopsLeft() - 1);
|
||||||
|
|
||||||
VerifyOrExit((message = Message::New(Message::kType6lowpan, 0)) != NULL, error = kThreadError_Drop);
|
VerifyOrExit((message = mNetif.GetIp6().mMessagePool.New(Message::kType6lowpan, 0)) != NULL,
|
||||||
|
error = kThreadError_Drop);
|
||||||
SuccessOrExit(error = message->SetLength(aFrameLength));
|
SuccessOrExit(error = message->SetLength(aFrameLength));
|
||||||
message->Write(0, aFrameLength, aFrame);
|
message->Write(0, aFrameLength, aFrame);
|
||||||
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
||||||
@@ -1248,7 +1249,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1296,7 +1297,8 @@ void MeshForwarder::HandleFragment(uint8_t *aFrame, uint8_t aFrameLength,
|
|||||||
aFrame += fragmentHeader->GetHeaderLength();
|
aFrame += fragmentHeader->GetHeaderLength();
|
||||||
aFrameLength -= fragmentHeader->GetHeaderLength();
|
aFrameLength -= fragmentHeader->GetHeaderLength();
|
||||||
|
|
||||||
VerifyOrExit((message = Message::New(Message::kTypeIp6, 0)) != NULL, error = kThreadError_NoBufs);
|
VerifyOrExit((message = mNetif.GetIp6().mMessagePool.New(Message::kTypeIp6, 0)) != NULL,
|
||||||
|
error = kThreadError_NoBufs);
|
||||||
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
||||||
message->SetPanId(aMessageInfo.mPanId);
|
message->SetPanId(aMessageInfo.mPanId);
|
||||||
headerLength = mLowpan.Decompress(*message, aMacSource, aMacDest, aFrame, aFrameLength, datagramLength);
|
headerLength = mLowpan.Decompress(*message, aMacSource, aMacDest, aFrame, aFrameLength, datagramLength);
|
||||||
@@ -1361,7 +1363,7 @@ exit:
|
|||||||
}
|
}
|
||||||
else if (message != NULL)
|
else if (message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1388,7 +1390,7 @@ void MeshForwarder::HandleReassemblyTimer()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mReassemblyList.Dequeue(*message);
|
mReassemblyList.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1407,7 +1409,8 @@ void MeshForwarder::HandleLowpanHC(uint8_t *aFrame, uint8_t aFrameLength,
|
|||||||
int headerLength;
|
int headerLength;
|
||||||
uint16_t ip6PayloadLength;
|
uint16_t ip6PayloadLength;
|
||||||
|
|
||||||
VerifyOrExit((message = Message::New(Message::kTypeIp6, 0)) != NULL, error = kThreadError_NoBufs);
|
VerifyOrExit((message = mNetif.GetIp6().mMessagePool.New(Message::kTypeIp6, 0)) != NULL,
|
||||||
|
error = kThreadError_NoBufs);
|
||||||
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
message->SetLinkSecurityEnabled(aMessageInfo.mLinkSecurity);
|
||||||
message->SetPanId(aMessageInfo.mPanId);
|
message->SetPanId(aMessageInfo.mPanId);
|
||||||
|
|
||||||
@@ -1435,7 +1438,7 @@ exit:
|
|||||||
}
|
}
|
||||||
else if (message != NULL)
|
else if (message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -426,7 +426,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -479,7 +479,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -515,7 +515,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,7 +562,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -1134,7 +1134,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return kThreadError_None;
|
return kThreadError_None;
|
||||||
@@ -1182,7 +1182,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -1208,7 +1208,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -1292,7 +1292,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -2215,7 +2215,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -573,7 +573,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -758,7 +758,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -975,7 +975,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -1748,7 +1748,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return kThreadError_None;
|
return kThreadError_None;
|
||||||
@@ -2158,7 +2158,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return kThreadError_None;
|
return kThreadError_None;
|
||||||
@@ -2217,7 +2217,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return kThreadError_None;
|
return kThreadError_None;
|
||||||
@@ -2266,7 +2266,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
@@ -3164,7 +3164,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3231,7 +3231,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -640,7 +640,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|||||||
@@ -517,7 +517,7 @@ exit:
|
|||||||
|
|
||||||
if (error != kThreadError_None && message != NULL)
|
if (error != kThreadError_None && message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -478,7 +478,7 @@ exit:
|
|||||||
|
|
||||||
if (message != NULL)
|
if (message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorCode != kThreadError_None)
|
if (errorCode != kThreadError_None)
|
||||||
@@ -1076,7 +1076,7 @@ exit:
|
|||||||
|
|
||||||
if (message != NULL)
|
if (message != NULL)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
return errorCode;
|
return errorCode;
|
||||||
@@ -3103,7 +3103,7 @@ ThreadError NcpBase::SetPropertyHandler_STREAM_NET_INSECURE(uint8_t header, spin
|
|||||||
unsigned int frame_len(0);
|
unsigned int frame_len(0);
|
||||||
const uint8_t *meta_ptr(NULL);
|
const uint8_t *meta_ptr(NULL);
|
||||||
unsigned int meta_len(0);
|
unsigned int meta_len(0);
|
||||||
Message *message(Message::New(Message::kTypeIp6, 0));
|
Message *message(sIp6->mMessagePool.New(Message::kTypeIp6, 0));
|
||||||
|
|
||||||
if (message == NULL)
|
if (message == NULL)
|
||||||
{
|
{
|
||||||
@@ -3139,7 +3139,7 @@ ThreadError NcpBase::SetPropertyHandler_STREAM_NET_INSECURE(uint8_t header, spin
|
|||||||
}
|
}
|
||||||
else if (message)
|
else if (message)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorCode == kThreadError_None)
|
if (errorCode == kThreadError_None)
|
||||||
@@ -3174,7 +3174,7 @@ ThreadError NcpBase::SetPropertyHandler_STREAM_NET(uint8_t header, spinel_prop_k
|
|||||||
unsigned int frame_len(0);
|
unsigned int frame_len(0);
|
||||||
const uint8_t *meta_ptr(NULL);
|
const uint8_t *meta_ptr(NULL);
|
||||||
unsigned int meta_len(0);
|
unsigned int meta_len(0);
|
||||||
Message *message(Message::New(Message::kTypeIp6, 0));
|
Message *message(sIp6->mMessagePool.New(Message::kTypeIp6, 0));
|
||||||
|
|
||||||
if (message == NULL)
|
if (message == NULL)
|
||||||
{
|
{
|
||||||
@@ -3210,7 +3210,7 @@ ThreadError NcpBase::SetPropertyHandler_STREAM_NET(uint8_t header, spinel_prop_k
|
|||||||
}
|
}
|
||||||
else if (message)
|
else if (message)
|
||||||
{
|
{
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errorCode == kThreadError_None)
|
if (errorCode == kThreadError_None)
|
||||||
|
|||||||
@@ -78,13 +78,13 @@ void NcpFrameBuffer::Clear(void)
|
|||||||
while ((message = mWriteFrameMessageQueue.GetHead()) != NULL)
|
while ((message = mWriteFrameMessageQueue.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mWriteFrameMessageQueue.Dequeue(*message);
|
mWriteFrameMessageQueue.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((message = mMessageQueue.GetHead()) != NULL)
|
while ((message = mMessageQueue.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mMessageQueue.Dequeue(*message);
|
mMessageQueue.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wasEmpty)
|
if (!wasEmpty)
|
||||||
@@ -249,7 +249,7 @@ void NcpFrameBuffer::InFrameDiscard(void)
|
|||||||
while ((message = mWriteFrameMessageQueue.GetHead()) != NULL)
|
while ((message = mWriteFrameMessageQueue.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mWriteFrameMessageQueue.Dequeue(*message);
|
mWriteFrameMessageQueue.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -572,7 +572,7 @@ ThreadError NcpFrameBuffer::OutFrameRemove(void)
|
|||||||
if ((message = mMessageQueue.GetHead()) != NULL)
|
if ((message = mMessageQueue.GetHead()) != NULL)
|
||||||
{
|
{
|
||||||
mMessageQueue.Dequeue(*message);
|
mMessageQueue.Dequeue(*message);
|
||||||
Message::Free(*message);
|
message->Free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ void TestLowpanIphc(void)
|
|||||||
frame.GetSrcAddr(macSource);
|
frame.GetSrcAddr(macSource);
|
||||||
frame.GetDstAddr(macDest);
|
frame.GetDstAddr(macDest);
|
||||||
|
|
||||||
VerifyOrQuit((message = sIp6.NewMessage(0)) != NULL,
|
VerifyOrQuit((message = sIp6.mMessagePool.New(Message::kTypeIp6, 0)) != NULL,
|
||||||
"6lo: Ip6::NewMessage failed");
|
"6lo: Ip6::NewMessage failed");
|
||||||
|
|
||||||
// ===> Test Lowpan::Decompress
|
// ===> Test Lowpan::Decompress
|
||||||
@@ -154,7 +154,7 @@ void TestLowpanIphc(void)
|
|||||||
VerifyOrQuit(memcmp(frame.GetPayload(), result, static_cast<size_t>(compressBytes)) == 0,
|
VerifyOrQuit(memcmp(frame.GetPayload(), result, static_cast<size_t>(compressBytes)) == 0,
|
||||||
"6lo: Lowpan::Compress failed");
|
"6lo: Lowpan::Compress failed");
|
||||||
|
|
||||||
SuccessOrQuit(Message::Free(*message), "6lo: Message:Free failed");
|
SuccessOrQuit(message->Free(), "6lo: Message:Free failed");
|
||||||
printf("PASS\n\n");
|
printf("PASS\n\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -165,8 +165,6 @@ void TestLowpanIphc(void)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
Message::Init();
|
|
||||||
|
|
||||||
TestLowpanIphc();
|
TestLowpanIphc();
|
||||||
|
|
||||||
printf("All tests passed\n");
|
printf("All tests passed\n");
|
||||||
|
|||||||
@@ -42,18 +42,17 @@ extern "C" void otPlatDiagAlarmFired(void)
|
|||||||
|
|
||||||
void TestMessage(void)
|
void TestMessage(void)
|
||||||
{
|
{
|
||||||
|
Thread::MessagePool messagePool;
|
||||||
Thread::Message *message;
|
Thread::Message *message;
|
||||||
uint8_t writeBuffer[1024];
|
uint8_t writeBuffer[1024];
|
||||||
uint8_t readBuffer[1024];
|
uint8_t readBuffer[1024];
|
||||||
|
|
||||||
Thread::Message::Init();
|
|
||||||
|
|
||||||
for (unsigned i = 0; i < sizeof(writeBuffer); i++)
|
for (unsigned i = 0; i < sizeof(writeBuffer); i++)
|
||||||
{
|
{
|
||||||
writeBuffer[i] = static_cast<uint8_t>(random());
|
writeBuffer[i] = static_cast<uint8_t>(random());
|
||||||
}
|
}
|
||||||
|
|
||||||
VerifyOrQuit((message = Thread::Message::New(Thread::Message::kTypeIp6, 0)) != NULL,
|
VerifyOrQuit((message = messagePool.New(Thread::Message::kTypeIp6, 0)) != NULL,
|
||||||
"Message::New failed\n");
|
"Message::New failed\n");
|
||||||
SuccessOrQuit(message->SetLength(sizeof(writeBuffer)),
|
SuccessOrQuit(message->SetLength(sizeof(writeBuffer)),
|
||||||
"Message::SetLength failed\n");
|
"Message::SetLength failed\n");
|
||||||
@@ -65,7 +64,7 @@ void TestMessage(void)
|
|||||||
"Message compare failed\n");
|
"Message compare failed\n");
|
||||||
VerifyOrQuit(message->GetLength() == 1024,
|
VerifyOrQuit(message->GetLength() == 1024,
|
||||||
"Message::GetLength failed\n");
|
"Message::GetLength failed\n");
|
||||||
SuccessOrQuit(Thread::Message::Free(*message),
|
SuccessOrQuit(message->Free(),
|
||||||
"Message::Free failed\n");
|
"Message::Free failed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ static const uint8_t sHelloText[] = "Hello there!";
|
|||||||
static const uint8_t sMottoText[] = "Think good thoughts, say good words, do good deeds!";
|
static const uint8_t sMottoText[] = "Think good thoughts, say good words, do good deeds!";
|
||||||
static const uint8_t sMysteryText[] = "4871(\\):|(3$}{4|/4/2%14(\\)";
|
static const uint8_t sMysteryText[] = "4871(\\):|(3$}{4|/4/2%14(\\)";
|
||||||
|
|
||||||
|
static MessagePool sMessagePool;
|
||||||
|
|
||||||
struct CallbackContext
|
struct CallbackContext
|
||||||
{
|
{
|
||||||
@@ -63,12 +64,6 @@ struct CallbackContext
|
|||||||
uint16_t mNonEmptyCount; // Number of times BufferNonEmptyCallback is invoked.
|
uint16_t mNonEmptyCount; // Number of times BufferNonEmptyCallback is invoked.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initialize the test
|
|
||||||
void InitTest(void)
|
|
||||||
{
|
|
||||||
Message::Init();
|
|
||||||
}
|
|
||||||
|
|
||||||
void BufferDidGetEmptyCallback(void *aContext, NcpFrameBuffer *aNcpBuffer)
|
void BufferDidGetEmptyCallback(void *aContext, NcpFrameBuffer *aNcpBuffer)
|
||||||
{
|
{
|
||||||
CallbackContext *callbackContext = reinterpret_cast<CallbackContext *>(aContext);
|
CallbackContext *callbackContext = reinterpret_cast<CallbackContext *>(aContext);
|
||||||
@@ -147,7 +142,7 @@ void WriteTestFrame1(NcpFrameBuffer &aNcpBuffer)
|
|||||||
{
|
{
|
||||||
Message *message;
|
Message *message;
|
||||||
|
|
||||||
message = Message::New(Message::kTypeIp6, 0);
|
message = sMessagePool.New(Message::kTypeIp6, 0);
|
||||||
VerifyOrQuit(message != NULL, "Null Message");
|
VerifyOrQuit(message != NULL, "Null Message");
|
||||||
SuccessOrQuit(message->SetLength(sizeof(sMottoText)), "Could not set the length of message.");
|
SuccessOrQuit(message->SetLength(sizeof(sMottoText)), "Could not set the length of message.");
|
||||||
message->Write(0, sizeof(sMottoText), sMottoText);
|
message->Write(0, sizeof(sMottoText), sMottoText);
|
||||||
@@ -182,12 +177,12 @@ void WriteTestFrame2(NcpFrameBuffer &aNcpBuffer)
|
|||||||
Message *message1;
|
Message *message1;
|
||||||
Message *message2;
|
Message *message2;
|
||||||
|
|
||||||
message1 = Message::New(Message::kTypeIp6, 0);
|
message1 = sMessagePool.New(Message::kTypeIp6, 0);
|
||||||
VerifyOrQuit(message1 != NULL, "Null Message");
|
VerifyOrQuit(message1 != NULL, "Null Message");
|
||||||
SuccessOrQuit(message1->SetLength(sizeof(sMysteryText)), "Could not set the length of message.");
|
SuccessOrQuit(message1->SetLength(sizeof(sMysteryText)), "Could not set the length of message.");
|
||||||
message1->Write(0, sizeof(sMysteryText), sMysteryText);
|
message1->Write(0, sizeof(sMysteryText), sMysteryText);
|
||||||
|
|
||||||
message2 = Message::New(Message::kTypeIp6, 0);
|
message2 = sMessagePool.New(Message::kTypeIp6, 0);
|
||||||
VerifyOrQuit(message2 != NULL, "Null Message");
|
VerifyOrQuit(message2 != NULL, "Null Message");
|
||||||
SuccessOrQuit(message2->SetLength(sizeof(sHelloText)), "Could not set the length of message.");
|
SuccessOrQuit(message2->SetLength(sizeof(sHelloText)), "Could not set the length of message.");
|
||||||
message2->Write(0, sizeof(sHelloText), sHelloText);
|
message2->Write(0, sizeof(sHelloText), sHelloText);
|
||||||
@@ -219,7 +214,7 @@ void WriteTestFrame3(NcpFrameBuffer &aNcpBuffer)
|
|||||||
{
|
{
|
||||||
Message *message1;
|
Message *message1;
|
||||||
|
|
||||||
message1 = Message::New(Message::kTypeIp6, 0);
|
message1 = sMessagePool.New(Message::kTypeIp6, 0);
|
||||||
VerifyOrQuit(message1 != NULL, "Null Message");
|
VerifyOrQuit(message1 != NULL, "Null Message");
|
||||||
|
|
||||||
// An empty message with no content.
|
// An empty message with no content.
|
||||||
@@ -344,7 +339,7 @@ void TestNcpFrameBuffer(void)
|
|||||||
ncpBuffer.InFrameBegin();
|
ncpBuffer.InFrameBegin();
|
||||||
ncpBuffer.InFrameFeedData(sHelloText, sizeof(sHelloText));
|
ncpBuffer.InFrameFeedData(sHelloText, sizeof(sHelloText));
|
||||||
|
|
||||||
message = Message::New(Message::kTypeIp6, 0);
|
message = sMessagePool.New(Message::kTypeIp6, 0);
|
||||||
VerifyOrQuit(message != NULL, "Null Message");
|
VerifyOrQuit(message != NULL, "Null Message");
|
||||||
SuccessOrQuit(message->SetLength(sizeof(sMysteryText)), "Could not set the length of message.");
|
SuccessOrQuit(message->SetLength(sizeof(sMysteryText)), "Could not set the length of message.");
|
||||||
message->Write(0, sizeof(sMysteryText), sMysteryText);
|
message->Write(0, sizeof(sMysteryText), sMysteryText);
|
||||||
@@ -475,7 +470,6 @@ void TestNcpFrameBuffer(void)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
Thread::InitTest();
|
|
||||||
Thread::TestNcpFrameBuffer();
|
Thread::TestNcpFrameBuffer();
|
||||||
printf("\nAll tests passed.\n");
|
printf("\nAll tests passed.\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user