import IPostMessage from '../../IPostMessage'; import { CodesMDC } from './CodesMDC'; import INativeMdcCommands from './INativeMdcCommands'; /** * Type representing the IP address to which MDC commands can be sent. * It can be either 'localhost' or a valid string representing an IP address. */ export type IpAddressType = 'localhost' | string; /** * Response object returned by Tizen Core App. */ export interface IMDCResponse { /** * The type of the response, either 'ACK' for acknowledgment or 'NACK' for negative acknowledgment. */ type: 'ACK' | 'NACK'; /** * The command type that was executed, represented as a number. * Should match the command number in {@link CodesMDC}. */ commandType: number; /** * The result of the command execution, represented as a number. * This value can vary depending on the command executed. */ result: number; } /** * The `sos.native.mdc` API groups together methods for controlling Tizen devices using MDC commands. * * :::warning * This API is currently available on Tizen devices only. * ::: * *
* MDC Management Capabilities * | Capability | Description | * |:------------|:-------------| * | `NATIVE_COMMANDS_MDC` | If device supports performing MDC commands | * * If you want to check if the device supports this capability, use [`sos.management.supports()`](https://developers.signageos.io/sdk/sos_management/#supports). *
*/ export default class Mdc implements INativeMdcCommands { private messagePrefix; private postMessage; static MESSAGE_PREFIX: string; /** @internal */ constructor(messagePrefix: string, postMessage: IPostMessage); /** * The `sendOne()` method sends an MDC command to another Tizen device on the same network or to the localhost. * * @param ipAddress The IP address of the device to send the command to. * @param command The MDC command to send {@link CodesMDC}. * @param data The optional data to send with the command. * @throws {Error} If the `ipAddress` is not a valid string or if the `command` is not a valid number. * @throws {Error} If the `data` is not an array of numbers. * @throws {Error} If any error occurs during the command execution. * @returns {Promise} MDC response object containing the result of the command execution. * @since 6.5.1 * * @example * await sos.native.mdc.sendOne('localhost', CodesMDC.BRIGHTNESS_CONTROL); * await sos.native.mdc.sendOne('192.168.0.10', CodesMDC.VOLUME_CONTROL, [50]); * await sos.native.mdc.sendOne('192.168.0.10', CodesMDC.PICTURE_CONTROL, [0x54, 0x03]); * * // You can also send custom number if we don't have predefined command in our enum * await sos.native.mdc.sendOne('192.168.0.10', 0x01, []); */ sendOne(ipAddress: IpAddressType, command: CodesMDC, data?: number[]): Promise; /** * The `sendOneRaw()` method sends an MDC command to another Tizen device on the same network or to the localhost, * but without explicitly specifying the command. * * @param ipAddress The IP address of the device to send the command to. * @param data The data as array of numbers to send with the command. It can be also empty array. * @throws {Error} If the `ipAddress` is not a valid string or if the `command` is not a valid number. * @throws {Error} If the `data` is not an array of numbers. * @throws {Error} If any error occurs during the command execution. * @returns {Promise} MDC response object containing the result of the command execution. * * @since 6.5.1 * * @example * await sos.native.mdc.sendOneRaw('localhost', [0x1B, 0x00, 0x01, 0x74]); // Promise * * // Example of returned object * { * "type": "ACK", // or NACK * "commandType": 4, * "result": 0, // Value what command returned * } */ sendOneRaw(ipAddress: IpAddressType, data: number[] | []): Promise; private getMessage; private getMessagePrefix; }