code: func NewAdaptor(args ...interface{}) *Adaptor {
  	f := &Adaptor{
  		name:  gobot.DefaultName("Firmata"),
  		port:  "",
  		conn:  nil,
  		Board: client.New(),
  		PortOpener: func(port string) (io.ReadWriteCloser, error) {
  			return serial.Open(port, &serial.Mode{BaudRate: 57600})
  		},
  		Eventer: gobot.NewEventer(),
  	}
  
  	for _, arg := range args {
  		switch arg.(type) {
  		case string:
  			f.port = arg.(string)
  		case io.ReadWriteCloser:
  			f.conn = arg.(io.ReadWriteCloser)
  		}
  	}
  
  	return f
  }
docs: // NewAdaptor returns a new Firmata Adaptor which optionally accepts:
  //
  //	string: port the Adaptor uses to connect to a serial port with a baude rate of 57600
  //	io.ReadWriteCloser: connection the Adaptor uses to communication with the hardware
  //
  // If an io.ReadWriteCloser is not supplied, the Adaptor will open a connection
  // to a serial port with a baude rate of 57600. If an io.ReadWriteCloser
  // is supplied, then the Adaptor will use the provided io.ReadWriteCloser and use the
  // string port as a label to be displayed in the log and api.