Example #1
0
__interrupt void Port2_ISR ( void ) {
  
  /* Required for RF interrupt */
  MRFI_GpioIsr();    
  
  if (!(NODE1&LINK_MODE)) {
    
    /* Falling edge trigger */
    if (P2IFG&TRIGGER_H2L) {
      P2IFG &= ~TRIGGER_H2L;
      
      if (P2IN&MODE_SELECT) {
        NODE1 |= ALARMED;
      } else {
        NODE1 &= ~ALARMED;
      }
      
      NODE1 |= STATE_CHANGED;
    }  
  
    /* Rising edge trigger */
    if (P2IFG&TRIGGER_L2H) {
      P2IFG &= ~TRIGGER_L2H;
      
      if (P2IN&MODE_SELECT) {
        NODE1 &= ~ALARMED;
      } else {
        NODE1 |= ALARMED;
      }    
      
      NODE1 |= STATE_CHANGED;
    }    
  }
}
/**************************************************************************************************
 * @fn          MRFI_GpioPort1Isr
 *
 * @brief       -
 *
 * @param       -
 *
 * @return      -
 **************************************************************************************************
 */
BSP_ISR_FUNCTION( BSP_GpioPort1Isr, PORT2_VECTOR )
{
  /*
   *  This ISR is easily replaced.  The new ISR must simply
   *  include the following function call.
   */
  MRFI_GpioIsr();
}
/**************************************************************************************************
 * @fn          MRFI_GpioPort1Isr
 *
 * @brief       -
 *
 * @param       -
 *
 * @return      -
 **************************************************************************************************
 */
BSP_ISR_FUNCTION( BSP_GpioPort2Isr, PORT2_VECTOR )
{
  /*
   *  This ISR is easily replaced.  The new ISR must simply
   *  include the following function call.
   */
  MRFI_GpioIsr();
  
  //we exit from low power (worst case), clear all bits
  __bic_SR_register_on_exit(LPM0_bits);
}