Example #1
0
/****************************************************************************
 *
 * NAME:       bAppQApiInit
 *
 * DESCRIPTION:
 * Initialised the Application Queue API, Application API and stack. Creates
 * the queues used for passing information up to the application and fills
 * the 'spare buffers' queues with the spare buffer entries. Also registers
 * the callback handlers with the Application API layer so all upward
 * information comes through this module.
 *
 * PARAMETERS: Name            RW  Usage
 *             prMlmeCallback  R   Optional callback when MLME received
 *             prMcpsCallback  R   Optional callback when MCPS received
 *             prHwCallback    R   Optional callback when HW int received
 *
 * RETURNS:
 * TRUE if initialisation was successful
 *
 ****************************************************************************/
PUBLIC uint32 u32AppQApiInit(PR_QIND_CALLBACK prMlmeCallback,
                             PR_QMCPS_CALLBACK prMcpsCallback,
                             PR_HWQINT_CALLBACK prHwCallback)
{
    int i;

    /* Initialise 'spare buffers' queues and fill with spare buffers */
    vFifoInit(&sMlmeIndBufferQueue, apvMlmeIndBufferData, APP_MAX_MLME_IND);
    for (i = 0; i < APP_MAX_MLME_IND; i++)
    {
        bFifoPush(&sMlmeIndBufferQueue, (void *)&asMlmeIndBuffer[i]);
    }

    vFifoInit(&sMcpsIndBufferQueue, apvMcpsIndBufferData, APP_MAX_MCPS_IND);
    for (i = 0; i < APP_MAX_MCPS_IND; i++)
    {
        bFifoPush(&sMcpsIndBufferQueue, (void *)&asMcpsIndBuffer[i]);
    }

    vFifoInit(&sHwIndBufferQueue, apvHwIndBufferData, APP_MAX_HW_IND);
    for (i = 0; i < APP_MAX_HW_IND; i++)
    {
        bFifoPush(&sHwIndBufferQueue, (void *)&asHwIndBuffer[i]);
    }

    /* Initialise 'used buffers' queues */
    vFifoInit(&sMlmeIndQueue, apvMlmeIndData, APP_MAX_MLME_IND);
    vFifoInit(&sMcpsIndQueue, apvMcpsIndData, APP_MAX_MCPS_IND);
    vFifoInit(&sHwIndQueue,   apvHwIndData,   APP_MAX_HW_IND);

    /* Store callbacks */
    prAppMlmeCallback = prMlmeCallback;
    prAppMcpsCallback = prMcpsCallback;
    prAppHwCallback = prHwCallback;

    /* Register peripheral callbacks */
    vAHI_SysCtrlRegisterCallback(vAppQApiPostHwInt);
    vAHI_APRegisterCallback(vAppQApiPostHwInt);
#ifndef GDB
    vAHI_Uart0RegisterCallback(vAppQApiPostHwInt);
#endif
    vAHI_Uart1RegisterCallback(vAppQApiPostHwInt);
    vAHI_TickTimerInit(vAppQApiPostHwInt);
    vAHI_SpiRegisterCallback(vAppQApiPostHwInt);
    vAHI_SiRegisterCallback(vAppQApiPostHwInt);
    vAHI_Timer0RegisterCallback(vAppQApiPostHwInt);
    vAHI_Timer1RegisterCallback(vAppQApiPostHwInt);

    /* Register this layer with AppApi layer */
    return u32AppApiInit(psAppQApiGetMlmeBuffer, vAppQApiPostMlme, NULL,
                         psAppQApiGetMcpsBuffer, vAppQApiPostMcps, NULL);
}
/****************************************************************************
 *
 * NAME:            LAMP_vInit
 *
 * DESCRIPTION:     Initialises the lamp drive system
 *
 * PARAMETERS:      Name     RW  Usage
 *
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void DriverBulb_vInit(void)
{
    bool_t bLampTimerInt = FALSE;

    static bool_t bInit = FALSE;

	if (bInit==TRUE)
    {
        /* Mimic PWM to led ? */
        #if (LAMP_LED_PIN < 21)
        {
            /* Configure as output */
            vAHI_DioSetDirection(0, (1 << LAMP_LED_PIN));
            /* Turn CFL lamp off */
            vAHI_DioSetOutput((1 << LAMP_LED_PIN), 0);
            /* Register interrupt callback */
			#if (JENNIC_CHIP == JN5148) || (JENNIC_CHIP == JN5148J01)
	            vAHI_Timer1RegisterCallback(vCbTimer1);
			#else
	            vAHI_Timer3RegisterCallback(vCbTimer1);
			#endif
            /* Note we want to generate interrupts */
            bLampTimerInt = TRUE;
        }
        #endif

        /* Indicate gateway mode on LED ? */
        #if (LAMP_GW_PIN < 21)
        {
            /* Configure as output */
            vAHI_DioSetDirection(0, (1 << LAMP_GW_PIN));
		}
		#endif

        /* Configure timer 0 to generate a PWM output on its output pin */
        vAHI_TimerEnable(LAMP_TIMER, LAMP_TIMER_PRESCALE, bLampTimerInt, bLampTimerInt, TRUE);
        vAHI_TimerConfigureOutputs(LAMP_TIMER, FALSE, TRUE);
        vAHI_TimerClockSelect(LAMP_TIMER, FALSE, TRUE);

        /********************************************/
        /* Voltage Monitoring System Initialisation */
        /********************************************/

         gu32BusVoltage = 0;
    }
    bInit=TRUE; /* 2nd late call will be used for initialisation */
}