void StatusSubscribe::fsmTryingFullUpdateReceivedEvent() { if (m_state == State::Trying) { #ifdef QT_DEBUG DEBUG_TAG(1, m_debugName, "Event FULL UPDATE RECEIVED"); #endif // handle state change emit fsmTryingExited(QPrivateSignal()); fsmUp(); emit fsmUpEntered(QPrivateSignal()); // execute actions resetHeartbeatLiveness(); startHeartbeatTimer(); } }
//------------------------------------------------------------------------------ NTSTATUS powerlinkCreate(PDEVICE_OBJECT pDeviceObject_p, PIRP pIrp_p) { NDIS_TIMER_CHARACTERISTICS timerChars; tFileContext* pFileContext; PIO_STACK_LOCATION irpStack; NDIS_STATUS status; 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 = ExAllocatePoolWithQuotaTag(NonPagedPool, sizeof(tFileContext), PLK_MEM_TAG); if (pFileContext == NULL) { DEBUG_LVL_ERROR_TRACE("PLK: Failed to create file context\n"); } IoInitializeRemoveLock(&pFileContext->driverAccessLock, PLK_MEM_TAG, 0, 0); irpStack->FileObject->FsContext = (void*)pFileContext; if (!plkDriverInstance_l.fInitialized) { NdisZeroMemory(&timerChars, sizeof(timerChars)); C_ASSERT(NDIS_SIZEOF_TIMER_CHARACTERISTICS_REVISION_1 <= sizeof(timerChars)); timerChars.Header.Type = NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS; timerChars.Header.Size = NDIS_SIZEOF_TIMER_CHARACTERISTICS_REVISION_1; timerChars.Header.Revision = NDIS_TIMER_CHARACTERISTICS_REVISION_1; timerChars.TimerFunction = increaseHeartbeatCb; timerChars.FunctionContext = NULL; timerChars.AllocationTag = PLK_MEM_TAG; status = NdisAllocateTimerObject(plkDriverInstance_l.driverHandle, &timerChars, &heartbeatTimer_l); if (status != NDIS_STATUS_SUCCESS) { DEBUG_LVL_ERROR_TRACE("%s() Timer Creation Failed %x\n", __func__, status); return STATUS_SUCCESS; } if (ctrlk_init(NULL) != kErrorOk) { return NDIS_STATUS_RESOURCES; } startHeartbeatTimer(20); plkDriverInstance_l.fInitialized = TRUE; } // Increase the count for open instances plkDriverInstance_l.instanceCount++; 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; }