text: /**
   * @file NexTouch.cpp
   *
   * The implementation of class NexTouch. 
   *
   * @author  Wu Pengfei (email:<pengfei.wu@itead.cc>)
   * @date    2015/8/13
   * @copyright 
   * Copyright (C) 2014-2015 ITEAD Intelligent Systems Co., Ltd. \n
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License as
   * published by the Free Software Foundation; either version 2 of
   * the License, or (at your option) any later version.
   */
  #include "NexTouch.h"
  
  
  NexTouch::NexTouch(uint8_t pid, uint8_t cid, const char *name)
      :NexObject(pid, cid, name)
  {
      this->__cb_push = NULL;
      this->__cb_pop = NULL;
      this->__cbpop_ptr = NULL;
      this->__cbpush_ptr = NULL;
  }
  
  void NexTouch::attachPush(NexTouchEventCb push, void *ptr)
  {
      this->__cb_push = push;
      this->__cbpush_ptr = ptr;
  }
  
  void NexTouch::detachPush(void)
  {
      this->__cb_push = NULL;
      this->__cbpush_ptr = NULL;
  }
  
  void NexTouch::attachPop(NexTouchEventCb pop, void *ptr)
  {
      this->__cb_pop = pop;
      this->__cbpop_ptr = ptr;
  }
  
  void NexTouch::detachPop(void)
  {
      this->__cb_pop = NULL;    
      this->__cbpop_ptr = NULL;
  }
  
  void NexTouch::push(void)
  {
      if (__cb_push)
      {
          __cb_push(__cbpush_ptr);
      }
  }
  
  void NexTouch::pop(void)
  {
      if (__cb_pop)
      {
          __cb_pop(__cbpop_ptr);
      }
  }
  
  void NexTouch::iterate(NexTouch **list, uint8_t pid, uint8_t cid, int32_t event)
  {
      NexTouch *e = NULL;
      uint16_t i = 0;
  
      if (NULL == list)
      {
          return;
      }
      
      for(i = 0; (e = list[i]) != NULL; i++)
      {
          if (e->getObjPid() == pid && e->getObjCid() == cid)
          {
              e->printObjInfo();
              if (NEX_EVENT_PUSH == event)
              {
                  e->push();
              }
              else if (NEX_EVENT_POP == event)
              {
                  e->pop();
              }
              
              break;
          }
      }
  }
  