コード例 #1
0
/*****************************************************************************
*
* 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 */
コード例 #2
0
ファイル: ski2c.c プロジェクト: archith/camera_project
/*
 * 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*/
コード例 #3
0
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);
}