code: def create(cls, host='localhost', port=14999,
                 auto_reconnect=True, loop=None, protocol_class=AVR,
                 update_callback=None):
          
          assert port >= 0, 'Invalid port value: %r' % (port)
          conn = cls()
  
          conn.host = host
          conn.port = port
          conn._loop = loop or asyncio.get_event_loop()
          conn._retry_interval = 1
          conn._closed = False
          conn._closing = False
          conn._halted = False
          conn._auto_reconnect = auto_reconnect
  
          def connection_lost():
              """Function callback for Protocoal class when connection is lost."""
              if conn._auto_reconnect and not conn._closing:
                  ensure_future(conn._reconnect(), loop=conn._loop)
  
          conn.protocol = protocol_class(
              connection_lost_callback=connection_lost, loop=conn._loop,
              update_callback=update_callback)
  
          yield from conn._reconnect()
  
          return conn
docs: Initiate a connection to a specific device.
  
          Here is where we supply the host and port and callback callables we
          expect for this AVR class object.
  
          :param host:
              Hostname or IP address of the device
          :param port:
              TCP port number of the device
          :param auto_reconnect:
              Should the Connection try to automatically reconnect if needed?
          :param loop:
              asyncio.loop for async operation
          :param update_callback"
              This function is called whenever AVR state data changes
  
          :type host:
              str
          :type port:
              int
          :type auto_reconnect:
              boolean
          :type loop:
              asyncio.loop
          :type update_callback:
              callable