void StatusSubscribe::fsmUpStopEvent() { if (m_state == State::Up) { #ifdef QT_DEBUG DEBUG_TAG(1, m_debugName, "Event STOP"); #endif // handle state change emit fsmUpExited(QPrivateSignal()); fsmDown(); emit fsmDownEntered(QPrivateSignal()); // execute actions stopHeartbeatTimer(); stopSocket(); } }
//------------------------------------------------------------------------------ NTSTATUS powerlinkClose(PDEVICE_OBJECT pDeviceObject_p, PIRP pIrp_p) { tFileContext* pFileContext; PIO_STACK_LOCATION irpStack; UINT16 status; tCtrlCmd ctrlCmd; UNUSED_PARAMETER(pDeviceObject_p); DEBUG_LVL_ALWAYS_TRACE("PLK: + %s()...\n", __func__); if (pIrp_p == NULL) return NDIS_STATUS_RESOURCES; irpStack = IoGetCurrentIrpStackLocation(pIrp_p); pFileContext = irpStack->FileObject->FsContext; ExFreePoolWithTag(pFileContext, PLK_MEM_TAG); plkDriverInstance_l.instanceCount--; // Close lower driver resources only if all open instances have closed. if (plkDriverInstance_l.fInitialized && (plkDriverInstance_l.instanceCount == 0)) { plkDriverInstance_l.fInitialized = FALSE; stopHeartbeatTimer(); ctrlk_exit(); drv_getStatus(&status); if (status == kCtrlStatusRunning) { ctrlCmd.cmd = kCtrlShutdown; drv_executeCmd(&ctrlCmd); } } pIrp_p->IoStatus.Information = 0; pIrp_p->IoStatus.Status = STATUS_SUCCESS; IoCompleteRequest(pIrp_p, IO_NO_INCREMENT); DEBUG_LVL_ALWAYS_TRACE("PLK: + %s() - OK\n", __func__); return STATUS_SUCCESS; }
void StatusSubscribe::fsmUpHeartbeatTimeoutEvent() { if (m_state == State::Up) { #ifdef QT_DEBUG DEBUG_TAG(1, m_debugName, "Event HEARTBEAT TIMEOUT"); #endif // handle state change emit fsmUpExited(QPrivateSignal()); fsmTrying(); emit fsmTryingEntered(QPrivateSignal()); // execute actions stopHeartbeatTimer(); stopSocket(); startSocket(); } }