Add spinel property and its handler to get the msg buffer counter info (#944)

This commit is contained in:
Abtin Keshavarzian
2016-11-08 12:20:22 -08:00
committed by Jonathan Hui
parent 8d55f4f823
commit ea3936a198
3 changed files with 62 additions and 0 deletions
+38
View File
@@ -197,6 +197,8 @@ const NcpBase::GetPropertyHandlerEntry NcpBase::mGetPropertyHandlerTable[] =
{ SPINEL_PROP_CNTR_RX_SPINEL_TOTAL, &NcpBase::GetPropertyHandler_NCP_CNTR },
{ SPINEL_PROP_CNTR_RX_SPINEL_ERR, &NcpBase::GetPropertyHandler_NCP_CNTR },
{ SPINEL_PROP_MSG_BUFFER_COUNTERS, &NcpBase::GetPropertyHandler_MSG_BUFFER_COUNTERS },
#if OPENTHREAD_ENABLE_LEGACY
{ SPINEL_PROP_NEST_LEGACY_ULA_PREFIX, &NcpBase::GetPropertyHandler_NEST_LEGACY_ULA_PREFIX },
#endif
@@ -2572,6 +2574,42 @@ bail:
return errorCode;
}
ThreadError NcpBase::GetPropertyHandler_MSG_BUFFER_COUNTERS(uint8_t header, spinel_prop_key_t key)
{
ThreadError errorCode = kThreadError_None;
otBufferInfo bufferInfo;
otGetMessageBufferInfo(mInstance, &bufferInfo);
SuccessOrExit(errorCode = OutboundFrameBegin());
SuccessOrExit(errorCode = OutboundFrameFeedPacked("Cii", header, SPINEL_CMD_PROP_VALUE_IS, key));
SuccessOrExit(errorCode = OutboundFrameFeedPacked("T(SSSSSSSSSSSSSSSS)",
bufferInfo.mTotalBuffers,
bufferInfo.mFreeBuffers,
bufferInfo.m6loSendMessages,
bufferInfo.m6loSendBuffers,
bufferInfo.m6loReassemblyMessages,
bufferInfo.m6loReassemblyBuffers,
bufferInfo.mIp6Messages,
bufferInfo.mIp6Buffers,
bufferInfo.mMplMessages,
bufferInfo.mMplBuffers,
bufferInfo.mMleMessages,
bufferInfo.mMleBuffers,
bufferInfo.mArpMessages,
bufferInfo.mArpBuffers,
bufferInfo.mCoapClientMessages,
bufferInfo.mCoapClientBuffers
));
SuccessOrExit(errorCode = OutboundFrameSend());
exit:
return errorCode;
}
ThreadError NcpBase::GetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_prop_key_t key)
{
otMacWhitelistEntry entry;
+1
View File
@@ -331,6 +331,7 @@ private:
ThreadError GetPropertyHandler_THREAD_ROUTER_ROLE_ENABLED(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_MAC_CNTR(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_NCP_CNTR(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_MSG_BUFFER_COUNTERS(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_MAC_WHITELIST(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_MAC_WHITELIST_ENABLED(uint8_t header, spinel_prop_key_t key);
ThreadError GetPropertyHandler_THREAD_MODE(uint8_t header, spinel_prop_key_t key);
+23
View File
@@ -829,6 +829,29 @@ typedef enum
/** Format: `L` (Read-only) */
SPINEL_PROP_CNTR_RX_SPINEL_ERR = SPINEL_PROP_CNTR__BEGIN + 302,
/// The message buffer counter info
/** Format: `T(SSSSSSSSSSSSSSSS)` (Read-only)
* `T(`
* `S`, (TotalBuffers) The number of buffers in the pool.
* `S`, (FreeBuffers) The number of free message buffers.
* `S`, (6loSendMessages) The number of messages in the 6lo send queue.
* `S`, (6loSendBuffers) The number of buffers in the 6lo send queue.
* `S`, (6loReassemblyMessages) The number of messages in the 6LoWPAN reassembly queue.
* `S`, (6loReassemblyBuffers) The number of buffers in the 6LoWPAN reassembly queue.
* `S`, (Ip6Messages) The number of messages in the IPv6 send queue.
* `S`, (Ip6Buffers) The number of buffers in the IPv6 send queue.
* `S`, (MplMessages) The number of messages in the MPL send queue.
* `S`, (MplBuffers) The number of buffers in the MPL send queue.
* `S`, (MleMessages) The number of messages in the MLE send queue.
* `S`, (MleBuffers) The number of buffers in the MLE send queue.
* `S`, (ArpMessages) The number of messages in the ARP send queue.
* `S`, (ArpBuffers) The number of buffers in the ARP send queue.
* `S`, (CoapClientMessages) The number of messages in the CoAP client send queue.
* `S`, (CoapClientBuffers) The number of buffers in the CoAP client send queue.
* `)`
*/
SPINEL_PROP_MSG_BUFFER_COUNTERS = SPINEL_PROP_CNTR__BEGIN + 400,
SPINEL_PROP_CNTR__END = 2048,
SPINEL_PROP_NEST__BEGIN = 15296,