code: function ZNPClient(config) {
    this._devices = {};
  
    this.config = config;
  
    if (!config || !config.panId) {
      throw new Error('You must set "panId" on ZNPClient config');
    }
  
    this.comms = new ZNPSerial();
  
    // Device state notifications
    this.comms.on('command:ZDO_STATE_CHANGE_IND', this._handleStateChange.bind(this));
  
    // Device announcements
    this.comms.on('command:ZDO_END_DEVICE_ANNCE_IND', this._handleDeviceAnnounce.bind(this));
  
    // Device endpoint responses
    this.comms.on('command:ZDO_MATCH_DESC_RSP', this._handleDeviceMatchDescriptionResponse.bind(this));
    this.comms.on('command:ZDO_ACTIVE_EP_RSP', this._handleDeviceMatchDescriptionResponse.bind(this));
  
    // Endpoint description responses
    this.comms.on('command:ZDO_SIMPLE_DESC_RSP', this._handleEndpointSimpleDescriptorResponse.bind(this));
  
    // Application framework (ZCL) messages
    this.comms.on('command:AF_INCOMING_MSG', this._handleAFIncomingMessage.bind(this));
  }
docs: A ZigBee client, handling higher level functions relating to the ZigBee
  network.
  interface responsible for communicating with the ZigBee SOC.