From 9586cfb700c8d0a0af513b1da8db2e169f8e0185 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 1 Dec 2016 08:51:55 -0800 Subject: [PATCH] Initialize all member variables in constructors. (#1026) --- src/cli/cli.cpp | 2 ++ src/cli/cli_console.cpp | 7 +++--- src/cli/cli_udp.cpp | 2 ++ src/ncp/flen.cpp | 15 +++++++------ src/ncp/hdlc.cpp | 22 ++++++++++++------- src/ncp/hdlc.hpp | 6 ++++++ src/ncp/ncp_base.cpp | 48 ++++++++++++++++++++++------------------- src/ncp/ncp_uart.cpp | 6 ++++-- 8 files changed, 66 insertions(+), 42 deletions(-) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 1df6d57d2..69cefd22b 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -133,12 +133,14 @@ const struct Command Interpreter::sCommands[] = }; Interpreter::Interpreter(otInstance *aInstance): + sServer(NULL), sLength(8), sCount(1), sInterval(1000), sPingTimer(aInstance->mIp6.mTimerScheduler, &Interpreter::s_HandlePingTimer, this), mInstance(aInstance) { + memset(mSlaacAddresses, 0, sizeof(mSlaacAddresses)); mInstance->mIp6.mIcmp.SetEchoReplyHandler(&s_HandleEchoResponse, this); otSetStateChangedCallback(mInstance, &Interpreter::s_HandleNetifStateChanged, this); } diff --git a/src/cli/cli_console.cpp b/src/cli/cli_console.cpp index af3d24dc9..ddf062bb7 100644 --- a/src/cli/cli_console.cpp +++ b/src/cli/cli_console.cpp @@ -59,9 +59,10 @@ extern "C" void otCliConsoleInputLine(char *aBuf, uint16_t aBufLength) sServer->ReceiveTask(aBuf, aBufLength); } -Console::Console(otInstance *aInstance) - : mCallback(NULL), - mInterpreter(aInstance) +Console::Console(otInstance *aInstance): + mCallback(NULL), + mContext(NULL), + mInterpreter(aInstance) { } diff --git a/src/cli/cli_udp.cpp b/src/cli/cli_udp.cpp index 4fe114d8e..0ad9a0615 100644 --- a/src/cli/cli_udp.cpp +++ b/src/cli/cli_udp.cpp @@ -46,6 +46,8 @@ Udp::Udp(otInstance *aInstance, Interpreter *aInterpreter): mInstance(aInstance), mInterpreter(aInterpreter) { + memset(&mSocket, 0, sizeof(mSocket)); + memset(&mPeer, 0, sizeof(mPeer)); } ThreadError Udp::Start(void) diff --git a/src/ncp/flen.cpp b/src/ncp/flen.cpp index ffb256f40..6ce7f4f22 100644 --- a/src/ncp/flen.cpp +++ b/src/ncp/flen.cpp @@ -102,14 +102,15 @@ exit: } -Decoder::Decoder(uint8_t *aOutBuf, uint16_t aOutLength, FrameHandler aFrameHandler, void *aContext) +Decoder::Decoder(uint8_t *aOutBuf, uint16_t aOutLength, FrameHandler aFrameHandler, void *aContext): + mState(kStateNeedFlag), + mFrameHandler(aFrameHandler), + mContext(aContext), + mOutBuf(aOutBuf), + mOutOffset(0), + mOutLength(aOutLength), + mReadLength(0) { - mState = kStateNeedFlag; - mFrameHandler = aFrameHandler; - mContext = aContext; - mOutBuf = aOutBuf; - mOutOffset = 0; - mOutLength = aOutLength; } void Decoder::Decode(const uint8_t *aInBuf, uint16_t aInLength) diff --git a/src/ncp/hdlc.cpp b/src/ncp/hdlc.cpp index 0887031c7..4a38ae240 100644 --- a/src/ncp/hdlc.cpp +++ b/src/ncp/hdlc.cpp @@ -128,6 +128,11 @@ bool Encoder::BufferWriteIterator::CanWrite(uint16_t aWriteLength) const return (mRemainingLength >= aWriteLength); } +Encoder::Encoder(void): + mFcs(0) +{ +} + ThreadError Encoder::Init(BufferWriteIterator &aIterator) { mFcs = kInitFcs; @@ -202,15 +207,16 @@ exit: return error; } -Decoder::Decoder(uint8_t *aOutBuf, uint16_t aOutLength, FrameHandler aFrameHandler, ErrorHandler aErrorHandler, void *aContext) +Decoder::Decoder(uint8_t *aOutBuf, uint16_t aOutLength, FrameHandler aFrameHandler, ErrorHandler aErrorHandler, void *aContext): + mState(kStateNoSync), + mFrameHandler(aFrameHandler), + mErrorHandler(aErrorHandler), + mContext(aContext), + mOutBuf(aOutBuf), + mOutOffset(0), + mOutLength(aOutLength), + mFcs(0) { - mState = kStateNoSync; - mFrameHandler = aFrameHandler; - mErrorHandler = aErrorHandler; - mContext = aContext; - mOutBuf = aOutBuf; - mOutOffset = 0; - mOutLength = aOutLength; } void Decoder::Decode(const uint8_t *aInBuf, uint16_t aInLength) diff --git a/src/ncp/hdlc.hpp b/src/ncp/hdlc.hpp index 4585db01c..a2cd9974f 100644 --- a/src/ncp/hdlc.hpp +++ b/src/ncp/hdlc.hpp @@ -92,6 +92,12 @@ public: uint16_t mRemainingLength; ///< Number of remaining bytes available to write. }; + /** + * This constructor initializes the object. + * + */ + Encoder(void); + /** * This method begins an HDLC frame and puts the initial bytes into a buffer at the given @p aIterator. * diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index 6d7cf3a8e..d8177f1c8 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -459,31 +459,35 @@ static uint8_t BorderRouterConfigToFlagByte(const otBorderRouterConfig &config) NcpBase::NcpBase(otInstance *aInstance): mInstance(aInstance), - mUpdateChangedPropsTask(aInstance->mIp6.mTaskletScheduler, &NcpBase::UpdateChangedProps, this) + mLastStatus(SPINEL_STATUS_OK), + mSupportedChannelMask(kPhySupportedChannelMask), + mChannelMask(mSupportedChannelMask), + mScanPeriod(200), // ms + mUpdateChangedPropsTask(aInstance->mIp6.mTaskletScheduler, &NcpBase::UpdateChangedProps, this), + mChangedFlags(NCP_PLAT_RESET_REASON), + mShouldSignalEndOfScan(false), +#if OPENTHREAD_ENABLE_JAM_DETECTION + mShouldSignalJamStateChange(false), +#endif + mDroppedReplyTid(0), + mDroppedReplyTidBitSet(0), + mAllowLocalNetworkDataChange(false), + mRequireJoinExistingNetwork(false), + mIsRawStreamEnabled(false), + + mFramingErrorCounter(0), + mRxSpinelFrameCounter(0), + mTxSpinelFrameCounter(0), + mInboundSecureIpFrameCounter(0), + mInboundInsecureIpFrameCounter(0), + mOutboundSecureIpFrameCounter(0), + mOutboundInsecureIpFrameCounter(0), + mDroppedOutboundIpFrameCounter(0), + mDroppedInboundIpFrameCounter(0) { assert(mInstance != NULL); - mSupportedChannelMask = kPhySupportedChannelMask; - mChannelMask = mSupportedChannelMask; - mScanPeriod = 200; // ms - mShouldSignalEndOfScan = false; -#if OPENTHREAD_ENABLE_JAM_DETECTION - mShouldSignalJamStateChange = false; -#endif - sNcpContext = this; - mChangedFlags = NCP_PLAT_RESET_REASON; - mAllowLocalNetworkDataChange = false; - mRequireJoinExistingNetwork = false; - mIsRawStreamEnabled = false; - mFramingErrorCounter = 0; - mRxSpinelFrameCounter = 0; - mTxSpinelFrameCounter = 0; - mInboundSecureIpFrameCounter = 0; - mInboundInsecureIpFrameCounter = 0; - mOutboundSecureIpFrameCounter = 0; - mOutboundInsecureIpFrameCounter = 0; - mDroppedOutboundIpFrameCounter = 0; - mDroppedInboundIpFrameCounter = 0; + sNcpContext = NULL; otSetStateChangedCallback(mInstance, &NcpBase::HandleNetifStateChanged, this); otSetReceiveIp6DatagramCallback(mInstance, &NcpBase::HandleDatagramFromStack, this); diff --git a/src/ncp/ncp_uart.cpp b/src/ncp/ncp_uart.cpp index 3100e9ce7..07022a695 100644 --- a/src/ncp/ncp_uart.cpp +++ b/src/ncp/ncp_uart.cpp @@ -90,10 +90,10 @@ NcpUart::NcpUart(otInstance *aInstance): mFrameDecoder(mRxBuffer, sizeof(mRxBuffer), &NcpUart::HandleFrame, &NcpUart::HandleError, this), mUartBuffer(), mTxFrameBuffer(mTxBuffer, sizeof(mTxBuffer)), + mState(kStartingFrame), + mByte(0), mUartSendTask(aInstance->mIp6.mTaskletScheduler, EncodeAndSendToUart, this) { - mState = kStartingFrame; - mTxFrameBuffer.SetCallbacks(NULL, TxFrameBufferHasData, this); } @@ -175,6 +175,8 @@ void NcpUart::EncodeAndSendToUart(void) mState = kFinalizingFrame; + // fall through + case kFinalizingFrame: SuccessOrExit(mFrameEncoder.Finalize(mUartBuffer));