Ejemplo n.º 1
0
/****************************************************************************
 *
 * NAME: vJenie_StackDataEvent
 *
 * DESCRIPTION:
 * Used to receive stack data events
 *
 * PARAMETERS:      Name                    RW  Usage
 *                  *psStackDataEvent       R   Pointer to data structure
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void vJenie_CbStackDataEvent(teEventType eEventType, void *pvEventPrim)
{
    switch(eEventType)
    {
    case E_JENIE_DATA:
        break;

    case E_JENIE_DATA_TO_SERVICE:
        break;

    case E_JENIE_DATA_ACK:
        /* Update current state on success*/
        if (sHomeData.eAppState == E_STATE_REGISTER)
        {
            #ifdef DEBUG
                vUtils_Debug("Registered");
            #endif
            sHomeData.eAppState = E_STATE_RUNNING;
        }
    break;

    case E_JENIE_DATA_TO_SERVICE_ACK:
        break;

    default:
        /*Unknown data event type */
        #ifdef DEBUG
            vUtils_Debug("Unknown Data Event");
        #endif
        break;
    }
}
Ejemplo n.º 2
0
/****************************************************************************
 *
 * NAME: vJenie_StackMgmtEvent
 *
 * DESCRIPTION:
 * Used to receive stack management events
 *
 * PARAMETERS:      Name                    RW  Usage
 *                  *psStackMgmtEvent       R   Pointer to event structure
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void vJenie_CbStackMgmtEvent(teEventType eEventType, void *pvEventPrim)
{
    switch(eEventType)
    {
    case E_JENIE_NETWORK_UP:
        sHomeData.u64ParentAddr = ((tsNwkStartUp*)pvEventPrim)->u64ParentAddress;
        #ifdef DEBUG
            vUtils_DisplayMsg("New parent:",(uint32)sHomeData.u64ParentAddr);
            vUtils_Debug("Network Up");
        #endif
        sHomeData.bStackReady=TRUE;
        bTimeOut=TRUE;
        break;

    case E_JENIE_REG_SVC_RSP:
        break;

    case E_JENIE_SVC_REQ_RSP:
        break;

    case E_JENIE_POLL_CMPLT:
        break;

    case E_JENIE_PACKET_SENT:
        break;

    case E_JENIE_PACKET_FAILED:
        break;

    case E_JENIE_CHILD_JOINED:
        break;

    case E_JENIE_STACK_RESET:
        #ifdef DEBUG
            vUtils_Debug("Stack Reset");
        #endif
        sHomeData.bStackReady = FALSE;
        sHomeData.eAppState = E_STATE_REGISTER;
        break;

    default:
        /* Unknown management event type */
        #ifdef DEBUG
            vUtils_Debug("Unknown Management Event");
        #endif
        break;
    }
}
Ejemplo n.º 3
0
/****************************************************************************
 *
 * NAME: vJenie_Main
 *
 * DESCRIPTION:
 * Main user routine. This is called by the Basic Operating System (BOS)
 * at regular intervals.
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void vJenie_CbMain(void)
{
    static bool phase=0;
    static uint32 loop_count;

    /* regular watchdog reset */
    #ifdef WATCHDOG_ENABLED
       vAHI_WatchdogRestart();
    #endif

    if(sHomeData.bStackReady && bTimeOut)       // Stack up and running and waiting for us to do something
    {
        switch(sHomeData.eAppState)
        {
        case E_STATE_REGISTER:
            if(loop_count % REGISTER_FLASH_RATE == 0)
            {
                vTxRegister();
                vLedControl(LED1,phase);
                phase ^= 1;
                #ifdef NO_SLEEP
                    /* Manually poll parent as not sleeping */
                    (void)eJenie_PollParent();
                #endif
            }
            break;

        case E_STATE_RUNNING:
            vProcessRead();
            if(loop_count % RUNNING_FLASH_RATE == 0)
            {
                vLedControl(LED1,phase);
                phase ^= 1;
            }
            if(loop_count % RUNNING_TRANSMIT_RATE == 0)
            {
                vProcessTxData();
            }
            break;

        default:
            #ifdef DEBUG
                vUtils_Debug("Unknown State");
            #endif
            break;
        }
        loop_count--;

        #ifdef NO_SLEEP
            vAHI_WakeTimerStart(E_AHI_WAKE_TIMER_1, DELAY_PERIOD);
            bTimeOut = FALSE;
        #else
            eJenie_SetSleepPeriod(SLEEP_PERIOD * 10);
            eJenie_Sleep(E_JENIE_SLEEP_OSCON_RAMON);
        #endif
    }


}
Ejemplo n.º 4
0
PUBLIC void vJenie_CbInit(bool_t bWarmStart)
{

    vUtils_Init();

    if(bWarmStart==FALSE)
    {
        (void)u32AHI_Init();
        sHomeData.bStackReady=FALSE;
        /* Initialise buttons, LEDs and program variables */
        vInitEndpoint();
        /* Set DIO for buttons and LEDs */
        vLedControl(LED1, FALSE);
        vLedControl(LED2, FALSE);
        vLedInitRfd();
        vButtonInitRfd();

        #ifdef NO_SLEEP
            vAHI_WakeTimerEnable(E_AHI_WAKE_TIMER_1, TRUE);
        #endif

        /* Set SW1(dio9) to input */
        vAHI_DioSetDirection(E_AHI_DIO9_INT, 0);
        /* set interrupt for DIO9 to occur on button release - rising edge */
        vAHI_DioInterruptEdge(E_AHI_DIO9_INT, 0);
        /* enable interrupt for DIO9 */
        vAHI_DioInterruptEnable(E_AHI_DIO9_INT, 0);

        /* Set SW2(dio10) to input */
        vAHI_DioSetDirection(E_AHI_DIO10_INT, 0);
        /* set interrupt for DIO9 to occur on button release - rising edge */
        vAHI_DioInterruptEdge(E_AHI_DIO10_INT, 0);
        /* enable interrupt for DIO9 */
        vAHI_DioInterruptEnable(E_AHI_DIO10_INT, 0);

        /* Set up peripheral hardware */
        vALSreset();
        vHTSreset();

        /* Start ALS now: it automatically keeps re-sampling after this */
        vALSstartReadChannel(0);

        sHomeData.eAppState = E_STATE_REGISTER;
        switch(eJenie_Start(E_JENIE_END_DEVICE))        /* Start network as end device */
        {
        case E_JENIE_SUCCESS:
            #ifdef DEBUG
                vUtils_Debug("Jenie Started");
            #endif
            #ifdef HIGH_POWER
                /* Set high power mode */
                eJenie_RadioPower(18, TRUE);
            #endif
            break;

        case E_JENIE_ERR_UNKNOWN:
        case E_JENIE_ERR_INVLD_PARAM:
        case E_JENIE_ERR_STACK_RSRC:
        case E_JENIE_ERR_STACK_BUSY:

        default:
            /* Do something on failure?? */
            break;
        }
    }else{

        /* Set up peripheral hardware */
        vALSreset();
        vHTSreset();

        /* Start ALS now: it automatically keeps re-sampling after this */
        vALSstartReadChannel(0);

        switch(eJenie_Start(E_JENIE_END_DEVICE))        /* Start network as end device */
        {
        case E_JENIE_SUCCESS:
            #ifdef HIGH_POWER
                /* Set high power mode */
                eJenie_RadioPower(18, TRUE);
            #endif
            break;

        case E_JENIE_ERR_UNKNOWN:
        case E_JENIE_ERR_INVLD_PARAM:
        case E_JENIE_ERR_STACK_RSRC:
        case E_JENIE_ERR_STACK_BUSY:

        default:
            /* Do something on failure?? */
            break;
        }

    }
    /* set watchdog to long timeout - override setting in JenNet startup */
    #ifdef WATCHDOG_ENABLED
       vAHI_WatchdogStart(254);
    #endif

}
Ejemplo n.º 5
0
/****************************************************************************
 *
 * NAME: vUtils_DisplayDec
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 *                  u32Data         R   Value to send
 *                  iSize           R   Length of value
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void vUtils_DisplayDec(uint8 u8Data)
{
    char acValue[3];
    vUtils_ValToDec(acValue, u8Data);
    vUtils_Debug(acValue);
}
Ejemplo n.º 6
0
/****************************************************************************
 *
 * NAME: vUtils_DisplayHex
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 *                  u32Data         R   Value to send
 *                  iSize           R   Length of value
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC void vUtils_DisplayHex(uint32 u32Data, int iSize)
{
    char acValue[9];
    vUtils_ValToHex(acValue, u32Data, 8);
    vUtils_Debug(acValue);
}
Ejemplo n.º 7
0
/****************************************************************************
 *
 * NAME: vUtils_DisplayMsg
 *
 * DESCRIPTION:
 * Used to display text plus number
 *
 * PARAMETERS:      Name            RW  Usage
 *                  pcMessage       R   Message to display
 *                  u32Data         R   Data to display
 *
 * RETURNS:
 * void, never returns
 *
 ****************************************************************************/
PUBLIC void vUtils_DisplayMsg(char *pcMessage, uint32 u32Data)
{
    vUtils_Debug(pcMessage);
    vUtils_DisplayHex(u32Data, 8);
}