/***************************************************************************** * * FwMainStateMachine - general ASF timer * * Description: * * Returns: * Always 0 */ void FwMainStateMachine( SK_AC *pAC, /* Pointer to adapter context */ SK_IOC IoC) /* IO context handle */ { SK_EVPARA EventParam; SK_DBG_MSG(pAC, SK_DBGMOD_ASF, SK_DBGCAT_INIT, ("%s: FwMainStateMachine() called!\n", SK_DRV_NAME)); if (pAC->FwApp.GlHciState == 0) { /* idle */ SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); SkTimerStart(pAC, IoC, &pAC->FwApp.AsfTimer, 1000000, SKGE_ASF, SK_ASF_EVT_TIMER_EXPIRED, EventParam); } else { SK_MEMSET((char *)&EventParam, 0, sizeof(EventParam)); SkTimerStart(pAC, IoC, &pAC->FwApp.AsfTimer, 30000, SKGE_ASF, SK_ASF_EVT_TIMER_EXPIRED, EventParam); } return; } /* FwMainStateMachine */
/* * The only Event to be served is the timeout event * */ int SkI2cEvent( SK_AC *pAC, /* Adapter Context */ SK_IOC IoC, /* I/O Context */ SK_U32 Event, /* Module specific Event */ SK_EVPARA Para) /* Event specific Parameter */ { int ReadComplete; SK_SENSOR *pSen; SK_U32 Time; SK_EVPARA ParaLocal; int i; switch (Event) { case SK_I2CEV_IRQ: case SK_I2CEV_TIM: pSen = &pAC->I2c.SenTable[pAC->I2c.CurrSens]; ReadComplete = SkI2cReadSensor(pAC, IoC, pSen); if (ReadComplete) { /* Check sensor against defined thresholds */ SkI2cCheckSensor (pAC, pSen); /* Increment Current and set appropriate Timeout */ Time = SK_I2C_TIM_SHORT; pAC->I2c.CurrSens ++; if (pAC->I2c.CurrSens == pAC->I2c.MaxSens) { pAC->I2c.CurrSens = 0; Time = SK_I2C_TIM_LONG; } /* Start Timer */ ParaLocal.Para64 = (SK_U64) 0; SkTimerStart(pAC, IoC, &pAC->I2c.SenTimer, Time, SKGE_I2C, SK_I2CEV_TIM, ParaLocal); } break; case SK_I2CEV_CLEAR: for (i = 0; i < SK_MAX_SENSORS; i ++) { pAC->I2c.SenTable[i].SenErrFlag = SK_SEN_ERR_OK; pAC->I2c.SenTable[i].SenErrCts = 0; pAC->I2c.SenTable[i].SenWarnCts = 0; pAC->I2c.SenTable[i].SenBegErrTS = 0; pAC->I2c.SenTable[i].SenBegWarnTS = 0; pAC->I2c.SenTable[i].SenLastErrTrapTS = (SK_U64)0; pAC->I2c.SenTable[i].SenLastErrLogTS = (SK_U64)0; pAC->I2c.SenTable[i].SenLastWarnTrapTS = (SK_U64)0; pAC->I2c.SenTable[i].SenLastWarnLogTS = (SK_U64)0; } break; default: SK_ERR_LOG(pAC, SK_ERRCL_SW, SKERR_I2C_E006, SKERR_I2C_E006MSG); } return(0); } /* SkI2cEvent*/
void SkDimStartModerationTimer(SK_AC *pAC) { SK_EVPARA EventParam; /* Event struct for timer event */ SK_MEMSET((char *) &EventParam, 0, sizeof(EventParam)); EventParam.Para32[0] = SK_DRV_MODERATION_TIMER; SkTimerStart(pAC, pAC->IoBase, &pAC->DynIrqModInfo.ModTimer, SK_DRV_MODERATION_TIMER_LENGTH, SKGE_DRV, SK_DRV_TIMER, EventParam); }