MqttNode.prototype.enableReport = function (oid, iid, rid) { var self = this, trg = this._target(oid, iid, rid), rAttrs = this._getAttrs(oid, iid, rid), okey = mutils.oidKey(oid), rkey, rpid, pmin, pmax, rRpt, dumper, notify; if (!trg.exist) return false; if (trg.type === TTYPE.obj) { rpid = okey; dumper = function (cb) { self._dumpObj(oid, cb); }; notify = { oid: mutils.oidNum(oid), data: null }; } else if (trg.type === TTYPE.inst) { rpid = okey + ':' + iid; dumper = function (cb) { self._dumpObj(oid, iid, cb); }; notify = { oid: mutils.oidNum(oid), iid: iid, data: null }; } else if (trg.type === TTYPE.rsc) { rkey = mutils.ridKey(oid, rid); rpid = okey + ':' + iid + ':' + rkey; dumper = function (cb) { self._readResrc(oid, iid, rid, cb); }; notify = { oid: mutils.oidNum(oid), iid: iid, rid: mutils.ridNum(rid), data: null }; } pmin = rAttrs.pmin * 1000; pmax = rAttrs.pmax * 1000; rAttrs.cancel = false; rAttrs.mute = true; this._reporters[rpid] = { min: null, max: null, poller: null }; rRpt = this._reporters[rpid]; // WE DONT USE POLLER AT THIS MOMENT, BUT KEEP THIS SNIPPET HERE // if (trg.type === TTYPE.rsc) { // rRpt.poller = setInterval(function () { // self._readResrc(oid, iid, rid); // just read it, helper._checkAndReportResrc() will be invoked // }, rAttrs.pintvl || 500); // } rRpt.min = setTimeout(function () { if (pmin === 0) { // if no pmin, just report at pmax triggered rAttrs.mute = false; } else { dumper(function (err, val) { rAttrs.mute = false; notify.data = val; self.pubNotify(notify); }); } }, pmin); rRpt.max = setInterval(function () { rAttrs.mute = true; dumper(function (err, val) { rAttrs.mute = false; notify.data = val; self.pubNotify(notify); }); if (!_.isNil(rRpt.min)) clearTimeout(rRpt.min); rRpt.min = null; rRpt.min = setTimeout(function () { if (pmin === 0) { rAttrs.mute = false; } else { dumper(function (err, val) { rAttrs.mute = false; notify.data = val; self.pubNotify(notify); }); } }, pmin); }, pmax); return true; };
_.forEach(obj, function (inst, iid) { var iidNum = parseInt(iid); iidNum = _.isNaN(iidNum) ? iid : iidNum; objList.push({ oid: mutils.oidNum(oid), iid: iidNum }); });