'use strict';
|
|
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
var util = require('util');
|
// const Device = require('./device');
|
var Device = require('./device');
|
|
var _require = require('./utils'),
|
createDebug = _require.createDebug,
|
signUtil = _require.signUtil;
|
|
var debug = createDebug('gateway');
|
|
var Gateway = function (_Device) {
|
_inherits(Gateway, _Device);
|
|
function Gateway() {
|
var _ref;
|
|
_classCallCheck(this, Gateway);
|
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
args[_key] = arguments[_key];
|
}
|
|
// 调试模式标识
|
var _this = _possibleConstructorReturn(this, (_ref = Gateway.__proto__ || Object.getPrototypeOf(Gateway)).call.apply(_ref, [this].concat(args)));
|
|
debug('debugger mode');
|
return _this;
|
}
|
// 入参,设备三元组组成的数组
|
|
|
_createClass(Gateway, [{
|
key: 'addTopo',
|
value: function addTopo(devices, cb) {
|
var signed = devices.map(function (device) {
|
return signUtil(device);
|
});
|
this._publishAlinkMessage({
|
method: this.model.ADD_TOPO_METHOD,
|
pubTopic: this.model.ADD_TOPO_TOPIC,
|
params: signed
|
}, cb);
|
}
|
}, {
|
key: 'getTopo',
|
value: function getTopo(cb) {
|
this._publishAlinkMessage({
|
method: this.model.GET_TOPO_METHOD,
|
pubTopic: this.model.GET_TOPO_TOPIC,
|
params: {}
|
}, cb);
|
}
|
/*
|
{"id" : "123",
|
"version":"1.0",
|
"params" : [{
|
"deviceName" : "deviceName1234",
|
"productKey" : "1234556554"
|
}],
|
"method":"thing.topo.delete" }
|
*/
|
|
}, {
|
key: 'removeTopo',
|
value: function removeTopo(devices, cb) {
|
this._publishAlinkMessage({
|
method: this.model.DELETE_TOPO_METHOD,
|
pubTopic: this.model.DELETE_TOPO_TOPIC,
|
params: devices
|
}, cb);
|
}
|
}, {
|
key: 'login',
|
value: function login(device, cb) {
|
this._publishAlinkMessage({
|
params: signUtil(device),
|
pubTopic: this.model.LOGIN_TOPIC
|
}, cb);
|
return this._careteSubDevice(device);
|
// const sub = this.careteSubDevice(device);
|
// return sub;
|
}
|
}, {
|
key: 'logout',
|
value: function logout(params, cb) {
|
this._publishAlinkMessage({
|
params: params,
|
pubTopic: this.model.LOGOUT_TOPIC
|
}, cb);
|
}
|
|
/*
|
* 网关动态注册子设备
|
"params": [
|
{
|
"deviceName": "deviceName1234",
|
"productKey": "1234556554"
|
}
|
]
|
*/
|
|
}, {
|
key: 'regiestSubDevice',
|
value: function regiestSubDevice(data, cb) {
|
var params = void 0;
|
if (data instanceof Array) {
|
params = data;
|
} else if (data instanceof Object) {
|
params = [data];
|
}
|
this._publishAlinkMessage({
|
method: this.model.SUBDEVICE_REGISTER_METHOD,
|
params: params,
|
pubTopic: this.model.SUBDEVICE_REGISTER_TOPIC
|
}, cb);
|
}
|
|
// 内部方法,创建一个子设备
|
|
}, {
|
key: '_careteSubDevice',
|
value: function _careteSubDevice(device) {
|
var subDevice = new Device(device);
|
subDevice._type = "subdevice";
|
subDevice._parent = this;
|
//子设备标识
|
subDevice._isSubdevice = true;
|
var subArrayKey = device.productKey + '&' + device.deviceName;
|
// 初始化subdevices数组
|
if (this._subDevices == undefined) {
|
this._subDevices = {};
|
}
|
//保存子设备
|
if (this._getSubDevice(device) == undefined) {
|
this._subDevices.subArrayKey = subDevice;
|
}
|
return subDevice;
|
}
|
|
// 找到子设备
|
|
}, {
|
key: '_getSubDevice',
|
value: function _getSubDevice(device) {
|
var subArrayKey = device.productKey + '&' + device.deviceName;
|
if (this._subDevices == undefined) return;
|
return this._subDevices.subArrayKey;
|
}
|
}]);
|
|
return Gateway;
|
}(Device);
|
|
module.exports = Gateway;
|