Example #1
0
    value: function(opts, datahandler) {
      let handle = 0;

      let board = opts.board || five.Board.mount();

      let unitName = opts.custom.unit || "MCP9808:0";
      let openFlags = opts.custom.flags || 1;
      let openOpts = opts.custom.opts || 0;
      let freq = opts.freq || 250;

      let proxyRDD = new RDD.RemoteDeviceDriver({board: board});
      log.debug(`RemoteDeviceDriver is created.`);

      let api = new API.MCP9808API({driver : proxyRDD});
      log.debug(`MCP9808API is created.`);

      let seq = new Sequencer(api,["open", "read", "write", "close", "read-continuous"],{});
      log.debug(`Sequencer is created.`);

      seq.on("error", (apiError) => {
        log.error(`Error ${RDD.SC[apiError.status].sym} (${apiError.status}) ${RDD.SC[apiError.status].msg}.`);
      });

      seq.on("done", (apiResult) => {
        log.debug(`Initialization steps completed.`);
      });

      api.on("read-continuous", (apiResult) => {
        log.trace(`${unitName} says temp is ${apiResult.C}°C, ${apiResult.F}°F, ${apiResult.K}°K.`);
        datahandler(apiResult.C);
      });

      let step = [

        (apiResult) => {
          log.debug(`Begin MCP9808 controller initialization processing.`);
          api.open(unitName,RDD.DAF.FORCE,0);
        },

        (apiResult) => {
          log.trace(`Opened ${apiResult.unitName} with handle ${apiResult.handle}.`);
          handle = apiResult.handle;
          api.setHighPower(handle);
        },

        (apiResult) => {
          log.trace(`High power (continuous conversion) set.`);
          api.setIntervals(handle,null,freq);
        },

        (apiResult) => {
          log.trace(`Report interval has been set.`);
          api.readContinuousTempC(handle);
        },

        (apiResult) => {
          log.debug(`Continuous temperature reading started.`);
        }
      ];

      seq.start(step);
    }