* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
* @file
* @kit MechanicKit
*/
import type { Callback } from './@ohos.base';
* Provides capabilities for controlling and interacting with mechanical devices connected to this device.
* The capabilities cover connection management, control, and monitoring.
*
* @namespace mechanicManager
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
declare namespace mechanicManager {
* Subscribes to device attachment state change events.
* @param { 'attachStateChange' } type Event type.
* @param { Callback<AttachStateChangeInfo> } callback Callback used to return the state change.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
*/
function on(type: 'attachStateChange', callback: Callback<AttachStateChangeInfo>): void;
* Subscribes to device attachment state change events.
* @param { Callback<AttachStateChangeInfo> } callback Callback used to return the state change.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 23 static
*/
function onAttachStateChange(callback: Callback<AttachStateChangeInfo>): void;
* Unsubscribes from device attachment state change events.
* @param { 'attachStateChange' } type Event type.
* @param { Callback<AttachStateChangeInfo> } [callback] Callback used to return the state change.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
*/
function off(type: 'attachStateChange', callback?: Callback<AttachStateChangeInfo>): void;
* Unsubscribes from device attachment state change events.
* @param { Callback<AttachStateChangeInfo> } [callback] Callback used to return the state change.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 23 static
*/
function offAttachStateChange(callback?: Callback<AttachStateChangeInfo>): void;
* Obtain the list of connected mechanical devices.
* @returns { MechInfo[] } List of connected mechanical devices.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
function getAttachedMechDevices(): MechInfo[];
* Sets a user operation.
* @permission ohos.permission.CONNECT_MECHANIC_HARDWARE
* @param { Operation } operation Operation type.
* @param { string } mac MAC address.
* @param { string } params Operation parameters.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function setUserOperation(operation: Operation, mac: string, params: string): void;
* Enables or disables camera tracking.
* @param { boolean } isEnabled Whether to enable camera tracking.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
function setCameraTrackingEnabled(isEnabled: boolean): void;
* Checks whether camera tracking is enabled for this mechanical device.
* @returns { boolean } Enabled status. The value true means that camera tracking is enabled, and false means
* the opposite.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
function getCameraTrackingEnabled(): boolean;
* Subscribes to tracking events.
* @param { 'trackingStateChange' } type Event type.
* @param { Callback<TrackingEventInfo> } callback Callback used to return the tracking event information.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
*/
function on(type: 'trackingStateChange', callback: Callback<TrackingEventInfo>): void;
* Subscribes to tracking events.
* @param { Callback<TrackingEventInfo> } callback Callback used to return the tracking event information.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 23 static
*/
function onTrackingStateChange(callback: Callback<TrackingEventInfo>): void;
* Unsubscribes from tracking events.
* @param { 'trackingStateChange' } type Event type.
* @param { Callback<TrackingEventInfo> } [callback] Callback used to return the tracking event information.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
*/
function off(type: 'trackingStateChange', callback?: Callback<TrackingEventInfo>): void;
* Unsubscribes from tracking events.
* @param { Callback<TrackingEventInfo> } [callback] Callback used to return the tracking event information.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @since 23 static
*/
function offTrackingStateChange(callback?: Callback<TrackingEventInfo>): void;
* Sets the camera tracking layout for this mechanical device.
* @param { CameraTrackingLayout } trackingLayout Camera tracking layout.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function setCameraTrackingLayout(trackingLayout: CameraTrackingLayout): void;
* Obtains the camera tracking layout of this mechanical device.
* @returns { CameraTrackingLayout } Camera tracking layout obtained.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
function getCameraTrackingLayout(): CameraTrackingLayout;
* Rotates a mechanical device to the relative angles.
* @param { int } mechId ID of the mechanical device.
* @param { RotationAngles } angles Relative angles.
* @param { int } duration Rotation duration. Unit: millisecond.
* @returns { Promise<Result> } Promise that return the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function rotate(mechId: int, angles: RotationAngles, duration: int): Promise<Result>;
* Rotates a mechanical device to the absolute angles.
* @param { int } mechId ID of the mechanical device.
* @param { EulerAngles } angles Absolute angles.
* @param { int } duration Rotation duration. Unit: millisecond.
* @returns { Promise<Result> } Promise that return the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function rotateToEulerAngles(mechId: int, angles: EulerAngles, duration: int): Promise<Result>;
* Obtains the maximum continuous rotation duration of a mechanical device.
*
* @param { int } mechId ID of the mechanical device.
* @returns { int } Maximum rotation duration. Unit: millisecond.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function getMaxRotationTime(mechId: int): int;
* Obtains the maximum rotation speed of a mechanical device.
*
* @param { int } mechId ID of the mechanical device.
* @returns { RotationSpeed } Maximum speed. Only the absolute value of the speed is returned.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function getMaxRotationSpeed(mechId: int): RotationSpeed;
* Rotates a mechanical device at the specified speed.
* @param { int } mechId ID of the mechanical device.
* @param { RotationSpeed } speed Rotation speed.
* @param { int } duration Rotation duration. Unit: millisecond.
* @returns { Promise<Result> } Promise that return the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function rotateBySpeed(mechId: int, speed: RotationSpeed, duration: int): Promise<Result>;
* Stops a mechanical device from moving.
* @param { int } mechId ID of the mechanical device.
* @returns { Promise<void> } Promise that returns no value.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function stopMoving(mechId: int): Promise<void>;
* Obtains the current angles of a mechanical device.
* @param { int } mechId ID of the mechanical device.
* @returns { EulerAngles } Rotation angles.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function getCurrentAngles(mechId: int): EulerAngles;
* Obtains the maximum rotation angles relative to the reference point for the specified mechanical device.
*
* @param { int } mechId ID of the mechanical device.
* @returns { RotationLimits } Maximum rotation angles.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function getRotationLimits(mechId: int): RotationLimits;
* Obtains the status of the rotation axes.
* @param { int } mechId ID of the mechanical device.
* @returns { RotationAxesStatus } Rotation axis status.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
function getRotationAxesStatus(mechId: int): RotationAxesStatus;
* Register a listener for axis state changes.
* The status of the rotation axis changes dynamically, which needs to be monitored.
*
* @param { 'rotationAxesStatusChange' } type - Event type.
* @param { Callback<RotationAxesStateChangeInfo> } callback - Rotate axis state changes callback.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
*/
function on(type: 'rotationAxesStatusChange', callback: Callback<RotationAxesStateChangeInfo>): void;
* Register a listener for axis state changes.
* The status of the rotation axis changes dynamically, which needs to be monitored.
*
* @param { Callback<RotationAxesStateChangeInfo> } callback - Rotate axis state changes callback.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 23 static
*/
function onRotationAxesStatusChange(callback: Callback<RotationAxesStateChangeInfo>): void;
* Unregister a listener for axis state changes.
*
* @param { 'rotationAxesStatusChange' } type - Event type.
* @param { Callback<RotationAxesStateChangeInfo> } [callback] - Rotate axis state changes callback.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
*/
function off(type: 'rotationAxesStatusChange', callback?: Callback<RotationAxesStateChangeInfo>): void;
* Unregister a listener for axis state changes.
*
* @param { Callback<RotationAxesStateChangeInfo> } [callback] - Rotate axis state changes callback.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 23 static
*/
function offRotationAxesStatusChange(callback?: Callback<RotationAxesStateChangeInfo>): void;
* Searching for a specified target.
*
* @param { TargetInfo } target - Target infomation.
* @param { SearchParams } params - Parameters to use when searching.
* @returns { Promise<SearchResult> } Promise that return the Search result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @throws { BusinessError } 33300004 - Camera not opened.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
function searchTarget(target: TargetInfo, params: SearchParams): Promise<SearchResult>;
* Move a mechanical device with the specified parameters.
*
* @param { int } mechId - ID of the mechanical device.
* <br>The value should be an integer.
* @param { MoveParams } params - Parameters to use when moving.
* @returns { Promise<Result> } Promise that returns the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function move(mechId: int, params: MoveParams): Promise<Result>;
* Move a mechanical device at the specified speed.
*
* @param { int } mechId - ID of the mechanical device.
* <br>The value should be an integer.
* @param { SpeedParams } params - Parameters to use when moving.
* @param { int } duration - Duration of movement, in ms.
* <br>The value should be an integer.
* @returns { Promise<Result> } Promise that returns the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function moveBySpeed(mechId: int, params: SpeedParams, duration: int): Promise<Result>;
* Rotate in place according to the speed.
*
* @param { int } mechId - ID of the mechanical device.
* <br>The value should be an integer.
* @param { double } angleSpeed - angular velocity.
* @param { int } duration - Duration of movement, unit ms.
* <br>The value should be an integer.
* @returns { Promise<Result> } Promise that returns the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function turnBySpeed(mechId: int, angleSpeed: double, duration: int): Promise<Result>;
* Check whether the specific action type is supported.
*
* @param { int } mechId - ID of the mechanical device.
* <br>The value should be an integer.
* @param { ActionType } actionType - Type of action sequence.
* @returns { boolean } Indicates whether the action type is supported.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function isSupportAction(mechId: int, actionType: ActionType): boolean;
* Execute an action sequence.
*
* @param { int } mechId - ID of the mechanical device.
* <br>The value should be an integer.
* @param { ActionType } actionType - Type of action sequence.
* @returns { Promise<Result> } Promise that returns the execution result.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function doAction(mechId: int, actionType: ActionType): Promise<Result>;
* Subscribe to the specified events.
*
* @param { MechEventType[] } events - Events to subscribe to.
* @param { Callback<MechEvent> } callback - Callback of event.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function subscribe(events: MechEventType[], callback: Callback<MechEvent>): void;
* Unsubscribes the specified events.
*
* @param { MechEventType[] } events - Events to be unsubscribed.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @throws { BusinessError } 33300002 - Device not connected.
* @throws { BusinessError } 33300003 - Feature not supported.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
function unSubscribe(events: MechEventType[]): void;
* Checks whether the current device supports embodied control for a specific type of device.
*
* @param { MechDeviceType } [mechDeviceType] - Associated device type.
* <br>Default: If this parameter is not provided, it represents all device types. As long as one or more types
* are supported, the result returned will be supported.
* @returns { boolean } Returns whether embodied control is supported.
* @syscap SystemCapability.Mechanic.Core
* @since 26.0.0 dynamic&static
*/
function isControlSupported(mechDeviceType?: MechDeviceType): boolean;
* Connecting devices based on addresses
*
* @permission ohos.permission.CONNECT_MECHANIC_HARDWARE
* @param { AddressInfo } addrInfo - Address information.
* @param { ConnectParam } params - Connect Parameters.
* @returns { Promise<AttachStateChangeInfo> } Promise used to return the attach state change information.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
function connectDevice(addrInfo: AddressInfo, params: ConnectParam): Promise<AttachStateChangeInfo>;
* Disconnect a device with mechanic id.
*
* @permission ohos.permission.CONNECT_MECHANIC_HARDWARE
* @param { int } mechId - mechanic device id.
* <br>The value should be an integer.
* @returns { Promise<Result> } Promise used to return the execution result.
* @throws { BusinessError } 201 - Permission denied.
* @throws { BusinessError } 202 - Not system application.
* @throws { BusinessError } 33300001 - Service exception.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
function disconnectDevice(mechId: int): Promise<Result>;
* Mechanical device information.
* @typedef MechInfo
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export interface MechInfo {
* ID of the mechanical device.
* @type { int }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
mechId: int;
* Type of the mechanical device.
* @type { MechDeviceType }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
mechDeviceType: MechDeviceType;
* Name of the mechanical device.
* @type { string }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
mechName: string;
}
* The rotion angles, relative to the current position.
* @typedef RotationAngles
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface RotationAngles {
* Yaw angle, ranging from -2*Math.PI to 2*Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
yaw?: double;
* Roll angle, ranging from -2*Math.PI to 2*Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
roll?: double;
* Pitch angle, ranging from -2*Math.PI to 2*Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
pitch?: double;
}
* Absolute euler angles relative to the home position.
*
* @typedef EulerAngles
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface EulerAngles {
* Yaw angle, ranging from -Math.PI to Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
yaw?: double;
* Roll angle, ranging from -Math.PI to Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
roll?: double;
* Pitch angle, ranging from -Math.PI to Math.PI, measured in radians.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
pitch?: double;
}
* Rotational speed. A negative value indicates a clockwise rotation, and a positive value indicates a
* counterclockwise rotation.
* @typedef RotationSpeed
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface RotationSpeed {
* Yaw speed, measured in radians per second.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
yawSpeed?: double;
* Roll speed, measured in radians per second.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
rollSpeed?: double;
* Pitch speed, measured in radians per second.
* @type { ?double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
pitchSpeed?: double;
}
* Rotation angle limits relative to the reference point.
* @typedef RotationLimits
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface RotationLimits {
* Maximum yaw rotation angles in the negative direction, ranging from -2*Math.PI to 0, measured in radians.
* If the value is less than or equal to -2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
negativeYawMax: double;
* Maximum yaw rotation angles in the positive direction, ranging from 0 to 2*Math.PI, measured in radians.
* If the value is greater than or equal to 2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
positiveYawMax: double;
* Maximum roll rotation angles in the negative direction, ranging from -2*Math.PI to 0, measured in radians.
* If the value is less than or equal to -2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
negativeRollMax: double;
* Maximum roll rotation angles in the positive direction, ranging from 0 to 2*Math.PI, measured in radians.
* If the value is greater than or equal to 2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
positiveRollMax: double;
* Maximum pitch rotation angles in the negative direction, ranging from -2*Math.PI to 0, measured in radians.
* If the value is less than or equal to -2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
negativePitchMax: double;
* Maximum pitch rotation angles in the positive direction, ranging from 0 to 2*Math.PI, measured in radians.
* If the value is greater than or equal to 2*Math.PI, there is no restriction.
* @type { double }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
positivePitchMax: double;
}
* Rotation axes status
*
* @typedef RotationAxesStatus
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface RotationAxesStatus {
* Whether the yaw axis is enabled.
* @type { boolean }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
yawEnabled: boolean;
* Whether the roll axis is enabled.
* @type { boolean }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
rollEnabled: boolean;
* Whether the pitch axis is enabled.
* @type { boolean }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
pitchEnabled: boolean;
* Whether the yaw axis is limited.
* @type { ?RotationAxisLimited } RotationAxisLimited
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
yawLimited?: RotationAxisLimited;
* Whether the roll axis is limited.
* @type { ?RotationAxisLimited }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
rollLimited?: RotationAxisLimited;
* Whether the pitch axis is limited.
* @type { ?RotationAxisLimited }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
pitchLimited?: RotationAxisLimited;
}
* Enumerates the rotation axis limit states.
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export enum RotationAxisLimited {
* Not limited.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
NOT_LIMITED = 0,
* Negative limited.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
NEGATIVE_LIMITED = 1,
* Positive limited.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
POSITIVE_LIMITED = 2
}
* Rotation axes state change information.
* @typedef RotationAxesStateChangeInfo
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export interface RotationAxesStateChangeInfo {
* ID of the mechanical device.
* @type { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
mechId: int;
* Rotate axis status.
* @type { RotationAxesStatus }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
status: RotationAxesStatus;
}
* Tracking event callback info.
*
* @typedef TrackingEventInfo
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export interface TrackingEventInfo {
* Tracking event.
* @type { TrackingEvent } Tracking event.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
event: TrackingEvent;
}
* Callback information about the device attachment state change.
* @typedef AttachStateChangeInfo
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export interface AttachStateChangeInfo {
* Device attachment state.
* @type { AttachState }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
state: AttachState;
* Mechanical device information.
* @type { MechInfo }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
mechInfo: MechInfo;
}
* Target information.
*
* @typedef TargetInfo
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
export interface TargetInfo {
* Target type.
* @type { TargetType }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
targetType: TargetType;
}
* Parameters for target searching.
*
* @typedef SearchParams
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
export interface SearchParams {
* Search direction.
* @type { SearchDirection }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
direction: SearchDirection;
}
* Search result.
*
* @typedef SearchResult
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
export interface SearchResult {
* Search result. Returns the number of targets found.0 means not found.
* @type { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
targetCount: int;
}
* Enumerates the user operations.
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export enum Operation {
* Connection operation.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
CONNECT = 0,
* Disconnection operation.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
DISCONNECT = 1
}
* Enumerates the tracking events.
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export enum TrackingEvent {
* Camera tracking enabled by user.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
CAMERA_TRACKING_USER_ENABLED = 0,
* Camera tracking disabled by user.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
CAMERA_TRACKING_USER_DISABLED = 1,
* Camera tracking layout changed. You can call getCameraTrackingLayout to obtain the new layout.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
CAMERA_TRACKING_LAYOUT_CHANGED = 2
}
* Rotation execution results.
*
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
export enum Result {
* Rotation completed.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
COMPLETED = 0,
* Rotation was interrupted.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
INTERRUPTED = 1,
* Device reached limitation.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
LIMITED = 2,
* Rotation time out.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
TIMEOUT = 3,
* Termination caused by an obstacle.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
TERMINATE_OBSTACLE = 4,
* Termination caused by a cliff.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
TERMINATE_CLIFF = 5,
* Rotation failed due to system error.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 20 dynamic
* @since 23 static
*/
SYSTEM_ERROR = 100
}
* Enumerates the mechanical device types.
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export enum MechDeviceType {
* Gimbal device.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
GIMBAL_DEVICE = 0,
* Desktop gimbal device.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
DESKTOP_GIMBAL_DEVICE = 1,
* Wheeled?mounted base device.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
WHEELED_BASE_DEVICE = 2
}
* Device attach states.
*
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export enum AttachState {
* Device attached.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
ATTACHED = 0,
* Device detached.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
DETACHED = 1
}
* Enumerates the camera tracking layouts.
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
export enum CameraTrackingLayout {
* Default layout.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
DEFAULT = 0,
* Left-side layout.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
LEFT = 1,
* Middle layout.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
MIDDLE = 2,
* Right-side layout.
* @syscap SystemCapability.Mechanic.Core
* @since 20 dynamic
* @since 23 static
*/
RIGHT = 3
}
* Target type.
*
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
export enum TargetType {
* human Face type.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
HUMAN_FACE = 0
}
* Search direction.
*
* @enum { int }
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
export enum SearchDirection {
* System Default Direction.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
DEFAULT = 0,
* Leftward direction. Also indicates clockwise direction.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
LEFTWARD = 1,
* Rightward direction. Also indicates the counterclockwise direction.
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 21 dynamic
* @since 23 static
*/
RIGHTWARD = 2
}
* Parameters for moving the target.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export interface MoveParams {
* Moving distance, unit cm.
* The value should be an integer.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
distance: int;
* Turning angle, unit degree.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
angle: double;
* Speed gear.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
speedGear?: SpeedGear;
* Movement mode.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
mode?: MarchingMode;
}
* Speed gear definition.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export enum SpeedGear {
* Low speed definition.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
LOW_SPEED = 0,
* Middle speed definition, default speed.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
MIDDLE_SPEED = 1,
* High speed definition.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HIGH_SPEED = 2
}
* Marching mode definition.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export enum MarchingMode {
* Turn first, then move.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
TURN_THEN_MOVE = 0,
* Move and rotate simultaneously.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
TURNING_MOVING = 1
}
* Parameters for moving or turning at a speed.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export interface SpeedParams {
* Turning or moving speed, unit cm.
* The value should be an integer.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
speed: int;
* Turning angle, unit degree.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
angle: double;
* Movement mode.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
mode?: MarchingMode;
}
* Type of action sequence.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export enum ActionType {
* Landscape-to-Portrait switching.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
LANDSCAPE_PORTRAIT_SWITCH = 0,
* Action of patrol on the ground.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
PATROL_MODE = 1,
* Action of greeting the owner.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
GREET_MODE = 2,
* Action of tilting head up.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_UP = 3,
* Action of tilting head up slightly.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_UP_SLIGHTLY = 4,
* Action of looking straight ahead.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
EYE_LEVEL = 5,
* Action of tilting head down slightly.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_DOWN_SLIGHTLY = 6,
* Action of tilting head down completely.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_DOWN = 7,
* Action of wiggling head.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_WIGGLE = 8,
* Action of nodding.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
NOD = 9,
* Action of shaking head.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HEAD_SHAKE = 10,
* Action of happy.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
HAPPY = 1000,
* Action of angry.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
ANGRY = 1001,
* Action of sad.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
SAD = 1002,
* Action of scared.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
SCARED = 1003,
* Action of dance.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
DANCE = 2000,
* Action of acting cute.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
ACTING_CUTE = 2001,
* Action of celebrate.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
CELEBRATE = 2002,
* Action of wakeup.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
WAKEUP = 2003,
* Action of sleep.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
SLEEP = 2004,
* Action of low power.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
LOW_POWER = 2005,
* Action of thinking.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
THINKING = 2006
}
* Mechanic event definition.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export enum MechEventType {
* Mechanic device attached on base.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
DEVICE_ADSORBED = 0,
* Mechanic device detached from the base.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
DEVICE_UNADSORBED = 1,
* Mechanic device hits a cliff while moving.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
REACH_CLIFF = 2,
* Mechanic device hits an obstacle while moving.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
REACH_OBSTACLE = 3,
* Mechanic device is low on power.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
LOW_POWER = 4
}
* Definition of Mechanic device event.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
export interface MechEvent {
* ID of the mechanical device.
* The value should be an integer.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
mechId: int;
* Event type of this event.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @since 26.0.0 dynamic&static
*/
event: MechEventType;
}
* Mechanic device address type.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
export enum AddressType {
* Mechanic device ble address type.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
BLE_ADDR = 0
}
* Definition of device adress information.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
export interface AddressInfo {
* Address of device.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
address: string;
* Type of address.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
addressType: AddressType;
}
* Definition of connect parameter.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
export interface ConnectParam {
* Name of the mechanical device.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
deviceName?: string;
* Identifer of current device.
* The value should be an integer.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
identifier?: int;
* Data carried during device discovery
* Data must be in the following format:|type|value|type|value|..
* value'len for each specific type is predefined length
* The following table lists the supported types and versions.
* -----------------------------------------------------------------
* type | value | value len |api level
* -----------------------------------------------------------------
* 0x01 | 3-axis gravity sensor value | 3Byte |26.0.0
* -----------------------------------------------------------------
* 0x02 | 1st byte offset of the MAC address | 1Byte |26.0.0
* -----------------------------------------------------------------
* 0x03 | Pairing broadcast | 1Byte |26.0.0
* -----------------------------------------------------------------
* 0x04 | Target device identifer | 4Byte |26.0.0
* -----------------------------------------------------------------.
*
* @syscap SystemCapability.Mechanic.Core
* @systemapi
* @stagemodelonly
* @since 26.0.0 dynamic&static
*/
custdata: string;
}
}
export default mechanicManager;