@corvina/device-example
Version:
Corvina Device Example base on @corvina/device-client
79 lines • 3.32 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var Sine_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Sine = void 0;
const common_1 = require("@nestjs/common");
const device_client_1 = require("@corvina/device-client");
const swagger_1 = require("@nestjs/swagger");
let Sine = Sine_1 = class Sine {
l = new common_1.Logger(Sine_1.name);
deviceService;
async post(tagName = "Tag", period = 1000, amplitude = 1000, phase = 0) {
const t = Date.now();
const v = amplitude * Math.sin(phase + (Date.now() / period) * 2 * Math.PI);
const dataPoints = new Array();
const dp = {
tagName,
value: v,
timestamp: t,
};
dataPoints.push(dp);
await this.deviceService.post(dataPoints);
return dataPoints;
}
};
__decorate([
(0, common_1.Inject)(),
__metadata("design:type", device_client_1.DeviceService)
], Sine.prototype, "deviceService", void 0);
__decorate([
(0, swagger_1.ApiOperation)({
summary: "Post a new value sampled from a sine wave with the given parameters, using wall clock as time base",
}),
(0, swagger_1.ApiQuery)({
name: "tagName",
description: "device identifier (name) of data source",
schema: { default: "Tag" },
required: false,
}),
(0, swagger_1.ApiQuery)({
name: "period",
description: "period in ms of the sine wave",
required: false,
schema: { default: 1000 },
}),
(0, swagger_1.ApiQuery)({
name: "amplitude",
description: "amplitude of the sine wave",
required: false,
schema: { default: 1000 },
}),
(0, swagger_1.ApiQuery)({ name: "phase", description: "phase of the sine wave", required: false, schema: { default: 0 } }),
(0, common_1.Post)(),
__param(0, (0, common_1.Query)("tagName")),
__param(1, (0, common_1.Query)("period")),
__param(2, (0, common_1.Query)("amplitude")),
__param(3, (0, common_1.Query)("phase")),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object, Object, Object]),
__metadata("design:returntype", Promise)
], Sine.prototype, "post", null);
Sine = Sine_1 = __decorate([
(0, swagger_1.ApiTags)("device"),
(0, common_1.Controller)("/device/sine"),
(0, common_1.Injectable)()
], Sine);
exports.Sine = Sine;
//# sourceMappingURL=sine.controller.js.map