ts-onvif
Version:
Client to ONVIF devices
191 lines • 6.74 kB
JavaScript
;
/**
* Display ver10 module
* @author Andrew D.Laptev <a.d.laptev@gmail.com>
* @see https://www.onvif.org/ver10/display.wsdl
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const service_1 = __importDefault(require("./service"));
const toOnvifXMLSchemaObject_1 = require("./utils/toOnvifXMLSchemaObject");
/**
* Display service
*/
class Display extends service_1.default {
constructor(onvif) {
super(onvif, 'display');
}
static paneLayoutToBuild(paneLayout) {
return {
Pane: paneLayout.pane,
Area: {
$: {
bottom: paneLayout.area.bottom,
top: paneLayout.area.top,
right: paneLayout.area.right,
left: paneLayout.area.left,
},
},
};
}
static layoutToBuild(layout) {
const paneLayout = layout.paneLayout ? layout.paneLayout.map((item) => Display.paneLayoutToBuild(item)) : undefined;
return {
...(paneLayout && { PaneLayout: paneLayout.length === 1 ? paneLayout[0] : paneLayout }),
...(layout.extension && { Extension: layout.extension }),
};
}
static audioEncoderConfigurationToBuild(configuration) {
return {
$: { token: configuration.token },
Name: configuration.name,
UseCount: configuration.useCount,
Encoding: configuration.encoding,
Bitrate: configuration.bitrate,
SampleRate: configuration.sampleRate,
Multicast: (0, toOnvifXMLSchemaObject_1.multicastConfiguration)(configuration.multicast),
SessionTimeout: configuration.sessionTimeout,
};
}
static paneConfigurationToBuild(paneConfiguration) {
return {
$: { token: paneConfiguration.token },
...(paneConfiguration.paneName && { PaneName: paneConfiguration.paneName }),
...(paneConfiguration.audioOutputToken && { AudioOutputToken: paneConfiguration.audioOutputToken }),
...(paneConfiguration.audioSourceToken && { AudioSourceToken: paneConfiguration.audioSourceToken }),
...(paneConfiguration.receiverToken && { ReceiverToken: paneConfiguration.receiverToken }),
...(paneConfiguration.audioEncoderConfiguration && {
AudioEncoderConfiguration: Display.audioEncoderConfigurationToBuild(paneConfiguration.audioEncoderConfiguration),
}),
};
}
static paneConfigurationsToBuild(paneConfigurations) {
if (!paneConfigurations?.length) {
return undefined;
}
return paneConfigurations.map((paneConfiguration) => Display.paneConfigurationToBuild(paneConfiguration));
}
/**
* Returns the capabilities of the display service.
*/
async getServiceCapabilities() {
const response = await this.request({
GetServiceCapabilities: {},
});
return response.getServiceCapabilitiesResponse?.capabilities ?? {};
}
/**
* Returns the current layout of a video output.
* @param options
*/
async getLayout({ videoOutput }) {
const response = await this.request({
GetLayout: {
VideoOutput: videoOutput,
},
}, { array: ['paneLayout'] });
return response.getLayoutResponse.layout;
}
/**
* Sets the layout of a video output.
* @param options
*/
async setLayout({ videoOutput, layout }) {
await this.request({
SetLayout: {
VideoOutput: videoOutput,
Layout: Display.layoutToBuild(layout),
},
});
}
/**
* Returns display options for a video output.
* @param options
*/
async getDisplayOptions({ videoOutput }) {
const response = await this.request({
GetDisplayOptions: {
VideoOutput: videoOutput,
},
}, { array: ['paneLayoutOptions', 'area'] });
return response.getDisplayOptionsResponse;
}
/**
* Returns pane configurations for a video output.
* @param options
*/
async getPaneConfigurations({ videoOutput }) {
const response = await this.request({
GetPaneConfigurations: {
VideoOutput: videoOutput,
},
}, { array: ['paneConfiguration'] });
return response.getPaneConfigurationsResponse?.paneConfiguration ?? [];
}
/**
* Returns a pane configuration for a video output.
* @param options
*/
async getPaneConfiguration({ videoOutput, pane }) {
const response = await this.request({
GetPaneConfiguration: {
VideoOutput: videoOutput,
Pane: pane,
},
});
return response.getPaneConfigurationResponse.paneConfiguration;
}
/**
* Sets pane configurations for a video output.
* @param options
*/
async setPaneConfigurations({ videoOutput, paneConfiguration }) {
await this.request({
SetPaneConfigurations: {
VideoOutput: videoOutput,
PaneConfiguration: Display.paneConfigurationsToBuild(paneConfiguration),
},
});
}
/**
* Sets a pane configuration for a video output.
* @param options
*/
async setPaneConfiguration({ videoOutput, paneConfiguration }) {
await this.request({
SetPaneConfiguration: {
VideoOutput: videoOutput,
PaneConfiguration: Display.paneConfigurationToBuild(paneConfiguration),
},
});
}
/**
* Creates a pane configuration on a video output.
* @param options
*/
async createPaneConfiguration({ videoOutput, paneConfiguration }) {
const response = await this.request({
CreatePaneConfiguration: {
VideoOutput: videoOutput,
PaneConfiguration: Display.paneConfigurationToBuild(paneConfiguration),
},
});
return response.createPaneConfigurationResponse.paneToken;
}
/**
* Deletes a pane configuration from a video output.
* @param options
*/
async deletePaneConfiguration({ videoOutput, paneToken }) {
await this.request({
DeletePaneConfiguration: {
VideoOutput: videoOutput,
PaneToken: paneToken,
},
});
}
}
exports.default = Display;
//# sourceMappingURL=display.js.map