code: function RaspiCam( opts ) {
    
    if ( !(this instanceof RaspiCam) ) {
      return new RaspiCam( opts );
    }
  
    // Ensure opts is an object
    opts = opts || {};
  
    if(typeof opts.mode === "undefined" || typeof opts.output === "undefined"){
      console.log("Error: RaspiCam: must define mode and output");
      return false;
    }
  
    // Initialize this Board instance with
    // param specified properties.
    this.opts = {};
    _.assign( this.opts, opts );
  
    // If any opts use the abbreviation, convert to
    // the full word (eg. from opts.w to opts.width)
    this.hashOpts( opts );
  
    // Set up opts defaults
    this.defaultOpts( );
  
    // Create derivative opts
    this.derivativeOpts( );
  
    // If this.filepath doesn't exist, make it
    this.createFilepath( );
    
    //child process
    this.child_process = null;
  
    //directory watcher
    this.watcher = null;
  
    //events.EventEmitter.call(this);
  }
docs: RaspiCam
  @constructor
  
  @description Raspberry Pi camera controller object
  
  @param {Object} opts Options: mode, freq, delay, width, height, quality, encoding, filepath, filename, timeout