/*********************************************************************
 * @fn      AT_ZCL_ONOFF_SWITCH_update
 *
 * @brief   updata the Device Temperature Configuration Cluster every second
 *
 * @param   none
 *
 * @return  none
 *
************************************************************/
static void AT_ZCL_ONOFF_SWITCH_update(void){
  uint8 sw = switch_status();
  if(AT_ZCL_ONOFF_SWITCH_action != sw){
    AT_ZCL_ONOFF_SWITCH_action=sw;
    
    afAddrType_t dstAddr;
    dstAddr.addrMode = afAddrNotPresent;
    if(AT_ZCL_ONOFF_SWITCH_action==ON_OFF_SWITCH_ACTIONS_0 ){
      zclGeneral_SendOnOff_CmdOff(AT_ZCL_ONOFF_SWITCH_ENDPOINT,&dstAddr,1,1);
    }else{
      zclGeneral_SendOnOff_CmdOn(AT_ZCL_ONOFF_SWITCH_ENDPOINT,&dstAddr,1,1);
    }
    
  }
  
  if(AT_ZCL_ONOFF_SWITCH_action==ON_OFF_SWITCH_ACTIONS_0) 
      HalLedSet( HAL_LED_1, HAL_LED_MODE_OFF );
  else HalLedSet( HAL_LED_1, HAL_LED_MODE_ON );
  
}
Ejemplo n.º 2
0
/*********************************************************************
 * @fn      zllSampleBridge_HandleKeys
 *
 * @brief   Handles all key events for this device.
 *
 * @param   shift - true if in shift/alt.
 * @param   keys - bit field for key events.
 *
 * @return  none
 */
static void zllSampleBridge_HandleKeys( byte shift, byte keys )
{
  if(shift)
  {
    keys |= HAL_KEY_SW_6;
  }

  if ( keys == ON_KEY )
  {
    zclGeneral_SendOnOff_CmdOn( SAMPLEBRIDGE_ENDPOINT, &zllSampleBridge_DstAddr, FALSE, sampleBridgeSeqNum++ );
  }

  if ( keys == FACTORY_RESET_KEY )
  {
    zllInitiator_ResetToFactoryNew();
  }

  if ( keys == OFF_KEY )
  {
    zclGeneral_SendOnOff_CmdOff( SAMPLEBRIDGE_ENDPOINT, &zllSampleBridge_DstAddr, FALSE, sampleBridgeSeqNum++ );
  }

  if ( keys == TOUCH_LINK_KEY )
  {
    zllInitiator_StartDevDisc();
  }

  if ( keys == DEV_SEL_UP_KEY )
  {
    if ( linkedAddrNum > 0 )
    {
      if( (linkedAddrSelIdx+1) >= linkedAddrNum )
      {
        linkedAddrSelIdx = 0;
      }
      else
      {
        linkedAddrSelIdx++;
      }
      zllSampleBridge_DstAddr.addrMode = afAddr16Bit;
      zllSampleBridge_DstAddr.addr.shortAddr = linkedTargets.arr[linkedAddrSelIdx].Addr;
      zllSampleBridge_DstAddr.endPoint =  linkedTargets.arr[linkedAddrSelIdx].EP;

      zclGeneral_SendIdentify( SAMPLEBRIDGE_ENDPOINT, &zllSampleBridge_DstAddr,
                               SAMPLEBRIDGE_CMD_IDENTIFY_TIME, FALSE, sampleBridgeSeqNum++ );

      HalLcdWriteStringValue( "Dev Sel:", zllSampleBridge_DstAddr.addr.shortAddr, 16, HAL_LCD_LINE_3 );
    }
    else
    {
      HalLcdWriteString( "Dev Sel: no trgt", HAL_LCD_LINE_3 );
    }
  }

  if ( keys == DEV_SEL_DN_KEY )
  {
    if ( linkedAddrNum > 0 )
    {
      if(linkedAddrSelIdx < 1)
      {
        linkedAddrSelIdx = (linkedAddrNum-1);
      }
      else
      {
        linkedAddrSelIdx--;
      }
      zllSampleBridge_DstAddr.addrMode = afAddr16Bit;
      zllSampleBridge_DstAddr.addr.shortAddr = linkedTargets.arr[linkedAddrSelIdx].Addr;
      zllSampleBridge_DstAddr.endPoint = linkedTargets.arr[linkedAddrSelIdx].EP;

      zclGeneral_SendIdentify( SAMPLEBRIDGE_ENDPOINT, &zllSampleBridge_DstAddr,
                               SAMPLEBRIDGE_CMD_IDENTIFY_TIME, FALSE, sampleBridgeSeqNum++ );

      HalLcdWriteStringValue( "Dev Sel:", zllSampleBridge_DstAddr.addr.shortAddr, 16, HAL_LCD_LINE_3 );
    }
    else
    {
      HalLcdWriteString( "Dev Sel: no trgt", HAL_LCD_LINE_3 );
    }
  }

  if ( keys == PERMIT_JOIN_KEY )
  {
    if ( zllInitiator_BridgeStartNetwork() != ZSuccess )
    {
      zllInitiator_PermitJoin( PERMIT_JOIN_DURATION );
      HalLcdWriteString( "PermitJoin", HAL_LCD_LINE_3 );
    }
  }

  if ( keys == CLASSIC_COMMISS_KEY )
  {
    zllInitiator_ClassicalCommissioningStart();
  }

}