code: function(options) {
      var outputText = "";
  
      if (typeof options === "undefined") {
        throw new Error("No options passed to build method");
      }
  
      if (typeof options.selectedFeatures === "undefined" || options.selectedFeatures.length < 1) {
        throw new Error("Must specify at least one selected feature");
      }
  
      this.featuresWithReporting = [];
      this.featuresWithUpdate = [];
      this.dependencies = Object.create(null);
      this.updateEnabled = false;
      this.reportingEnabled = false;
  
      this.filename = options.filename || "ConfiguredFirmata";
      this.connectionType = options.connectionType || {serial: {baud: 57600}};
      this.selectedFeatures = options.selectedFeatures;
  
      this.transport = this.createTransport(this.connectionType);
  
      this.processFeatureSelection();
  
      outputText += this.createHeader();
      outputText += this.createIncludes();
      outputText += this.createPostDependencies();
      outputText += this.createSystemResetCallbackFn();
      outputText += this.transport.createHostConnectionCallbackFn();
      outputText += this.transport.createDebugStatusFn();
      outputText += this.transport.createIgnorePinsFn();
      outputText += this.transport.createInitTransportFn();
      outputText += this.createInitFirmataFn();
      outputText += this.createSetupFn();
      outputText += this.createLoopFn();
  
      return outputText;
    }
docs: Refer to the demo.js and demo-ethernet.js files in /firmata-builder/examples/
  to properly format the object that is passed to the builder.build method.
  @param {Object} options User selected features and options
  @return {String} The text for the .ino file