/**************************************************************************** * * NAME: APP_vButtonsInitialise * * DESCRIPTION: * Initialises buttons * * RETURNS: * bool_t Returns TRUE if any button was pressed * ****************************************************************************/ PUBLIC bool_t APP_bButtonInitialise(void) { /* Set DIO lines to inputs with buttons connected */ vAHI_DioSetDirection(APP_BUTTONS_DIO_MASK, 0); /* Turn on pull-ups for DIO lines with buttons connected */ vAHI_DioSetPullup(APP_BUTTONS_DIO_MASK, 0); /* Set the edge detection for falling edges */ vAHI_DioInterruptEdge(0, APP_BUTTONS_DIO_MASK); /* Enable interrupts to occur on selected edge */ vAHI_DioInterruptEnable(APP_BUTTONS_DIO_MASK, 0); uint32 u32Buttons = u32AHI_DioReadInput() & APP_BUTTONS_DIO_MASK; if (u32Buttons != APP_BUTTONS_DIO_MASK) { return TRUE; } return FALSE; }
/**************************************************************************** * NAME: bButtonInitialize * * DESCRIPTION: * Button Initialization function, enables interrupts only on DK4 * * RETURNS: * void * ****************************************************************************/ bool bButtonInitialize(void) { #ifdef DK4 /* Set DIO lines to inputs with buttons connected */ vAHI_DioSetDirection(APP_BUTTONS_DIO_MASK, 0); vAHI_SysCtrlRegisterCallback(&vEH_ButtonCallback); /* Turn on pull-ups for DIO lines with buttons connected */ vAHI_DioSetPullup(APP_BUTTONS_DIO_MASK, 0); /* Set the edge detection for falling edges */ vAHI_DioInterruptEdge(0, APP_BUTTONS_DIO_MASK); /* Enable interrupts to occur on selected edge */ vAHI_DioInterruptEnable(APP_BUTTONS_DIO_MASK, 0); uint32 u32ButtonStatus = u32AHI_DioReadInput() ; if ((u32ButtonStatus & 0x100) == 0x00) { u32Button = APP_BUTTONS_BUTTON_1; bButtonPressed = TRUE; /* disable edge detection until handling of button press complete */ vAHI_DioInterruptEnable(0, APP_BUTTONS_DIO_MASK); return TRUE; } return FALSE; #else /* Disable internal pull-up */ vAHI_DioSetPullup ((uint32) 0x0, APP_BUTTONS_DIO_MASK); /* Make button DIO an input */ vAHI_DioSetDirection ((uint32) APP_BUTTONS_DIO_MASK, 0x0); return TRUE; #endif }
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 }