diff --git a/src/core/common/trickle_timer.cpp b/src/core/common/trickle_timer.cpp index 2fbde46fd..973ed1c68 100644 --- a/src/core/common/trickle_timer.cpp +++ b/src/core/common/trickle_timer.cpp @@ -48,7 +48,13 @@ TrickleTimer::TrickleTimer( mTimer(aScheduler, HandleTimerFired, this), #ifdef ENABLE_TRICKLE_TIMER_SUPPRESSION_SUPPORT k(aRedundancyConstant), + c(0), #endif + Imin(0), + Imax(0), + mMode(kModeNormal), + I(0), + t(0), mPhase(kPhaseDormant), mTransmitHandler(aTransmitHandler), mIntervalExpiredHandler(aIntervalExpiredHandler), diff --git a/src/core/common/trickle_timer.hpp b/src/core/common/trickle_timer.hpp index d7a6bee9a..9c080e048 100644 --- a/src/core/common/trickle_timer.hpp +++ b/src/core/common/trickle_timer.hpp @@ -154,6 +154,9 @@ private: #ifdef ENABLE_TRICKLE_TIMER_SUPPRESSION_SUPPORT // Redundancy constant const uint32_t k; + + // A counter, keeping track of the number of "consistent" transmissions received + uint32_t c; #endif // Minimum interval size @@ -167,10 +170,7 @@ private: uint32_t I; // The time (in milliseconds) into the interval at which we should transmit uint32_t t; -#ifdef ENABLE_TRICKLE_TIMER_SUPPRESSION_SUPPORT - // A counter, keeping track of the number of "consistent" transmissions received - uint32_t c; -#endif + // The current trickle phase for the timer Phase mPhase; diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 12a68f5ad..fd347aaf1 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -893,7 +893,9 @@ exit: PendingDatasetBase::PendingDatasetBase(ThreadNetif &aThreadNetif): DatasetManager(aThreadNetif, Tlv::kPendingTimestamp, OPENTHREAD_URI_PENDING_SET, OPENTHREAD_URI_PENDING_GET), - mTimer(aThreadNetif.GetIp6().mTimerScheduler, &PendingDatasetBase::HandleTimer, this) + mTimer(aThreadNetif.GetIp6().mTimerScheduler, &PendingDatasetBase::HandleTimer, this), + mLocalTime(0), + mNetworkTime(0) { } diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index 21151229c..f2154ca09 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -61,6 +61,7 @@ JoinerRouter::JoinerRouter(ThreadNetif &aNetif): mRelayTransmit(OPENTHREAD_URI_RELAY_TX, &JoinerRouter::HandleRelayTransmit, this), mCoapClient(aNetif.GetCoapClient()), mNetif(aNetif), + mJoinerUdpPort(0), mIsJoinerPortConfigured(false) { mSocket.GetSockName().mPort = OPENTHREAD_CONFIG_JOINER_UDP_PORT; diff --git a/src/core/net/netif.hpp b/src/core/net/netif.hpp index b9ce732c0..7d5cc4504 100644 --- a/src/core/net/netif.hpp +++ b/src/core/net/netif.hpp @@ -178,6 +178,16 @@ class NetifCallback friend class Netif; public: + /** + * This constructor initializes the object. + * + */ + NetifCallback(void): + mCallback(NULL), + mContext(NULL), + mNext(NULL) { + } + /** * This method sets the callback information. * diff --git a/src/core/openthread.cpp b/src/core/openthread.cpp index f98702b8f..f4efc5b04 100644 --- a/src/core/openthread.cpp +++ b/src/core/openthread.cpp @@ -77,6 +77,8 @@ otInstance::otInstance(void) : mReceiveIp6DatagramCallbackContext(NULL), mActiveScanCallback(NULL), mActiveScanCallbackContext(NULL), + mEnergyScanCallback(NULL), + mEnergyScanCallbackContext(NULL), mThreadNetif(mIp6) #if OPENTHREAD_ENABLE_APPLICATION_COAP , mApplicationCoapServer(mIp6.mUdp, OT_DEFAULT_COAP_PORT) diff --git a/src/core/thread/announce_begin_server.cpp b/src/core/thread/announce_begin_server.cpp index 76895365b..2005fa1ed 100644 --- a/src/core/thread/announce_begin_server.cpp +++ b/src/core/thread/announce_begin_server.cpp @@ -54,6 +54,10 @@ using Thread::Encoding::BigEndian::HostSwap32; namespace Thread { AnnounceBeginServer::AnnounceBeginServer(ThreadNetif &aThreadNetif) : + mChannelMask(0), + mPeriod(0), + mCount(0), + mChannel(0), mTimer(aThreadNetif.GetIp6().mTimerScheduler, &AnnounceBeginServer::HandleTimer, this), mAnnounceBegin(OPENTHREAD_URI_ANNOUNCE_BEGIN, &AnnounceBeginServer::HandleRequest, this), mCoapServer(aThreadNetif.GetCoapServer()), diff --git a/src/core/thread/energy_scan_server.cpp b/src/core/thread/energy_scan_server.cpp index abab0d882..84967b431 100644 --- a/src/core/thread/energy_scan_server.cpp +++ b/src/core/thread/energy_scan_server.cpp @@ -46,7 +46,13 @@ namespace Thread { EnergyScanServer::EnergyScanServer(ThreadNetif &aThreadNetif) : + mChannelMask(0), + mChannelMaskCurrent(0), + mPeriod(0), + mScanDuration(0), + mCount(0), mActive(false), + mScanResultsLength(0), mTimer(aThreadNetif.GetIp6().mTimerScheduler, &EnergyScanServer::HandleTimer, this), mEnergyScan(OPENTHREAD_URI_ENERGY_SCAN, &EnergyScanServer::HandleRequest, this), mCoapServer(aThreadNetif.GetCoapServer()), diff --git a/src/core/thread/key_manager.cpp b/src/core/thread/key_manager.cpp index d81edd9ef..bb6d2a627 100644 --- a/src/core/thread/key_manager.cpp +++ b/src/core/thread/key_manager.cpp @@ -47,20 +47,19 @@ static const uint8_t kThreadString[] = KeyManager::KeyManager(ThreadNetif &aThreadNetif): mNetif(aThreadNetif), - mKeyRotationTimer(aThreadNetif.GetIp6().mTimerScheduler, &KeyManager::HandleKeyRotationTimer, this) + mMasterKeyLength(0), + mKeySequence(0), + mMacFrameCounter(0), + mMleFrameCounter(0), + mStoredMacFrameCounter(0), + mStoredMleFrameCounter(0), + mKeyRotationTime(kDefaultKeyRotationTime), + mKeySwitchGuardTime(kDefaultKeySwitchGuardTime), + mKeySwitchGuardEnabled(false), + mKeyRotationTimer(aThreadNetif.GetIp6().mTimerScheduler, &KeyManager::HandleKeyRotationTimer, this), + mKekFrameCounter(0), + mSecurityPolicyFlags(0xff) { - mMasterKeyLength = 0; - mKeySequence = 0; - mMacFrameCounter = 0; - mMleFrameCounter = 0; - mStoredMleFrameCounter = 0; - mStoredMacFrameCounter = 0; - - mKeyRotationTime = kDefaultKeyRotationTime; - mKeySwitchGuardTime = kDefaultKeySwitchGuardTime; - mKeySwitchGuardEnabled = false; - - mSecurityPolicyFlags = 0xff; } void KeyManager::Start(void) diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index 042f2c707..783ff8cb9 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -59,30 +59,33 @@ MeshForwarder::MeshForwarder(ThreadNetif &aThreadNetif): mDiscoverTimer(aThreadNetif.GetIp6().mTimerScheduler, &MeshForwarder::HandleDiscoverTimer, this), mPollTimer(aThreadNetif.GetIp6().mTimerScheduler, &MeshForwarder::HandlePollTimer, this), mReassemblyTimer(aThreadNetif.GetIp6().mTimerScheduler, &MeshForwarder::HandleReassemblyTimer, this), + mMessageNextOffset(0), + mPollPeriod(0), + mAssignPollPeriod(0), + mSendMessage(NULL), + mMeshSource(Mac::kShortAddrInvalid), + mMeshDest(Mac::kShortAddrInvalid), + mAddMeshHeader(false), + mSendBusy(false), mScheduleTransmissionTask(aThreadNetif.GetIp6().mTaskletScheduler, ScheduleTransmissionTask, this), + mEnabled(false), + mScanChannels(0), + mScanDuration(0), + mScanChannel(0), + mRestoreChannel(0), + mScanning(false), mNetif(aThreadNetif), mAddressResolver(aThreadNetif.GetAddressResolver()), mLowpan(aThreadNetif.GetLowpan()), mMac(aThreadNetif.GetMac()), mMle(aThreadNetif.GetMle()), - mNetworkData(aThreadNetif.GetNetworkDataLeader()) + mNetworkData(aThreadNetif.GetNetworkDataLeader()), + mSrcMatchEnabled(false) { mFragTag = static_cast(otPlatRandomGet()); - mPollPeriod = 0; - mAssignPollPeriod = 0; - mSendMessage = NULL; - mSendBusy = false; - mEnabled = false; - - mMessageNextOffset = 0; + mMac.RegisterReceiver(mMacReceiver); mMacSource.mLength = 0; mMacDest.mLength = 0; - mMeshSource = Mac::kShortAddrInvalid; - mMeshDest = Mac::kShortAddrInvalid; - mAddMeshHeader = false; - mSrcMatchEnabled = false; - - mMac.RegisterReceiver(mMacReceiver); } ThreadError MeshForwarder::Start() diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 506cc7391..6fe3083fb 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -66,25 +66,38 @@ Mle::Mle(ThreadNetif &aThreadNetif) : mMleRouter(aThreadNetif.GetMle()), mNetworkData(aThreadNetif.GetNetworkDataLeader()), mJoinerRouter(aThreadNetif.GetJoinerRouter()), - mParentRequestTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mle::HandleParentRequestTimer, this), - mSocket(aThreadNetif.GetIp6().mUdp), - mSendChildUpdateRequest(aThreadNetif.GetIp6().mTaskletScheduler, &Mle::HandleSendChildUpdateRequest, this) -{ - mDeviceState = kDeviceStateDisabled; - mDeviceMode = ModeTlv::kModeRxOnWhenIdle | ModeTlv::kModeSecureDataRequest | ModeTlv::kModeFFD | - ModeTlv::kModeFullNetworkData; - mParentRequestState = kParentIdle; - mParentRequestMode = kMleAttachAnyPartition; - mParentLinkQuality = 0; - mParentPriority = 0; - mParentLinkQuality3 = 0; - mParentLinkQuality2 = 0; - mParentLinkQuality1 = 0; - mRetrieveNewNetworkData = false; - mTimeout = kMleEndDeviceTimeout; - mReattachState = kReattachStop; + mRetrieveNewNetworkData(false), + mDeviceState(kDeviceStateDisabled), + mDeviceMode(ModeTlv::kModeRxOnWhenIdle | ModeTlv::kModeSecureDataRequest | ModeTlv::kModeFFD | + ModeTlv::kModeFullNetworkData), + isAssignLinkQuality(false), + mAssignLinkQuality(0), + mAssignLinkMargin(0), + mParentRequestState(kParentIdle), + mReattachState(kReattachStop), + mParentRequestTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mle::HandleParentRequestTimer, this), + mRouterSelectionJitter(kRouterSelectionJitter), + mRouterSelectionJitterTimeout(0), + mParentRequestMode(kMleAttachAnyPartition), + mParentLinkQuality(0), + mParentPriority(0), + mParentLinkQuality3(0), + mParentLinkQuality2(0), + mParentLinkQuality1(0), + mParentIsSingleton(false), + mSocket(aThreadNetif.GetIp6().mUdp), + mTimeout(kMleEndDeviceTimeout), + mSendChildUpdateRequest(aThreadNetif.GetIp6().mTaskletScheduler, &Mle::HandleSendChildUpdateRequest, this), + mDiscoverHandler(NULL), + mDiscoverContext(NULL), + mIsDiscoverInProgress(false), + mAnnounceChannel(kPhyMinChannel), + mPreviousChannel(0), + mPreviousPanId(Mac::kPanIdBroadcast) +{ memset(&mLeaderData, 0, sizeof(mLeaderData)); + memset(&mParentLeaderData, 0, sizeof(mParentLeaderData)); memset(&mParent, 0, sizeof(mParent)); memset(&mChildIdRequest, 0, sizeof(mChildIdRequest)); memset(&mLinkLocal64, 0, sizeof(mLinkLocal64)); @@ -92,9 +105,9 @@ Mle::Mle(ThreadNetif &aThreadNetif) : memset(&mMeshLocal16, 0, sizeof(mMeshLocal16)); memset(&mLinkLocalAllThreadNodes, 0, sizeof(mLinkLocalAllThreadNodes)); memset(&mRealmLocalAllThreadNodes, 0, sizeof(mRealmLocalAllThreadNodes)); + memset(&mLeaderAloc, 0, sizeof(mLeaderAloc)); // link-local 64 - memset(&mLinkLocal64, 0, sizeof(mLinkLocal64)); mLinkLocal64.GetAddress().mFields.m16[0] = HostSwap16(0xfe80); mLinkLocal64.GetAddress().SetIid(*mMac.GetExtAddress()); mLinkLocal64.mPrefixLength = 64; @@ -103,7 +116,6 @@ Mle::Mle(ThreadNetif &aThreadNetif) : mNetif.AddUnicastAddress(mLinkLocal64); // Leader Aloc - memset(&mLeaderAloc, 0, sizeof(mLeaderAloc)); mLeaderAloc.mPrefixLength = 128; mLeaderAloc.mPreferredLifetime = 0xffffffff; mLeaderAloc.mValidLifetime = 0xffffffff; @@ -157,18 +169,7 @@ Mle::Mle(ThreadNetif &aThreadNetif) : mNetifCallback.Set(&Mle::HandleNetifStateChanged, this); mNetif.RegisterCallback(mNetifCallback); - isAssignLinkQuality = false; - mAssignLinkQuality = 0; - mAssignLinkMargin = 0; memset(&mAddr64, 0, sizeof(mAddr64)); - - mIsDiscoverInProgress = false; - - mRouterSelectionJitterTimeout = 0; - mRouterSelectionJitter = kRouterSelectionJitter; - - mAnnounceChannel = kPhyMinChannel; - mPreviousPanId = Mac::kPanIdBroadcast; } ThreadError Mle::Enable(void) diff --git a/src/core/thread/panid_query_server.cpp b/src/core/thread/panid_query_server.cpp index 994d46d5a..59e4b05e5 100644 --- a/src/core/thread/panid_query_server.cpp +++ b/src/core/thread/panid_query_server.cpp @@ -46,6 +46,8 @@ namespace Thread { PanIdQueryServer::PanIdQueryServer(ThreadNetif &aThreadNetif) : + mChannelMask(0), + mPanId(Mac::kPanIdBroadcast), mTimer(aThreadNetif.GetIp6().mTimerScheduler, &PanIdQueryServer::HandleTimer, this), mPanIdQuery(OPENTHREAD_URI_PANID_QUERY, &PanIdQueryServer::HandleQuery, this), mCoapServer(aThreadNetif.GetCoapServer()),