MCPcopy Create free account
hub / github.com/OpenZWave/open-zwave / SendQueryStageComplete

Method SendQueryStageComplete

cpp/src/Driver.cpp:963–1001  ·  view source on GitHub ↗

----------------------------------------------------------------------------- Queue an item on the query queue that indicates a stage is complete -----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

961// Queue an item on the query queue that indicates a stage is complete
962//-----------------------------------------------------------------------------
963void Driver::SendQueryStageComplete
964(
965 uint8 const _nodeId,
966 Node::QueryStage const _stage
967)
968{
969 MsgQueueItem item;
970 item.m_command = MsgQueueCmd_QueryStageComplete;
971 item.m_nodeId = _nodeId;
972 item.m_queryStage = _stage;
973 item.m_retry = false;
974
975 LockGuard LG(m_nodeMutex);
976 if( Node* node = GetNode( _nodeId ) )
977 {
978 if( !node->IsListeningDevice() )
979 {
980 if( WakeUp* wakeUp = static_cast<WakeUp*>( node->GetCommandClass( WakeUp::StaticGetCommandClassId() ) ) )
981 {
982 if( !wakeUp->IsAwake() )
983 {
984 // If the message is for a sleeping node, we queue it in the node itself.
985 Log::Write( LogLevel_Info, "" );
986 Log::Write( LogLevel_Detail, node->GetNodeId(), "Queuing (%s) Query Stage Complete (%s)", c_sendQueueNames[MsgQueue_WakeUp], node->GetQueryStageName( _stage ).c_str() );
987 wakeUp->QueueMsg( item );
988 return;
989 }
990 }
991 }
992
993 // Non-sleeping node
994 Log::Write( LogLevel_Detail, node->GetNodeId(), "Queuing (%s) Query Stage Complete (%s)", c_sendQueueNames[MsgQueue_Query], node->GetQueryStageName( _stage ).c_str() );
995 m_sendMutex->Lock();
996 m_msgQueue[MsgQueue_Query].push_back( item );
997 m_queueEvent[MsgQueue_Query]->Set();
998 m_sendMutex->Unlock();
999
1000 }
1001}
1002
1003//-----------------------------------------------------------------------------
1004// <Driver::RetryQueryStageComplete>

Callers 2

AdvanceQueriesMethod · 0.80
SendPendingMethod · 0.80

Calls 11

WriteFunction · 0.85
IsListeningDeviceMethod · 0.80
GetCommandClassMethod · 0.80
IsAwakeMethod · 0.80
GetNodeIdMethod · 0.80
GetQueryStageNameMethod · 0.80
QueueMsgMethod · 0.80
c_strMethod · 0.45
LockMethod · 0.45
SetMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected