----------------------------------------------------------------------------- Process a request from the Z-Wave PC interface -----------------------------------------------------------------------------
| 3396 | // Process a request from the Z-Wave PC interface |
| 3397 | //----------------------------------------------------------------------------- |
| 3398 | void Driver::HandleRemoveNodeFromNetworkRequest |
| 3399 | ( |
| 3400 | uint8* _data |
| 3401 | ) |
| 3402 | { |
| 3403 | //uint8 nodeId = GetNodeNumber( m_currentMsg ); |
| 3404 | if( m_currentControllerCommand == NULL ) |
| 3405 | { |
| 3406 | return; |
| 3407 | } |
| 3408 | ControllerState state = m_currentControllerCommand->m_controllerState; |
| 3409 | Log::Write( LogLevel_Info, "FUNC_ID_ZW_REMOVE_NODE_FROM_NETWORK:" ); |
| 3410 | |
| 3411 | switch( _data[3] ) |
| 3412 | { |
| 3413 | case REMOVE_NODE_STATUS_LEARN_READY: |
| 3414 | { |
| 3415 | Log::Write( LogLevel_Info, "REMOVE_NODE_STATUS_LEARN_READY" ); |
| 3416 | state = ControllerState_Waiting; |
| 3417 | m_currentControllerCommand->m_controllerCommandNode = 0; |
| 3418 | break; |
| 3419 | } |
| 3420 | case REMOVE_NODE_STATUS_NODE_FOUND: |
| 3421 | { |
| 3422 | Log::Write( LogLevel_Info, "REMOVE_NODE_STATUS_NODE_FOUND" ); |
| 3423 | state = ControllerState_InProgress; |
| 3424 | break; |
| 3425 | } |
| 3426 | case REMOVE_NODE_STATUS_REMOVING_SLAVE: |
| 3427 | { |
| 3428 | Log::Write( LogLevel_Info, "REMOVE_NODE_STATUS_REMOVING_SLAVE" ); |
| 3429 | if (_data[4] != 0) |
| 3430 | { |
| 3431 | Log::Write( LogLevel_Info, "Removing node ID %d", _data[4] ); |
| 3432 | m_currentControllerCommand->m_controllerCommandNode = _data[4]; |
| 3433 | } |
| 3434 | else |
| 3435 | { |
| 3436 | Log::Write( LogLevel_Warning, "Remove Node Failed - NodeID 0 Returned"); |
| 3437 | state = ControllerState_Failed; |
| 3438 | } |
| 3439 | break; |
| 3440 | } |
| 3441 | case REMOVE_NODE_STATUS_REMOVING_CONTROLLER: |
| 3442 | { |
| 3443 | Log::Write( LogLevel_Info, "REMOVE_NODE_STATUS_REMOVING_CONTROLLER" ); |
| 3444 | m_currentControllerCommand->m_controllerCommandNode = _data[4]; |
| 3445 | if( m_currentControllerCommand->m_controllerCommandNode == 0 ) // Some controllers don't return node number |
| 3446 | { |
| 3447 | if( _data[5] >= 3 ) |
| 3448 | { |
| 3449 | LockGuard LG(m_nodeMutex); |
| 3450 | for( int i=0; i<256; i++ ) |
| 3451 | { |
| 3452 | if( m_nodes[i] == NULL ) |
| 3453 | { |
| 3454 | continue; |
| 3455 | } |