code: function ArduinoFirmataDriver (config, firmata){
      
      var self = this;
      
      //define some built in items
      this.built_in_items =  common.create_builtin_types();
      
      this.started = false;
      
      //Subscribed items.
      this.items = {
      };
      
      //Create ArduinoDriver specific logging functions
      var logger = require('log4js').getLogger();
      this.log = [];
      ['trace','debug','info','warn','error','fatal'].forEach(
      function(levelString) {
          self.log[levelString] = function () {
              var args = Array.prototype.slice.call(arguments);
              args.unshift('arduino.async port:' + self.port_name + ' - ');
              logger[levelString].apply(logger, args);
          }
      });
         
      this.port_name = config.port_name;
      
      logger.setLevel(config.log_level || 'warn');
      
      this.emitter = new events.EventEmitter();
      
      //Use 1 seconds as default instead of the 19ms
      this.sampling_interval = config.sampling_interval || 1000;
          
      this.board = new firmata.Board(this.port_name, function(){
          self.onBoardReady();
      });
  
  }
docs: //////////// Private stuff ////////////////////// /*
  Create a driver from config object
  config: {
  log_level: 'all',   //see all log messages for driver
  port_name: 'COM1',  //Options. Leave undefined for auto search
  sampling_interval   //Board default is 19ms which is way fast. We make default 1000ms
  }